인프런 커뮤니티 질문&답변

veris@naver.com님의 프로필 이미지
veris@naver.com

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

제품 등록에 관하여 질문드립니다.

해결된 질문

작성

·

137

0

안녕하십니까,  제품 등록시 관리자만 제품을 등록을 할 수 있게 하려면 유저관련한 로직을 변경해야 하는 것인지 문의 드립니다. 

답변 2

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 ^^ 
 

서버 request handler 부분에 미들웨어를 추가 해주시면 됩니다. 

1. 미들웨어를 생성할게요 

Server/middleware 폴더 있죠 ?

거기다가   admin.js 파일을 생성하세요.

2.그곳에 

let admin = (req,res,next) => {
if(req.user.role === 0 ){
return res.send('관리자만 사용 할수 있는 기능입니다.')
}
next()

}

module.exports = { admin }

이 코드를 추가해주세요.

3. 그리고 

product.js 에서   

const { admin } = require("../middleware/admin");

이렇게 방금 만들 admin 모듈을 가져옵니다.

4. 현재 request hanlder가 이런식으로 되어 있죠 ?  여기에 admin    middleware를 추가해주세요 

router.post("/uploadProduct", auth, (req, res) => {

//save all the data we got from the client into the DB
const product = new Product(req.body)

product.save((err) => {
if (err) return res.status(400).json({ success: false, err })
return res.status(200).json({ success: true })
})

});

그러면

router.post("/uploadProduct", auth, admin, (req, res) => {

이런식으로 되겠죠 ! 

####정리   

현재 User  모델에 보시면 

role: {
type: Number,
default: 0
}, 

이런식으로 유저 role이 0 이 기본으로 되어있는데 

기본을 1 이나 다른걸로 바꿔 주시고 

0을  관리자로 해주세요 ( 아니면  admin.js 에서 관리자 숫자를 바꿔주셔도 됩니다. )

그리고 관리자로 선택해주시고 싶은 사람만  데이터베이스에서  role을 0으로 수동으로 바꿔주시면

그 관리자만     product를 업로드 가능하게 됩니다.

0

자세하게 가르쳐 주셔서 정말 감사합니다. 리덕스가 많이 어려웠는데 강사님 덕분에 조금씩 이해가 되어서 많은 도움이 되었습니다.

veris@naver.com님의 프로필 이미지
veris@naver.com

작성한 질문수

질문하기