미들웨어 이름과 코드를 수정한 뒤 posts 라우터에도 반영해 주세요.

    src/api/posts/index.js

    (...)
    posts.use('/:id', postsCtrl.getPostById, post.routes());
    
    export default posts;

     

    그다음에는 read 함수 내부에서 id로 포스트를 찾는 코드를 간소화해 줍니다.

    src/api/posts/posts.ctrl.js - read

    export const read = ctx => {
      ctx.body = ctx.state.post;
    };

     

    코드가 정말 짧아졌지요?

    getPostById를 구현하고 적용했다면 이번에는 checkOwnPost라는 미들웨어를 만듭니다. 이 미들웨어는 id로 찾은 포스트가 로그인 중인 사용자가 작성한 포스트인지 확인해 줍니다. 만약 사용자의 포스트가 아니라면 403 에러를 발생시킵니다.

    src/api/posts/posts.ctrl.js - checkOwnPost

    export const checkOwnPost = (ctx, next) => {
      const { user, post } = ctx.state;
      if (post.user._id.toString() != = user._id) {
        ctx.status = 403;
        return;
      }
      return next();
    };

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.