미들웨어 이름과 코드를 수정한 뒤 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(); };