Autorisations utilisateur au niveau de la ligne, aide à la conception
-
05-07-2019 - |
Question
Dites que je crée une application de forum, je comprends comment concevoir un système d'autorisation au niveau du forum avec des groupes.
i.e. vous créez un forum pour mapper des groupes et assignez des utilisateurs à un groupe pour leur donner accès à un forum particulier.
Comment puis-je affiner les autorisations pour autoriser les autorisations au niveau de la ligne (ou en termes de forum, niveau publication).
Pas de solution correcte
Autres conseils
Vous le feriez de la même manière que vous l'avez déjà décrite. Il faudra quelques jointures supplémentaires. Disons que vous avez une structure semblable à celle-ci (j'ai volontairement éloigné les contraintes pour la rendre générique et réduire la quantité de code):
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
)
Vous pouvez ensuite effectuer plusieurs jointures pour limiter le contenu en conséquence:
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>