23.5.5 포스트 수정 및 삭제 시 권한 확인하기
마지막으로 작성자만 포스트를 수정하거나 삭제할 수 있도록 구현해 보겠습니다. 이 작업을 미들웨어에서 처리하고 싶다면 id로 포스트를 조회하는 작업도 미들웨어로 해 주어야 합니다. 따라서 기존에 만들었던 checkObjectId를 getPostById로 바꾸고, 해당 미들웨어에서 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); } };