Re[2]: разрешения в приложении
От: Gmoorick Россия  
Дата: 02.05.05 11:44
Оценка:
Здравствуйте, BaTReligioN, Вы писали:

BTR>Здравствуйте, Gmoorick, Вы писали:


G>>Вот пытаюсь создать достаточно большую БД. Некоторые контролы должны менять свое поведение в зависимости от того, к какой группе принадлежит текщий юзер ( группы не виндовые — я сам их определяю ). То, что есть сейчас:


BTR>skip


G>>

G>>Вроде это все должно работать, только мне не нравиться решение (слишком громоздкое обьявление, надо добавлять такую функциональность всем контролам системы ) и я не могу придумать ничего лучше. Хочу критику, советы и/или ссылки на готовые решения

BTR>А почему тебе не сделать у юзера внутри список групп, к которым он принадлежит? том пару методов у юзера, возвращающие что можно пользователю, в зависимости от групп. А где-то на форме сделать вот так:


Т.е. вот так:
BTR>MyTextBox tb1 = new MyTextBox(dp1);
BTR>tb1.Visible = currentuser.CanView;


делать не получиться, потому что мы не знаем, какие данные tb1 просматривает...
BTR> Или я не до конца понял замысел?
Видимо не доконца. Система примерно такая, я разделил БД на несколько групп ( DataGroup ), так чтобы на каждую группу можно было установить разрешения для каждой UserGroup. Т.е. вот есть у меня виртуальная группа данных AdressBook, и я задаю разрешения в своей бд примерно так:

AdressBook — CanView — All
AdressBook — CanEdit — Secretars
ADressBook — CanAdd — Secretars
AdressBook — CanDelete — Admins

есть еще связка User, UserGroup.
В программе этой связкой занимается UserInfo, c помощью св-ств аля
bool CanView ( DataGroup );

т.е. я всегда могу получить разрешения на юзера так:
UserInfo curUser = new UserInfo.Instance;
if( curUser.CanView(AdressBook ) ) 
 MessageBox.Show( " Можно смотреть " ) ;

Далее, изза чего все заморочки. 1 конрол на форме может влиять на несколько DataGroup, поетому ему надо определить, что именно и с какой DataGroup он делает.Это я определяжю с помощью DataPermissions. Потом этот самый контрол будет на основы данных в DataPermissions запрашивать UserInfo о том, разрешено ли юзеру выполнять определенное действие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.