diff --git a/src/models/User.js b/src/models/User.js index 59a8de7..4e7349c 100644 --- a/src/models/User.js +++ b/src/models/User.js @@ -1,6 +1,5 @@ const mongoose = require("mongoose"); const { isEmail } = require("validator"); -const { UserActions, WarehouseScopes } = require("./../config/constants"); const bcrypt = require("bcrypt"); const schema = new mongoose.Schema( @@ -37,28 +36,16 @@ const schema = new mongoose.Schema( passwordResetToken: { type: String, }, - authPolicies: [ + roles: [ { - inventory: { - type: mongoose.Schema.Types.ObjectId, - ref: "Inventory", - }, - warehouseScope: { - on: { - type: mongoose.Schema.Types.ObjectId, - refPath: "onModel", - }, - onModel: { - type: String, - required: true, - enum: WarehouseScopes, - }, - }, - actions: { - type: String, - required: true, - enum: UserActions, - }, + type: mongoose.Schema.Types.ObjectId, + ref: "UserRole", + }, + ], + permissions: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "UserPermission", }, ], }, diff --git a/src/models/UserPermission.js b/src/models/UserPermission.js new file mode 100644 index 0000000..30f5fb0 --- /dev/null +++ b/src/models/UserPermission.js @@ -0,0 +1,39 @@ +const mongoose = require("mongoose"); +const { UserActions, WarehouseScopes } = require("./../config/constants"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + inventory: { + type: mongoose.Schema.Types.ObjectId, + ref: "Inventory", + }, + warehouseScope: { + on: { + type: mongoose.Schema.Types.ObjectId, + refPath: "onModel", + }, + onModel: { + type: String, + required: true, + enum: WarehouseScopes, + }, + }, + actions: { + type: String, + required: true, + enum: UserActions, + }, + }, + { + timestamps: true, + } +); + +const UserPermission = mongoose.model("UserPermission", schema); + +module.exports = UserPermission; diff --git a/src/models/UserRole.js b/src/models/UserRole.js new file mode 100644 index 0000000..42f528f --- /dev/null +++ b/src/models/UserRole.js @@ -0,0 +1,24 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + permissions: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "UserPermission", + }, + ], + }, + { + timestamps: true, + } +); + +const UserRole = mongoose.model("UserRole", schema); + +module.exports = UserRole;