나는이처럼 보이는 교실 모델이 "사용자가 권한이 없습니다"반환 : 당신이 볼 수 있듯이익스프레스 다른 사용자의 개체를 수정할 때
/**
* 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와 같은 다른 참가자가 다른 필드를 업데이트 할 수 있습니다.
도움 주셔서 감사합니다.