1.접근제어 글쓰기
(1) - db.js에서 topic[]를 추가하고
(2) - topic.js의 글쓰기와 관련있는 '/process_create' 라우터에서 /create 에서 받은 글제목과 내용을 포스트정보로
받아와서 db.get()으로 db.json에 정보를 넣는다
(*이때 추가적으로 글쓰기정보에 대한 고유id값을 shortid로 넣어주고 추가로 user정보와 연동을 시키기 위해
request.user.id(로그인 되었을시에만 로그인유저 정보가 request.user에 들어가 있음) 도 함께 넣어준다)

(3) - (2) 에 의해서 /topic/page/${title} 즉 예를 들어 글제목을 Text로 작성해서 제출했다고 하면
/topic/page/Text 로 넘어오게 된다
(4) - 관련된 라우터인 /Page/:pageId/ 에서 (2) 로 인해 db.json에 저장된 글제목과 글내용에 대한 topic 데이터를
가져온다
(5) - 글 내용 말미에 By 로그인유저의 닉네임 을 추가하기 위해
request.user.disPlayName으로 로그인유저의 닉네임을 가져온다


*) By 저자 가져오기 수정
위처럼 구현하면 모든페이지가 현재 로그인되어있는 유저의 닉네임으로 보여진다
따라서 글을 생성할때 즉 /create 페이지에서 현재 로그인 되어 있는 유저의 닉네임을 db데이터에 저장하고
/page/:pageID 에서 db데이터에 저장된 닉네임을 불러오는 것으로 구현한다

2.글목록 db.json으로 불러오기
(1) - main.js의 글목록을 가져오는 코드를 기존의 fileread에서 db.get('topics').value(); 로 변경하여
db.json파일의 topics배열을 가져오도록 하고

(2)배열을 인자로 받는 template.List를 받은 데이터에 맞게 수정

3.글 수정하기 및 본인이 쓴글만 수정이 가능하도록 하기
(1) - '/update/:pageId'에서 db.get으로 request.params.pageId 즉 URL의 마지막 부분인 글제목 이름이 포함된
db데이터를 가져오고
(2) - 만약 가져온 그 db데이터의 user_id 값과 현재 접속되어 있는 유저 request.user.id가 다르다면
플래시메세지를 주면서 홈으로 팅겨버리고
(3) - 유저가 맞다면 가져온 db데이터의 id값과 user_id값 그리고 변경한 글제목과 변경한 글내용을 post정보로
/update_create로 보낸다

(4) - '/update_create' 에서 받아온 post 정보를
db.get().find({}).assign({}).write() 를 이용하여 기존 데이터와 교체작업을 하고
교테된 데이터의 title페이지로 리다이렉트한다

4.글 삭제하기 및 본인이 쓴글만 삭제 가능하도록 하기
(1) - delete는 post 방식으로 처리하기때문에 post방식으로 보내는 코드를 먼저 살펴보고
hidden타입으로 현재 topic의 user_id 값과 id값을 post정보로 보낸후
(2) - '/process_delete'에서 그 정보를 받아 받은 user_id값과 현재 로그인되어있는 유저의 id값이 다르면
홈으로 튕기도록하고
(3) - db.get().remove({}).write() 를 이용하여 해당 id값을 가진topic을 삭제하도록 한다.

'WebApp > Node.js-다중사용자' 카테고리의 다른 글
Node.js -다중사용자(3) - bcrypt (0) | 2020.11.10 |
---|---|
Node.js -다중사용자(1) (0) | 2020.10.16 |