더북(TheBook)

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);
  }
};

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