Question

Mon ami et moi sommes en train d'écrire un C # IRC Bot qui permettra aux utilisateurs d'étendre ses capacités via des plugins. Nous en avons besoin pour que chaque commande sera en mesure d'avoir ses propres autorisations. Alors que seul un utilisateur sur un niveau spécifique ou au-dessus pourrait exécuter la commande. Nous avons eu du mal à décider comment faire.

Le système de permissions serait 1-10. 1 étant le moins privilégié, et 10 étant le plus. Chaque utilisateur sera attribué une autorisation 1-10. Chaque commande serait également lui-même attribuer un niveau d'autorisation requis. Ma question est essentiellement:. Comment pourrais-je faire un système d'autorisation par-commande avec des plugins pouvant avoir plusieurs commandes en leur sein

J'espérais le bon peuple de débordement de la pile pourrait me aider. S'il vous plaît garder avec moi que c'est la première question que j'ai demandé ici. Toute aide sera fortement appréciée! Merci!

Était-ce utile?

La solution

qui certainement travailler, une autre façon est le concept de « capacités ». chaque utilisateur dispose d'une liste de fonctionnalités telles que la « mise à jour par l'utilisateur », « supprimer utilisateur », « download-file », etc. la liste est illimitée. vous pouvez accorder des capacités des utilisateurs et chaque fonction peut vérifier avec la liste requise dont il a besoin

if (! CheckCaps ( 'shell-cmd', 'google', 'open url')) sendError ( 'désolé, pas perms')

rôles peuvent être définis qui agrège un ensemble d'autorisations, comme 'guest', 'utilisateur', 'gestionnaire', 'admin', etc.

Autres conseils

Je voudrais créer votre propre implémentation de IPrincipal qui renverrait les valeurs de 1-10 pour les rôles qui représentent le niveau d'autorisation l'utilisateur. Ensuite, attribuez ce que l'autorisation principale lorsque vous authentifiez votre utilisateur.

Ensuite, il est une question d'appliquer l'attribut PrincipalPermission sur toutes les méthodes (qui signifie que vos méthodes de plug-ins, et d'autres) pour permettre aux gens dans le rôle approprié pour exécuter le seul code.

Par exemple, si j'ai niveau cinq, alors je suis affecté rôles 1, 2, 3, 4, 5.

Vous pouvez avoir une méthode a un attribut PrincpalPermission où la propriété de rôle est réglé sur 6, que je ne voudrais pas avoir accès et une autre méthode qui a un attribut PrincipalPermission avec la propriété de rôle défini sur 3, je le ferais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top