Разрешения плагинов в IRC Bot - PullRequest
1 голос
/ 25 декабря 2009

Мой друг и я пишем C # IRC Bot, который позволит пользователям расширять его возможности с помощью плагинов. Нам это нужно, чтобы у каждой команды были свои права доступа. Так что только пользователь на определенном уровне или выше мог выполнить команду. Нам было трудно решить, как это сделать.

Система разрешений будет 1-10. 1 - наименее привилегированный, а 10 - самый. Каждому пользователю будет назначено 1-10 разрешений. Каждая команда также назначает себе необходимый уровень разрешений. По сути, мой вопрос таков: как я могу создать систему разрешений для каждой команды, в которой плагины могут содержать несколько команд.

Я надеялся, что хорошие люди из Переполнения Стека могут мне помочь. Пожалуйста, потерпите меня, так как это первый вопрос, который я задал здесь. Любая помощь будет оценена! Спасибо!

Ответы [ 2 ]

1 голос
/ 25 декабря 2009

Я бы создал вашу собственную реализацию IPrincipal, которая бы возвращала значения 1-10 для ролей, которые представляют уровень авторизации, который есть у пользователя. Затем вы назначаете это как основное разрешение при аутентификации вашего пользователя.

Затем необходимо применить атрибут PrincipalPermission ко всем методам (т. Е. К методам плагина и т. Д.), Чтобы позволить людям в соответствующей роли выполнять только код.

Например, если у меня пятый уровень, мне назначены роли 1, 2, 3, 4, 5.

У одного метода может быть атрибут PrincpalPermission, где для свойства Role установлено значение 6, к которому у меня нет доступа, и другой метод с атрибутом PrincipalPermission со свойством Role, установленным в 3, что я бы сделал. *

0 голосов
/ 25 декабря 2009

это определенно сработает, другой способ - это понятие «возможности». у каждого пользователя есть список возможностей, таких как «update-user», «delete-user», «download-file» и т. д. список не ограничен. Вы можете предоставить пользователям возможности, и каждая функция может проверить требуемый список, в котором она нуждается

if (! CheckCaps ('shell-cmd', 'google', 'open-url')) sendError ('извините, без perms')

могут быть определены роли, которые объединяют набор разрешений, таких как «гость», «пользователь», «менеджер», «администратор» и т. Д.

...