2009-12-25 5 views
1

Mon ami et moi sommes en train d'écrire un Bot IRC C# qui permettra aux utilisateurs d'étendre ses capacités via des plugins. Nous en avons besoin pour que chaque commande puisse avoir ses propres permissions. Ainsi, seul un utilisateur d'un niveau spécifique ou supérieur peut exécuter la commande. Nous avons eu du mal à décider comment faire cela.Autorisations de plugin dans un robot IRC

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

J'espérais que les bonnes personnes de Stack Overflow pourraient m'aider. S'il vous plaît, supportez-moi car c'est la première question que j'ai posée ici. Toute aide est la bienvenue! Merci!

Répondre

0

qui fonctionnerait certainement, une autre façon est le concept de «capacités». Chaque utilisateur dispose d'une liste de fonctionnalités telles que 'update-user', 'delete-user', 'download-file', etc. la liste est illimitée. vous pouvez accorder des capacités aux utilisateurs et chaque fonction peut vérifier par rapport à la liste requise

if (! checkCaps ('shell-cmd', 'google', 'open-url')) sendError ('Désolé, pas de perms'))

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

+0

J'aime aussi cette idée. Merci! –

1

Je voudrais créer votre propre implémentation de IPrincipal qui renverrait la valeurs de 1 à 10 pour les rôles qui représentent le niveau d'autorisation de l'utilisateur. Vous l'affectez ensuite comme autorisation principale lorsque vous authentifiez votre utilisateur.

Ensuite, il s'agit d'appliquer l'attribut PrincipalPermission sur toutes les méthodes (c'est-à-dire vos méthodes de plugin, et autres) pour permettre aux personnes dans le rôle approprié d'exécuter le code uniquement.

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, auquel je n'aurais pas accès et une autre méthode qui a un attribut PrincipalPermission avec la propriété Role à 3, ce que je ferais.

+0

Merci! Je vais regarder dans IPrinciple. –