본문 바로가기

WebApp/Node.js-다중사용자

Node.js -다중사용자(2)

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-다중사용자' 카테고리의 다른 글