"이상한 사람이 와서 이상한 사진 올리고 갔어요. 빨리 지워주세요"
아직 회원 기능이 있기 전에 그림 그리는 툴과 조회 부분에 대해서 테스트를 진행 중에 조금 부적절한 그림이 게시되어 문제가 되었다. 왜냐하면 이 문제는 얼마든지 발생할 수 있고 실제로 지금 발생했으며 여러사람이 참여한다는 서비스 특성상 아무리 게시글 작성자라고 해도 여러사람이 참여한 게시글을 마음대로 수정/삭제할 수 없도록 막아놨기 때문에 부적절한 게시물의 경우 관리자가 처리할 수 있어야 했다.
신고 기능
사용자들이 게시글에 신고하는 기능을 넣자는 말이 나왔다. 관리자가 항상 모니터링 할 수는 없기 때문에 사용자들의 힘을 빌려서 신고된 게시물을 전체 숨김처리를 하고 나중에 관리자가 확인하여 처리하자는 의견이었다.
그렇다면 어떤식으로 신고를 다룰까? 온라인 게임 처럼 신고 문의를 넣으면 신고하는 유형과 어떤내용으로 신고하는지 쓸 수 있게 해야할까? 아쉽게도 그렇게 해서 DB 테이블에 적용하면 좋겠지만 시간상 여기까지 소화하기에는 해당 기능은 중요 기능들에 비해서 중요도가 떨어졌다. 차선책으로 마치 좋아요 기능과 같이 신고하기를 누르면 신고 카운트가 증가하고 일정 카운트 이상 신고된 게시물을 자동으로 전체 숨김처리를 하게 하는 것을 택했다.
악성 유저
게시물 단위로 신고를 받게 했는데 만일 특정 유저가 악의적인 행동으로 계속해서 부적절한 이미지를 올린다면 어떻게 해야할까? 해당 유저를 차단해야했다. 그러면 DB에서 해당 유저를 삭제하는 것으로 해결 하려 했다. 하지만 문제가 있었다. 그렇게 삭제당한 유저가 다시 회원가입을 진행하여 같은 행동을 반복한다면 막을 수 없는 것이었다. 결국 이를 위해서 DB 회원 테이블에 status 라는 상태값을 지정하게 되었다. 이 항목은 나중에 일반로그인과 소셜로그인을 판가름하는 변수로도 같이 활용할 수 있어서 좋았다. 차단 상태의 상태값을 가진 유저는 더이상 로그인이 불가능하여 로그인이 필요한 서비스를 이용할 수 없게 된다. 그러면 그냥 새 계정을 회원가입 하면 되는것 아닌가? 똑같이 않은가?
그래서 마지막으로 생각된게 계정 인증 이었다.
계정 인증
계정에 유니크한 값을 지정해 놔서 회원가입 시에 한명의 사용자가 하나의 계정만 생성할 수 있게 말이다.
비용이 들지 않고 적용하기 쉬운 e-mail 인증 방식을 생각해봤다. 하지만 이는 접근성에서 불리할 것이라는 멘토님의 의견을 반영하여 폐기 되었다. 분명 회원가입 하려고 mail 페이지까지 가서 코드 복사해오고 하는 과정이 귀찮아서 회원가입 단계에서 놓칠 사용자가 있을 것이라 판단했다. 그래서 적용한게 휴대폰 인증이었다. 이메일과 비슷하지만 적어도 항상 휴대하고 다니기에 이메일 보다 사용자가 느끼기에 귀찮은 감은 비교적 낮을 것이며 휴대폰 인증 이외에 다른 인증 방식은 생각이 나지 않았다. 주민번호 인증이 있긴한데 그건 지금 수준의 서비스에서 감당하기엔 고려야해할 것들이 한두가지가 아니었기에 생각을 버렸다.
관리자 페이지
백엔드 팀에 jsp를 다룰 줄 아시는 분께서 관리자 페이지를 맡아서 해오셨다. 프론트와의 협업 과정에서 동작과정을 조금이라도 이해하시고자 솔선해서 맡아해오셨다.
원래 기능이었던 많은 신고가 접수되어 숨김처리된 게시글을 삭제/복구 시키는 기능과 유저 상태값의 변화를 통한 회원관리 이외에도 서비스 전반적인 데이터를 수치화하여 볼 수 있다.
관리자 페이지의 경우에는 백엔드 서버의 특정 url로 접속해야 하며 이곳도 토큰 로그인 방식으로 인증을 거쳐야 한다.
신고게시물의 경우 이렇게 따로 관리자만 볼 수 있게 표현된다. 이곳에서 삭제할 것인지 다시 복귀시킬건지 관리자가 결정한다.
계정이 잠기게 되면 로그인 수준에서 막혀버린다.