7.1 Edit User Password
- Profile의 모습을 보기 좋게 바꿨다.
- Profile에 edit profile과 change password 버튼이 있다. 이 버튼들은 나 말고는 다른 사람이 보면 안된다. 이전 강의에서 userController에서 getMe를 추가 했었다. 추가한 이유는 url에서 db에 저장되어 있는 아이디가 보이는게 싫다고 해서 바꿨는데, 내 나람의 해석은 다른 사용자가 악의적으로 이용할 수 있을 거라는 생각에서 보이면 안되는 것 같다고 한 것 같다. Profile를 누르고 userDetail에 들어오는 과정에서 getMe에는 login 하고 들어왔을 때 passport를 사용해서 req에 user가 추가되어 있는 상태다. 이 req.user에 있는 id, name, email, avatarUrl 등이 들어 있다. 처음에 들어가게 profile로 화면을 이동하면 id가 서로 일치해서 버튼들이 보인다. url로 들어올 경우에 다른 아이디로 들어가게 되면 버튼이 보이지 않는다. 이 방법은 익혀야 겠다. 왜 그런지 계속 고민 했었는데 역시 코드를 보면서 고민을 해봐야 왜 이런 로직이 필요한지 알게 된다.
이젠 다른 사람의 profile로 들어가면 다른 사람의 id를 비교해서 맞는지 아닌지 확인하고 버튼이 보이고, 안보이고를 어떻게 처리할지 궁금하다.
- passport로 로그인 하면 req에 user가 생기니 여러모로 편리한거 같다. passport가 내부적으로 어떻게 동작하는지 아직 잘 모르지만, 결과는 요청에 user가 담겨져 있다는 것이다. 아닌가 원래 req에 user가 있는 것인가? passport를 구현한다.
- multer를 사용하면서 꼭 필요한 것이 무엇인지 알았다. "file" 타입의 input에서 꼭 name을 적어줘야 한다. 오늘 name을 안 적어놓고 계속 파일을 보냈는데 req에 있는 file이 undefined였다. 코드를 계속 쳐다봐도 이상한 곳이 없었다. 다시 찬찬히 보니 input 태그의 name을 속성을 주지 않아서 계속 undefined가 났던 거다. name 속성을 주고 나니 제대로 파일 경로가 찍혔다. multer은 file type의 input 태그를 찾을 때 name으로 찾는거 같다. multer를 사용할 때 file 경로를 어디로 할 지 설정한다. 그리고 나서 설정한 것을 가지고, name을 입력하는 변수를 하나 만든다.