Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/#95 회원가입, ID/PW 찾기 API 연결 #110

Merged
merged 7 commits into from
Aug 23, 2024
77 changes: 76 additions & 1 deletion FITple-Frontend/data/LoginApi.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ export const login = async (loginId, loginPw) => {
headers: {
"Content-Type": "application/json",
},
// 추가
credentials: "include",
body: JSON.stringify({ user_id: loginId, password: loginPw }),
});
Expand All @@ -18,3 +17,79 @@ export const login = async (loginId, loginPw) => {
throw new Error("네트워크 오류가 발생했습니다. 잠시 후 다시 시도해주세요.");
}
};


export const findId = async (name, email) => {
try {
const response = await fetch(`${localhost}/FITple/auth/find-id`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
credentials: "include",
body: JSON.stringify({ nickname: name, email: email }),
});

if (!response.ok) {
throw new Error('ID 찾기 요청 실패');
}

const data = await response.json();
console.log('받아온 데이터');
console.log(data.result);
return data.result; // { email, name, user_id } 형태로 반환
} catch (error) {
console.error("ID 찾기 요청 중 오류가 발생했습니다.", error);
throw new Error("네트워크 오류가 발생했습니다. 잠시 후 다시 시도해주세요.");
}
};

export const requestNewPasswordKey = async (user_id, nickname, email) => {
try {
const response = await fetch(`${localhost}/FITple/auth/reset-password`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
credentials: "include",
body: JSON.stringify({ user_id, nickname, email }),
});

const data = await response.json();
if (!response.ok) {
throw new Error(data.message || "비밀번호 재설정 요청 실패");
}

console.log('받아온 데이터');
console.log(data.result);
return data;
} catch (error) {
console.error("비밀번호 재설정 요청 중 오류가 발생했습니다.", error);
throw new Error("네트워크 오류가 발생했습니다. 잠시 후 다시 시도해주세요.");
}
};

export const resetPassword = async (newPassword) => {
console.log('새로운 비밀번호 전송!');
console.log(newPassword);
try {
const response = await fetch(`${localhost}/FITple/auth/reset-password`, {
method: "PATCH",
headers: {
"Content-Type": "application/json",
},
credentials: "include",
body: JSON.stringify({ newPassword }),
});

const data = await response.json();
if (!response.ok) {
throw new Error(data.message || "비밀번호 변경 실패");
}

return data;
} catch (error) {
console.error("비밀번호 변경 요청 중 오류가 발생했습니다.", error);
throw new Error("네트워크 오류가 발생했습니다. 잠시 후 다시 시도해주세요.");
}
};
63 changes: 29 additions & 34 deletions FITple-Frontend/data/MyPageApi.jsx
Original file line number Diff line number Diff line change
@@ -1,56 +1,24 @@
const API_BASE_URL = 'http://localhost:3000';

// 임시 토큰 발급 함수
const fetchToken = async () => {
try {
const response = await fetch(`${API_BASE_URL}/temp-token`, {
method: 'POST', // POST 요청
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
// 필요한 경우 바디 데이터를 추가
}),
});

if (!response.ok) {
throw new Error('Failed to fetch token');
}

const data = await response.json();
return data.token; // 가져온 토큰을 반환
} catch (error) {
console.error('Error fetching token:', error);
throw error;
}
};

export const submitUserInfo = async (data, imageFile) => {
const formData = new FormData();

// JSON 데이터를 문자열로 변환해서 추가
formData.append('data', JSON.stringify(data));

// 이미지 파일 추가
if (imageFile) {
formData.append('image', imageFile);
}

try {
// 임시 토큰 발급
const token = await fetchToken();

// 사용자 정보 제출
const response = await fetch(`${API_BASE_URL}/FITple/myprofile`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
"Content-Type": "multipart/form-data",
},
body: formData,
credentials: 'include',
});

if (!response.ok) {
if (!response.status === 200) {
if (response.status === 407) {
console.error('이미 존재하는 닉네임입니다.');
}
Expand All @@ -67,3 +35,30 @@ export const submitUserInfo = async (data, imageFile) => {
throw error;
}
};


// // 임시 토큰 발급 함수
// const fetchToken = async () => {
// try {
// const response = await fetch(`${API_BASE_URL}/temp-token`, {
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json',
// },
// credentials: "include",
// body: JSON.stringify({
// // 필요한 경우 바디 데이터를 추가
// }),
// });

// if (!response.ok) {
// throw new Error('Failed to fetch token');
// }

// const data = await response.json();
// return data.token;
// } catch (error) {
// console.error('Error fetching token:', error);
// throw error;
// }
// };
1 change: 1 addition & 0 deletions FITple-Frontend/data/SignupApi.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export const signup = async (userData) => {
headers: {
'Content-Type': 'application/json',
},
credentials: "include",
body: JSON.stringify(userData),
});

Expand Down
12 changes: 12 additions & 0 deletions FITple-Frontend/data/store/userStore.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { create } from 'zustand';

const userStore = create((set) => ({
userInfo: {
nickname: '',
email: '',
user_id: ''
},
setUserInfo: (userInfo) => set({ userInfo }),
}));

export default userStore;
Loading