Всем привет! Продолжаем заниматься совершенствованием нашей CMS и нашего движка. Сегодня будем заниматься системой прав пользователей .

Создание движка на 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();
}

Ну, думаю, пока остановимся на этом, а в следующей статье продолжим делать систему прав пользователей.