Permisos de usuario a nivel de fila, ayuda con el diseño.
-
05-07-2019 - |
Pregunta
Digo que estoy creando una aplicación de foros, entiendo cómo diseñar un sistema de permisos a nivel de foro con Grupos.
es decir, crea un foro para la asignación de grupos y asigna usuarios a un grupo para darles acceso a un foro en particular.
¿Cómo puedo refinar los permisos para permitir permisos de nivel de fila (o en términos de foro, nivel de publicación)?
No hay solución correcta
Otros consejos
Lo harías de una manera similar a la que ya has descrito. Requerirá unas cuantas más juntas. Digamos que tienes una estructura como esa (he mantenido intencionalmente las restricciones para hacerla genérica y reducir la cantidad de código):
CREATE TABLE ForumPost (
PostID int,
ForumID int,
PostText varchar(255)
);
CREATE TABLE ForumUser (
ForumUserID int,
ForumUserName varchar(255),
NumofPosts int
);
CREATE TABLE ForumGroups (
ForumGroupID int,
ForumGroupName varchar(255)
)
CREATE TABLE ForumGroupMembership (
ForumUserID int,
ForumGroupID int
)
CREATE TABLE ForumPermissions (
ForumID int,
ForumGroupID int,
MinPosts int
)
Luego puedes hacer varias combinaciones para asegurarte de restringir el contenido en consecuencia:
SELECT FPost.PostID, FPost.ForumID, FPost.PostText
FROM ForumPost FPost
JOIN ForumPermissions FPerm
ON FPost.ForumID = FPerm.ForumID
JOIN ForumGroupMembership FGM
ON FPerm.ForumGroupID = FGM.ForumGroupID
JOIN ForumUser FUser
ON FUser.ForumUserID = FGM.ForumUserID
WHERE FUser.NumOfPosts >= FPerm.MinPosts
AND FPost.PostID = <Some Number>