НЕЗНАЙКА » 2010.11.17 16:40

Это вообще больная тема:) Необходима небольшая система прав. Немного подумав накатал эдакое:

Код:

1
span style="color: #0000BB"><?php# Roles$_roles = array('banned' => false,'guest' => false,'member' => false,'author' => false,'moderator' => false,'admin' => false);# Определяем доступ по level из БД$user_data['level'] = 1;if ($user_data['level'] == 1){$_roles['member'] = true;}elseif ($user_data['level'] == 3){$_roles['moderator'] = $_roles['member'] = true;}elseif ($user_data['level'] == 4){$_roles['admin'] = $_roles['moderator'] = $_roles['member'] = true;}else{$_roles['guest'] = true;}?>
НЕЗНАЙКА » 2010.11.17 16:45

Далее проверяем:

Код:

1
span style="color: #0000BB"><?php# определение ролей# проверка доступаif ($_roles['moderator']){# Вы модератор}?>

Если нужны действия типа редактировать анкету то:

Код:

1
span style="color: #0000BB"><?php# определение ролей# определяем автора# сравниваем ID пользователя, создавшего запись с текущимif ($user_data['id'] == $text['user_id']){$_roles['author'] = $_roles['member'] = true;}# проверка доступаif ($_roles['author']){# Вы автор сего текста}?>

Вопрос, можно как-то улучшить такой метод? Ну и ваше мнение...
П.С. Писал быстро, могут быть ошибки

НЕЗНАЙКА » 2010.11.17 17:00

Nu3oN, убирать за собой хорошо:)

Nu3oN » 2010.11.17 17:01

НЕЗНАЙКА написал:

В твоем варианте массив ид юзеров:) Прикинь сколько нужно вписать? К тому же для гостей не нужно

Да я просто вначале не понял суть... Когда я это начал писать, у тебя был только первый пост =)
Я думал это доступ к определенным модулям сайта :/
Добавлено спустя   2 минуты  21 секунду:

НЕЗНАЙКА написал:

Nu3oN, убирать за собой хорошо:)

Ага)))
Добавлено спустя   3 минуты  36 секунд:
з.ы думаю твой вариант наилучшее решение...

НЕЗНАЙКА » 2010.11.17 17:09

Nu3oN написал:

з.ы думаю твой вариант наилучшее решение...

Не наилучшее, но имеет право жить. Надо бы еще укомплектовать вложенные роли (админ - модератор - юзер), а то если еще супер-админа сделать, то большие строки будут.

Gemorroj » 2010.11.17 17:25

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

НЕЗНАЙКА » 2010.11.17 17:32

Проблема возможно с баном будет. Смотря как дать доступ забаненым - редактировать ли, писать...
реальный проект... Если начну  писать, то посмотрим "вживую"
Прост мне не нужны все эти навороты аля zend_acl. Хотя тут тоже можно написать класс и расширять проще