mongoDB - Modelado de roles usuarios y permisos

 
Vista:

Modelado de roles usuarios y permisos

Publicado por Oscar (1 intervención) el 09/09/2017 00:39:48
Hola a todos!
Estoy desarrollando una API en nodejs y tengo una duda sobre el modelo de las entidades en mongodb, quisiera saber si alguno me puede dar una mano y orientarme.

La API será utilizada por múltiples negocios/empresas. de cada negocio/empresa se deben guardar sus datos basicos (nombre, direccion, etc) y cada empresa puede registrar a sus empleados y cada empleado puede desempeñar un rol (para poder hacer ciertas acciones dentro de la api).

Tengo muchas preguntas sobre cómo gestionar la relación entre Empresa - usuario - rol. porque los usuarios serán específicos de la empresa y los roles también lo serán.

Por ejemplo, yo construí un prototipo de esquema en mongoose y sería algo así, ¿esta mal plantearlo asi? ¿podría ser mejor si todo está en el esquema de la compañía?

Los permisos son fijos, es decir, cada empresa será capaz de crear los roles que desee e indicará qué permisos tendrán cada rol, esos permisos serán preestablecidos, no podrán crear sus propios permisos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var businessesSchema = new Schema({
    _id: ObjectId
    name: { type: String, required: true },
    address: { type: String, required: true },
    location: { type: String, required: true },
    employees: [{
        name: { type: String, required: true },
        email: { type: String, required: true },
        role: { type: Schema.ObjectId, ref: "Roles" },
    }],
});
 
var rolesSchema = new Schema({
    _id: ObjectId
    business_id: { type: Schema.ObjectId, ref: "Businesses" },
    name: { type: String, required: true },
    permissions: [{ type: Schema.ObjectId, ref: "Permissions" }],
});
 
var permissionsSchema = new Schema({
    _id: Number,
    name: { type: String, required: true },
    code: { type: String, required: true }
});

Desde ya muchas gracias a todos los que me puedan orientar!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Modelado de roles usuarios y permisos

Publicado por Fran (14 intervenciones) el 11/09/2017 20:46:42
No entendi realmente cual es la pregunta, asique mi respuesta puede ser sobre otro tema.

En mongoDB, tienes que crear usuarios con roles especificos y luego utilizarlo en las peticiones, independientemente del usuario de la empresa que este ejecutando la peticion... es decir.


El usuario de mongodb llamado "usuario_escritura", esta definido en tu base de datos "empresa_1" y lo utiliza el usuario "juan" para dar de alta nuevos usuarios llamados "carlos" que solo pueden leer y por ende, a nivel base de datos usan el usuario "usuario_lectura" de la base de datos.

User en mongodb: "usuario_escritura"
Rol en mongodb: escritura (insert,update)

user en empresa_1: juan
rol de juan: alta de otros usuarios
usuario para escribir: "usuario_escritura"

user en empresa_1: carlos
rol de carlos: leer reportes
usuario para leer: "usuario_lectura"



De ninguna manera tus usuarios de empresas crean usuarios en MoongoDB.
En cuanto a mongoose, los schemas te van a servir a modo validacion de las peticiones y eso esta claro y para mi no hay mucho misterio. Define tus esquemas y ya... los datos entraran ordenados o no entraran, realmente me cuesta ver la duda en ese caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Modelado de roles usuarios y permisos

Publicado por Oscar (1 intervención) el 13/09/2017 03:04:31
Hola Fran, gracias por responder
Creo que me explique mal, cuando hablo de roles y permisos, no hablo de los role y permisos de la base de datos, sino de la API que estoy haciendo.

Por ejemplo

La empresa "empresa1" va a usar mi API, esta empresa registra a sus 10 empleados en el sistema, cada empleado cumple ciertos roles (administrator, encargado y empleado normal).. entonces la idea es que esta empresa pueda crear esos roles en mi API y asignar esos roles a cada empleado. La empresa "empresa2" tambien va a usar mi api.. tiene 20 empleados por lo cual registra a esos 20 empleados en mi sistema, esta empresa tambien maneja los mismos roles de nombres que la empresa anteior, pero en este caso ellos quieren que los permisos de cada rol sea distinto..

Mi pregunta es, donde guardar los roles (y sus permisos) de cada empresa, dentro del esquema "empresa" o en otro aparte ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar