2014-10-07 2 views
0

나는이처럼 보이는 교실 모델이 "사용자가 권한이 없습니다"반환 : 당신이 볼 수 있듯이익스프레스 다른 사용자의 개체를 수정할 때

/** 
* Classroom Schema 
*/ 
var ClassroomSchema = new Schema({ 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    participants: [{ 
     type: Schema.ObjectId, 
     ref: 'User' 
    }], 
    lesson: { 
     type: Schema.ObjectId, 
     ref: 'Lesson', 
     required: 'Define a lesson for this classroom', 
    }, 
    user: { 
     type: Schema.ObjectId, 
     ref: 'User' 
    }, 
    currentTaskIndex: { 
     type: Number, 
     default: 0 
    }, 
}); 

이 모델이 생성 한 사용자에 대한 참조를 유지를 클래스 룸 (사용자) 및 많은 참가자 (더 많은 사용자)도 있습니다.

다른 사용자 (클래스 룸 작성자 아님)가 클래스 룸에 참여하려면 참가자 필드에 새 사용자가 포함 된 클래스 룸 API에 PUT 요청을 보냄으로써 기능을 추가하려고합니다. 요청을 보내는 사용자가 개체를 만든 것이 아니다 때문에, Express는 403을 반환 (금지) :

exports.hasAuthorization = function(req, res, next) { 
    if (req.classroom.user.id !== req.user.id) { 
     return res.status(403).send('User is not authorized'); 
    } 
    next(); 
}; 

다른 만든 교실에 가입이 허용하는 사용자를 해결하는 가장 좋은 방법/패턴을 무엇 사용자는 삭제하지만 객체 삭제와 같은 다른 작업은 수행하지 않습니다. currentTaskIndex와 같은 다른 참가자가 다른 필드를 업데이트 할 수 있습니다.

도움 주셔서 감사합니다.

답변

0

교실에 '마스터'또는 '관리인'입력란을 추가하고 작성자의 userId를 저장할 수 있습니다.

그런 다음 모든 사용자에게 허용하면서이 특정 교실의 마스터 인 사용자에 대해서만 삭제/수정 등의 작업을 허용 할 수 있습니다.

관련 문제