TIL 33일차 (20240208)

박세연·2024년 2월 8일

TIL

목록 보기
28/70

오늘 목표는 프로필 조회, 프로필 수정 API 완성!

우선 혼자하던 개인 프로젝트가 아닌 팀 프로젝트여서 여러 이슈들이 있었는데 나는 인섬니아가 아닌 thunder client로 api test하는 곳을 변경하는 것이었다. 인섬니아는 bearer을 일일이 붙여줘야했는데 거기는 저절로 태그해준다고... 좋네...

아무튼 잠깐 적응 좀 하느라 애를 먹었다.

엄청 애를 먹은 것은 내 프로필 조회에 인증 미들웨어를 불러오는 점이었다.

1. req.headers.authorization을 불러오지 못함

console.log(req.headers.authorization)

을 해왔더니 불러오지 못 하는 것...

🍎 해결 방법

이 문제는 thunder client 미숙인 것으로. thunder client에서 Auth -> Bearer Token에 accessToken을 직접 작성했더니 해결되었다.
...이건 스마트한 컴퓨터가 알아서 불러오면 안되는 것인가?

2. prisma.users.findFirst를 못함

🍎 해결 방법

where: {
        id: +token.id,
      }

users 테이블 기준으로 봤어야했는데 내가 맡은 userInfos로 착각하고 user_Id로 찾으니 당연히 없던 것이었다...


오늘자 목표 완료!

프로필 조회 API


authMiddleware에서 res.locals.user을 받아온 다음 userInfos 테이블에서 id가 일치하는 데이터를 찾아 select한다. 이 때 user_Id는 relation되어있는 항목이라 두번 select했다.

프로필 수정 API


authMiddleware에서 user 정보를 가져오고 params에서 수정할 유저의 userId를 가져온다. 이때 입력한 유저 아이디와 로그인한 유저의 아이디가 같은지 비교하고 타인의 프로필 수정을 막는다. 그리고 prisma update를 통해 내용을 수정한다.

비밀번호 변경


비밀번호는 중요한 정보인만큼 validation check에 많이 신경을 썼다.(그래도 튜터님들은 구멍을 잘 찾아내시더라...)
프로필 내용들과 마찬가지로 인증 미들웨어와 유저 정보를 가져오고, 비교한 것뿐만 아니라 트랜잭션을 추가하여 혹시 모를 상황을 대비했다. 그리고 해시함수까지 추가.


오늘 후기
API 작성에 많은 시간이 걸릴 줄 알았는데 생각보다 빠르게 해결했고 문제는 인증 미들웨어였다 ㅋ... 물론 해결하긴 했는데 req.headers.authorization에서 못 받아올 때는 정말... 힘들었다. 다행히 지금은 잘 받아온다. ㅎ

profile
배워나가는 중

0개의 댓글