Skip to content

Commit

Permalink
Merge pull request #110 from UMC-FITple/feat/#95
Browse files Browse the repository at this point in the history
Feat/#95 회원가입, ID/PW 찾기 API 연결
  • Loading branch information
SeyeonJang authored Aug 23, 2024
2 parents 3fbb006 + ec6e67c commit bf9b89c
Show file tree
Hide file tree
Showing 13 changed files with 588 additions and 325 deletions.
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

0 comments on commit bf9b89c

Please sign in to comment.