schema-role.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const Schema = require('mongoose').Schema;
  2. let grantSchema = new Schema({
  3. resource: { type: String, require: true, desc: '资源' },
  4. action: { type: String, enum: ['create', 'read', 'update', 'delete'], require: true, desc: '操作' },
  5. possession: { type: String, enum: ['own', 'any'], required: true, desc: '所属' },
  6. attributes: { type: String, required: 'true', default: '*', desc: '字段' },
  7. })
  8. let roleSchema = new Schema({
  9. name: { type: String, required: true, desc: '角色名称', searchable: true, },
  10. user: { type: Schema.Types.ObjectId, ref: 'User', desc: '创建者', },
  11. permissions: { type: [String], required: true, default: [], desc: '权限', listing: false, },
  12. time: { type: Date, default: Date.now, desc: '创建时间', },
  13. grants: { type: [grantSchema], default: [], desc: '授权', }
  14. }, {
  15. toObject: {
  16. transform: roleTransform,
  17. },
  18. toJSON: {
  19. transform: roleTransform,
  20. }
  21. });
  22. function roleTransform(doc, ret) {
  23. /*
  24. if (doc.grants) {
  25. doc.grants = doc.grants || [];
  26. ret.grants = doc.grants.map(g => auth.base.translate(g));
  27. ret.grants = ret.grants.sort((a, b) => {
  28. if (a < b) return 1;
  29. if (a > b) return -1;
  30. return 0;
  31. })
  32. }
  33. */
  34. }
  35. module.exports = roleSchema;