Создание движка на MVC. Начинам делать систему распределения прав пользователей.
Всем привет! Продолжаем заниматься совершенствованием нашей CMS и нашего движка. Сегодня мы будем заниматься системой прав пользователей.
Создайте дополнительное поле role в таблице users. Его тип будет ENUM, а значения будут 'default','admin','owner'. По умолчанию поставьте значение 'default'.
Пользователю jesse поставьте роль в значение 'owner', создайте нового пользователя с логином joe и паролем таким же, как и у пользователя jesse. Т.е. просто скопируйте MD5 хэш поля password у пользователя jesse и вставьте его в поле password пользователя joe. Ему значение поставьте 'default'.
Откройте файл login_model.php, перейдите к методу run и после выполнения метода execute пропишите следующее:
$data = $sth->fetch();
Также, не забудьте добавить поле role в sql запросе выше.
И, конечно же, добавьте это в сессию сразу после инициализации.
Session::set('role', $data['role']);
Теперь откроем файл header.php и немного изменим код, который находится внутри блока с id=header.
<?php if(Session::get('loggedIn') == false):?>
<a href="<?php echo URL; ?>index">Index</a>
<a href="<?php echo URL; ?>help">Help</a>
<?php endif; ?>
<?php if(Session::get('loggedIn') == true):?>
<a href="<?php echo URL; ?>dashboard">Dashboard</a>
<?php if(Session::get('role') == 'owner'):?>
<a href="<?php echo URL; ?>user">Users</a>
<?php endif; ?>
<a href="<?php echo URL; ?>dashboard/logout">Logout</a>
<?php else: ?>
<a href="<?php echo URL; ?>login">Login</a>
<?php endif; ?>
Теперь полностью скопируйте файл dashboard.php в папке controllers и создайте новый файл user.php в той же папке. Вставьте скопированный код в этот файл. Измените название класса на User.
После определения переменной $logged пропишем следующий код.
// ...
$role = Session::get('role');
if($logged == true || $role != 'owner') {
// ...
Удалите строчку
$this->view->js = array('dashboard/js/default.js');
И все остальное, кроме метода index. В методе index нужно изменить аргумент метода render.
$this->view->render('user/index');
Теперь создадим папку user в папке view, а в папке user создадим папку js. Создадим файл index.php.
В файле index.php пропишем следующее:
<h1>User</h1>
Откроем файл dashboard.php в папке controllers и немного изменим метод logout.
public function logout() {
Session::destroy();
header('Location: '.URL.'login');
exit();
}
Ну, думаю, пока остановимся на этом, а в следующей статье продолжим делать систему прав пользователей.
-
- Михаил Русаков
Комментарии (3):
Приветствую, хотелось бы увидеть по быстрее следующий выпуск. И хотел спросить(то ли дать совет) ), насчет роутинга, почему бы к примеру сделать не так: $url = explode('/', $_SERVER['REQUEST_URI']); if (!empty($url[1])) $controller_name = $url[1]; if (!empty($url[2])) $action_name = $url[2]; if (!empty($url[3])) $param_name = $url[3];
Ответить
Почему вы молчите?
Ответить
Спился и его уволили.))
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.