UNPKG

sails-base

Version:

sails1.0+扩展基础包,包含用户体系权限校验及model的attr,action的inputs入参提示语自定义功能

43 lines (32 loc) 1.16 kB
/** * @Filename is-model-owner.js * @Description 资源归属校验策略 * @author kenchar (kenchar.lv@gmail.com) * @date 2019/07/25 */ module.exports = async function (req, res, proceed) { if(!req.session || !req.session.authenticated || !_.has(req.session,'passport')){ return res.forbidden(new SessionError()); } let modelId = req.param('id'); let modelName; if(_.has(req.options,'action')) modelName = req.options.action.split('/')[0]; else modelName = req.options.model || req.options.controller; if (!modelName || _.isEmpty(modelId)) return res.forbidden(new NullError()); let passport = req.session.passport; let userId = _.has(passport.user,'id') ? passport.user.id : passport.user; let model = req.model; if (!model || !_.isEqual(model.id, modelId)) { model = await sails.models[modelName].findOne(modelId); } if (model) { req.model = model; let ownerId = _.has(model.createdBy, 'id') ? model.createdBy.id : model.createdBy; if (_.isEqual(ownerId, userId)) return proceed(); return res.forbidden(new PermissionError()); } return res.forbidden(new NullError()); };