23.5.5 포스트 수정 및 삭제 시 권한 확인하기

    마지막으로 작성자만 포스트를 수정하거나 삭제할 수 있도록 구현해 보겠습니다. 이 작업을 미들웨어에서 처리하고 싶다면 id로 포스트를 조회하는 작업도 미들웨어로 해 주어야 합니다. 따라서 기존에 만들었던 checkObjectIdgetPostById로 바꾸고, 해당 미들웨어에서 id로 포스트를 찾은 후 ctx.state에 담아 주겠습니다.

    src/api/posts/posts.ctrl.js - getPostById (기존 checkObjectId)

    export const getPostById = async (ctx, next) => {
      const { id } = ctx.params;
      if (!ObjectId.isValid(id)) {
        ctx.status = 400; // Bad Request
        return;
      }
      try {
        const post = await Post.findById(id);
        // 포스트가 존재하지 않을 
        if (!post) {
          ctx.status = 404; // Not Found
          return;
        }
        ctx.state.post = post;
        return next();
      } catch (e) {
        ctx.throw(500, e);
      }
    };

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