#Buen dia para todos y todas

1 messages · Page 1 of 1 (latest)

merry portal
#

aca estaremos para lo que necesites en la medida de lo posible

woven whale
#

Gracias, me gustaria una idea global y asi poder iniciar la implementacion.

merry portal
#

lo primero es ver que requerimientos tienes y de ahi puedes pensar como desarrollar el solucion, que al final el sistema lo usara alguien externo el cual debe proveer feedback

woven whale
#

El sistema tiene modulos padres y ellos tendran sus hijos. Estos hijos pueden que algunos tengan hijos tambien, entonces la idea es organizar un modelo en la BD para validar las acciones CRUD dentro de los modulos mencionados. Es donde no encuentro la orientación adecuada.

wheat pebble
#

si haz programado con laravel? si es asi usar AdonisJS te ayudaria mucho un framework que se parece a laravel y da mucho apoyo en la estructura

merry portal
#

puedes hacer un SPA o bien usar Nuxt con algun tRPC para tener mejor integracion con Typescript, ya eso queda a tu decision y tu entiendes que mas necesita el proyecto en lo relacionado a la seguridad del mismo o bien que cosas ponerle y quitarle para el desarrollo

la consulta que quiero hacerte es, los roles tendran permisos? si la respuesta es si, pues se complica un poco mas la tarea, ya que hay una jerarquia entre usuario - role - permiso y esto nos daria una relacion de 1 - 1 - N ya que un usuario, tiene un role asignado, pero el rol puede tener N permisos asignados

si la respuesta es no, estonces se remueve la logica de role y solo se basa en permisos del usuario

no se si lo que menciono es lo que necesitas en la parte logica, dimelo y de ahi te puedo explicar un poco mas, como logre solucionarlo en el pasado

woven whale
#

Exacto un usuario va a tener un rol el cual va a tener N permisos. La cuestion es que esos permisos se verán reflejados en los distintos modulos,submodulos y demas componentes del sistema

wheat pebble
#

Mira este diseño

#

Este es casi el mismo diseño solo quitando el tema de grupos de usuarios

merry portal
#

lo de User_has_Role, es una tabla lo mismo para Role_has_Permission?

wheat pebble
#

Si, tienes relacion user - rol y rol - permission

merry portal
#

@woven whale las validaciones seran en el BE? o bien seran en FE?

wheat pebble
#

un rol puede tener n permisos y un usuario puede tener n roles

#

Normalmente se maneja siempre un rol por usuario pero eso no es completamente cierto

#

Y yo recomiendo tener validaciones de lado y lado, siempre tener en el front y siempre tener en el back

merry portal
#

un usuario con mas de un role, es complicar la logica, es mejor crear un role nuevo que contenga los permisos de ambos

wheat pebble
merry portal
#

lo digo porque Brayam ya menciono la relacion Usuario/Role sera de 1 a 1 entonces ponerle que maneje mas roles, es complicarle la solucion que el debe dar

wheat pebble
#

Te pongo un ejemplo real, en una refaccionaria tienes a una cajera, pero puede ser que la cajera sea cosas de supervisor, y en la empresa saben que la cajera sabe hacer cosas de supervisor, entonces que haces, le asignas a la cajera el rol adicional de supervisor y con ello tiene ambos roles, una vez que el supervisor llega le remueves el rol adicional y listo

wheat pebble
merry portal
#

ademas que creo que Postgres tiene tambien la posibilidad de crear roles para ciertas acciones CRUD, como lo hace supabase, entonces aun mas sencillo manejar un solo role para usuario y no tener N

wheat pebble
#

Lo mejor aqui es cuando uno se loguea se retorne entonces el rol y dentro sus permisos relacionados, y dentro de vue manejar una globalPorperti que valide del array devuelto si esa sección sea pagina o elemento si tiene o no permiso para poder ejecutarse, osea si al boton de editar, nuevo, eliminar y a la opcion de listado se le manda el permiso que deberia de tener para poder acceder a el y la globalProporti recorrera el array para ver si el back devolvio que tiene acceso a ese permiso o no

merry portal
# wheat pebble Lo mejor aqui es cuando uno se loguea se retorne entonces el rol y dentro sus pe...

esta es la solucion mas sencilla de aplicar, porque es simplemente solicitar los permisos asociados al rol del usuario, se puede hacer en el primero load de la aplicacion (con vue-router y que use Pinia para almacenarlos, o bien usar Provide/Inject en el App.vue para que los exponga a todos los componentes
el problema seria que tambien deba validar los permisos en el BE, que ahi es donde debe tener un middleware en Node, para consultar si el usuario puede o no, realizar la accion que desea

y/o la ultima seria pues tratar de usar Postgree y la logica de roles que tiene y la use, por eso fue que pense podia usar Nuxt para tener ahi un tipo middleware para chequear permisos antes de mostrar paginas y demas, de "manera mas sencilla" y "segura" ya que retornaria el "HTML" necesario basado en permisos desde el Servidor y no esperar el JS en el cliente compute toda la logica para ver si un componente/ruta debe mostrarse

woven whale
woven whale
woven whale
#

Ahora bien como se puede guardar en la BD, el permiso que tengo asignado en el modulo y/o submodulo... Ya que hay modulos que tienen varias capas o niveles por debajo de ellos.

wheat pebble
#

Yo pensandolo asi si pensaria entonces en la relacion n a n de usuarios y roles

#

Aunque tal vez no

#

Es que mira, los permisos son definidos por cada sección

#

Podrias crear en la seccion de los permisos un permiso padre

#

y manejar busqueda recursiva de permisos

#

Por ejemplo, lo primero es el nivel del permiso, luego el nombre del permiso, y luego los permisos que tiene (recuerda, excel es una gran herramienta), para ello cree un permiso llamado module que en realidad no sirve para nada mas que para servir de pivote

#

Claro es un ejemplo muy irreal porque aunque estan relacionadas las cosas un modulo no depende del otro

woven whale
#

Ahora mi consulta es, ¿Alguien tiene un tree view hecho en vue? Que me permita para poder guiarme

woven whale
merry portal
#

no uses tree view para mostar la jerarquia, es muy mal UX-UI

#

cuando hay mucha informacion es muy dificil de seguir

woven whale
#

Que me recomiendas usar?

woven whale
# woven whale

Este es un modelo que se tiene pensado para que pueda abarcar toda la aplicacion

merry portal
# woven whale Que me recomiendas usar?

es mejor un tabla/paneles con los roles, que tenga una forma de expandir el row y ahi mostrar los permisos y dentro de ese espacio poder crear o hacer lo de check/uncheck

#

queda mas sencillo cuando hay demasiada informacion de permisos, porque mostrar un tree view con permisos es complejo al tener muchos datos

wheat pebble
# woven whale

para el caso de los menus y submenus te recomiendo la misma estructura que te comente en permisos, una sola tabla de menu y sobre esa misma hacer los submenus y para traerlo lo haces de manera recursiva

woven whale
wheat pebble