Angular - Duda con estructura MEAN concreto

 
Vista:

Duda con estructura MEAN concreto

Publicado por Antonio (1 intervención) el 17/03/2021 10:16:35
Normalmente partimos de la base de que un usuario puede o no acceder a ciertas tablas en función de su rol.

Pero, ¿Cómo se gestionaría que un usuario pueda acceder a una tabla u otra en función de su rol pero, además, en función de si tiene permiso para hacer operaciones CRUD en función de su autoría sobre la tabla?

Imaginemos, por poner un ejemplo, que tenemos usuarios (con su usuario, contraseña y si están activos) y que estos usuarios pueden ser de diferentes tipos (Estudiante, Profesor, Administrador) y en función del tipo que sean van a tener una serie de relaciones asociadas.

Tendríamos una tabla Usuario con los datos generales y otras tablas de subtipo con los datos del subtipo en concreto y las relaciones que tienen asociadas.

¿Deberíamos dar de alta en Usuario y subtipo (por ejemplo Estudiante) al realizar el registro en la aplicación o hacerlo de otra forma? ¿Debemos indicar en Usuario y subtipo el mismo valor para la clave? ¿Cómo se gestionaría la comprobación de si un usuario es o no el dueño del registro?

He estado intentando investigar este tipo de cuestiones en diferentes lugares y foros pero no encuentro solución al problema en ningún sitio.

¿Podrían ayudarme con esto?

Muchas gracias,

EDITO: Añado conceptualmente la solución actual, ya que es un problema a nivel de diseño y de concepto, no de implementación. En la actualidad cuando doy de alta un Usuario, doy de alta también mediante una transacción su subtipo (Estudiante, Profesor o Admin) pero no me convence esto.

Usuario:
Id (el asignado por Mongo)
correo (único)
contraseña
activo
rol (Estudiante, Profesor o Admin)

Estudiante:
Id (el mismo asignado en Usuario)
pruebas (array de Prueba, otra colección)
profesor (referencia a la colección Profesor)
...

Profesor:
id (el mismo asignado en Usuario)
alumnos_asignados
pruebas_asignadas
pruebas_resueltas
...

Admin:
id (el mismo asignado en Usuario)
incidencias_pend
...

NOTA: En algunas ocasiones referencio en lugar de usar sub documentos siguiendo las recomendaciones de Angular University, por preveer que tendran muchos registros y haran muy pesado el documento.
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