я делаю немного иначе...
Misha v.3 16.10.2003 23:32
1. есть табличка auser где лежат пользователи и группы, идентификатор - auser_id
2. есть табличка object с объектами сайта, идентификатор object_id. есть еще поле irf - маска наследуемых прав.
3. есть табличка с Access Control List, с полями: auser_id, object_id, rights
Собственно если надо пользователю/группе дать права, я добавляю запись в табличку ACL, при этом права у меня задаются побитно (один бит - одно право)
В классе авторизации у меня есть метод, который сам считает права, которые пользователь имеет на объект - обычная битовая арифметика.
Права пользователя на объект складываются из всех прав данных группам, в которых состоит пользователь на все права объектов вурхних уровней в учетом маски. Если права даны не группе, а непосредственно пользователю, то они перебивают права пришедшие от групп (в общем если кому-нить это что-нить говорит, то я делал этот механизм наследования прав на основе реализованого в Novell NDS)
P.S. наверное завтра выложу класс авторизации в открытый доступ, там можно будет посмотреть реализацию этих методов.
- permission, marex 16.10.2003 22:36
- Как бы сделал я, Luzhnikovskiy [M] 16.10.2003 22:56
- я делаю немного иначе..., Misha v.3 [M] 16.10.2003 23:32