티스토리 뷰
TODO : 에러코드 통일화, 상황에 알맞는 에러코드 사용하기,
심화: 백엔드에서 들어오는 에러 메시지를 바로 팝업창에 보여줘서 굳이 프론트에서 코드에따라서 처리하지않아도 좋을것같다.
1. /api/v1/user/self2 -
getUserInfo: () => {
return get(GATEWAY_URLS.SELF, "");
},
TMS 사용하는곳
세션확인을위해 router에서 접근할때마다 확인하는 용도
-TEST1: 로그인 안되어있어서 로그인페이지로 가야하는 상황(로그인 상태확인)
에러코드: 27001 - user 아이디를 가져올수없음, 세션이 아이디x 세션 만료 혹은 확인할 수 없음.
수정사항(메시지) : 사용자 ID를 가져오는 데 실패했습니다. /혹은/ 접근권한이 없습니다 (27001 코드 여기서만 사용하는방향으로)
2. /api/v1/user/self2/auth
requestLogin: ({ ID, Password }) => {
return post(GATEWAY_URLS.SELF, "/auth", { ID, Password });
},
* 유의사항: ID나, PASSWORD가 빈값일때는 프론트 내부에서 서버에 전송이안되도록 에러처리를 해놓음.
- TAS도 내부에서 처리로직 있는지 확인
사용하는곳
로그인 페이지
-TEST1: 프론트에서 서버에 PARAM을 보낼때, ID나 PASSWORD를 아예 빼먹을때(개발자 코드 문제)
에러코드: 27011 - id or password is empty
수정사항(에러코드): 8000으로 수정.
수정사항(에러메시지): 27011 - 입력값이 없습니다. (현재 빈값)
-TEST2: Password에 SHA256을 넣지않고 Password: 1234 로 보냈을때
에러코드: 8000 - failed to bind json , json: cannot unmarshal number into Go struct field RequestUserLogin.Password of type string
** 8000일때는 메시지를 띄우면 x 내부에러. 2000번때일때만 error code를 띄우게 변경하기
문제없음
-TEST3: LAON2023 과, 비밀번호 제대로 쳤지만, LAON2023은 없는 아이디이고, 사용자가 비밀번호를 제대로쳤지만 PARAM이 안들어간경우(개발자문제 혹은 내부)
에러코드: 27011 - id or password is empty
Test1수정하면 자동 수정 8000으로 변경될것같음. (에러코드는 유지하지만, test1같은 경우를 8000으로 돌릴경우 27011코드는 나올일이 거의없을것같습니다)
-TEST4: LAON2023 과 비밀번호 제대로 쳤지만, LAON2023은 없는 아이디이고, 사용자가 비밀번호를 제대로쳤지만 SHA256문제가 생기도록 1234로 넣어봤을때(개발자 문제 혹은 내부문제)
에러코드: 8000 - failed to bind json , json: cannot unmarshal number into Go struct field RequestUserLogin.Password of type string" 입력값이 잘못되었습니다
-> 백엔드 수선코드가 아이디확인 이전에 SHA256부터 감지하는것같음. DB를 찾기전에 RETURN?
-TEST5: LAON2023(없는 아이디) 과 비밀번호 제대로 친경우
에러코드: 27006 - "does not exist user id"
수정사항(에러메시지): 에러메시지 추가 27006 - 존재하지 않는 사용자.
-TEST6: laon(알맞은 사용자), laon2021!(사용자가 틀린비밀번호, SHA256은 재대로)
에러코드: 27001 - ErrorDetail: {FailCount: 3, FailTime: 0}} 아이디 또는 비밀번호를 잘못 입력하셨습니다.
수정사항(에러메시지): 27001 코드를 쓰지않고, 27000 을 쓰는게 맞아보인다. -> TEST1에서 27001을 사용하고, 여기서는 비밀번호가 틀렸을때 에러코드에 초점을 맞추는게 좋지않을까? -> 아니면 TEST1부분을 수정하던가. 둘중하나 수정필요.
이유 : 아이디는 잘못 입력했을때, 존재하지않는 사용자라고 나오며, 빈값으로는 아예 보낼수가없기에 비번틀렸던거로 MESSAGE나 코드를 디테일하게 에러디테일 또한 failcount, failtime 비밀번호에 중점을 둔 사례
-TEST7: laon3(알맞은 사용자 but 승인안해줌), laon2021!(사용자가 틀린비밀번호, SHA256은 재대로)
에러코드: 27007 - "permission denined, permission = none"
수정사항(에러코드): 27007 -> 8000으로 수정.
수정사항(메시지) : 27007 에러메시지, (스웨거: 권한 에러 )-> 회원가입 승인 요청이 대기 중입니다. 에러코드 변경하거나 권한쪽을 하나 더 파던가해야할듯싶습니다
권한에러 에대한 코드 확인 하기
-TEST8(성공사례) - {StatusCode: 0, Message: "성공", Data: {IsLogin: true, ID: "laon", Permission: 3}}
***이외: 90일 초과는 확인 불가. 로그인중이 아닙니다.? 나오는 상황
3. /api/v1/user/self2/password
changePassword: ({ ID, BeforePassword, AfterPassword }) => {
return put(GATEWAY_URLS.SELF, "/password", {
ID,
BeforePassword,
AfterPassword,
});
},
-TEST1: 없는 아이디, 위아래 똑같은 password - 프론트에서 막을예정
에러코드: 27010 - 현재비밀번호와 변경비밀번호가 동일
-TEST2: 있는 아이디, 현재 비밀번호 틀렸을경우
에러코드: 27001
수정사항(메시지) : 27000 수정 부탁합니다!
-TEST2: 없는 아이디, 현재 비밀번호 틀렸을경우
에러코드: 27006
creatUserData: ({ ID, Password, Permission }) => {
return post(GATEWAY_URLS.SELF, "", { ID, Password, Permission });
},
addPageNavigationHistory: ({ URL }) => {
return post(GATEWAY_URLS.SELF, "/page", { URL });
},
changePassword: ({ ID, BeforePassword, AfterPassword }) => {
return put(GATEWAY_URLS.SELF, "/password", {
ID,
BeforePassword,
AfterPassword,
});
},
extendPasswordExpiration: ({ ID, BeforePassword, AfterPassword }) => {
return put(GATEWAY_URLS.SELF, "/password/extension", {
ID,
BeforePassword,
AfterPassword,
});
},
deleteUserData: ({ ID }) => {
return del(GATEWAY_URLS.SELF, "", { ID });
},
requestLogout: () => {
return del(GATEWAY_URLS.SELF, "/auth");
},
};