Управление уровнями прав доступа

Архив WebclubТехнологии2008

Публикация прежнего Webclub · 2008 год. Примеры и сведения сохранены в историческом контексте.

Типичное приложение обычно имеет два уровня прав доступа: пользователя и администратора. Однако в некоторых приложениях необходим более сложный механизм управления доступом. Например, текстовые базы данных требуют множества уровней прав доступа.

  • Супервизор может изменять в системе все, что требуется, может модифицировать пользовательскую систему и т. д.

  • Редактор может редактировать статьи и другую информацию, а также утверждать тексты, предлагаемые авторами.

  • Автор может создавать статьи и другие виды текстов, вносить их на рассмотрение редакторов, но не может сам утверждать тексты;

  • Пользователь располагает лишь правами доступа для чтения.

Поскольку вы знаете текущего зарегистрированного пользователя и можете идентифицировать его по уникальной строке ($uid), то несложно написать функции, которые будут включать пользователя в определенную группу и предоставлять ему те или иные права доступа в зависимости от того, что это за группа. Библиотека PHPLib располагает встроенными функциями для выполнения этих действий.

Для того чтобы можно было работать с классом Perm, вы должны добавить еще один элемент к вызову функции page_open(). Библиотека PHPLib по умолчанию предоставляет реализацию класса Perm с именем Example_Perm. Но вы уже знаете, как следует поступить, чтобы можно было использовать все возможные функции, как привести систему в соответствие со своими потребностями, - необходимо создать собственный производный клаcс в файле local.inc.

В листинге 6.6 приведен пример использования класса Perm. Здесь реализовано несколько больше функциональных возможностей, чем действительно необходимо: наш класс позволяет выходить из системы и повторно входить в нее с другим именем пользователя (это позволяет более наглядно продемонстрировать механизм уровней прав доступа в действии); эталонный пользователь PHPLib (имя пользователя kris, пароль test) получает привилегии администратора (admin), и если вы войдете в систему под этим именем, сценарий выведет сообщение "Добро пожаловать, администратор". Поскольку в дистрибутиве библиотеки PHPLib задан единственный пользователь - администратор, - нужно создать и других пользователей, чтобы увидеть, как выглядит соответствующая страница для посетителей с иным уровнем доступа.

Листинг 6.6. Работа с классом Perm

page_open(array("sess" => " Example_Session", "auth" => "Example_Auth ", "perm" => "Example_Perm"));

if(isset($mode) && $mode == "reload")

{

$auth->unauth();

print("Вы успешно вышли из системы.

");

printf('Если хотите, вы можете войти повторно.',

е$sess->url(basename($PHP_SELF)));

}

else

{

if($perm->have_perm("admin"))

{

print("Добро пожаловать, администратор.

");

print('Вы вошли в систему с уровнем доступа "admin".

');

}

else

{

printf(Вы вошли в систему с уровнем доступа "%s".

',

е$auth->auth["perm"]);

}

printf("Ваше имя: $s

", $auth->auth["name"]);

printf('Log out',

е$sess->url(basename($PHP_SELF)."?mode=reload"));

}

page_close();

Ещё из архива

Архив клуба
веб-разработчиков

HTML, CSS, программирование и история интернета. Публикации прежнего Webclub по своим адресам.

Открыть архив
Сайт на ноутбуке и телефоне