이번주는 시큐리티에 대해서 배우고, 팀프로젝트를 시작했다.
시큐리티를 기존 개인프로젝트에 적용하긴 했으나, 어떤식으로 작동하는지에 대해서 이해가 부족하고, 시큐리티에서 작동하는 부분에 대해 예외처리를 하지 못했다.
시큐리티에서 예외처리를 하는 방법에 대해서 주말에 공부하기로 했으나, 팀프로젝트 진행에 집중해 하지 못했다.
팀프로젝트 내용은 기존 개인프로젝트 내용에, 시큐리티를 추가하고, 좋아요 기능을 추가하는 것이다.
우리 팀은 기존 코드를 활용하는 대신 아예 코드를 새로 써보기로 했고, 그래서 개인 프로젝트 기존의 구조는 가져갔으나 코드는 새로 쓰게 되었다.
내가 맡은 부분은 예외처리와 좋아요 부분인데, 예외처리는 개인 프로젝트와 조금 다르게 처리하도록 만들어 보았고, 좋아요는 아예 새로 구현해야해서 시행착오를 좀 겪었다.
기존 계획으로는 post와 comment가 좋아요 수를 가지고 있게 하려고 했는데 조금 변경이 되었다.
post와 comment는 각각 @MANYTOONE으로 Like라는 엔티티를 리스트로 가지고 있게 했고, Like엔티티에는 Like를 작동시킨 유저의 정보를 가지고 있게 했다.
이렇게 되면 좋아요 수 = Like에 저장된 유저의 수 이므로
post나 comment를 불러올때 각 post나 comment의 Like리스트의 길이를 읽어 좋아요 갯수로 출력하도록 했다.
그리고 한번 더 작동시키면 취소되게 하라는 조건이 있었는데 특정 post나 comment의 Like 내에 작동시킨 유저의 이름이 존재한다면 그 유저의 정보를 삭제하도록 했다.
앞서 설명했듯이 좋아요 수는 Like에 저장된 유저의 수이고, Like의 길이를 읽어 좋아요 수로 표기하기 때문에 하나의 유저 정보가 삭제되면 출력되는 Like도 하나가 줄어들게 된다.
해결하지 못한 아쉬운점은 아직 팀 프로젝트에 시큐리티를 적용하지 못해 유저정보를 jwt토큰에서 받아오도록 한다는 것이다. 시큐리티를 적용하면 컨트롤러단의 코드를 좀더 깔끔하게 만들수 있을것 같다.
다음주에 프로젝트를 마무리 지어야하는데, 다음주 안에 코드를 좀 더 다듬고, 팀원과 함께 논의하여 시큐리티 예외처리도 적용해봐야 할 것 같다.