Блог старого компьютера

Блог старого компьютера


Главная Yii 2 Блог на yii 2 (Работа с пользователем)

Блог на yii 2 (Работа с пользователем)

25.11.2014 17:05 Администратор Yii 2
Печать PDF

И так сегодня продолжим знакомится с фреймворком yii 2. В прошлой статье мы создали  с помощью CRUD генератора администрирование нашего микро блога. Сегодня нашей целью будет закрыть администрирование от лишних глаз. Для этого защитим его паролем. Далее попробуем сделать вывод последних постов на главную страницу нашего сайта, если хватит времени.

 Первым делом уберем demo пользователя и сменим пароль у администратора. Думаю вы уже догадались что в нашей yii уже есть небольшая авторизация. Ей мы и воспользуемся.

И так для того чтоб изменить пароль у администратора и убрать лишнего пользователя нам необходимо открыть модель user (models/user.php). В данном файле отредатируем массив с информацией о пользователях. Выглядит он сейчас так:

private static $users = [
'100' => [
'id' => '100',
'username' => 'admin',
'password' => 'admin',
'authKey' => 'test100key',
'accessToken' => '100-token',
],
'101' => [
'id' => '101',
'username' => 'demo',
'password' => 'demo',
'authKey' => 'test101key',
'accessToken' => '101-token',
],
];

Из данного массива юзверей убираем demo юзера и меняем пароль админа, по желанию логин admin тоже можно изменить, так будет чуть безопасней.

Данный код будет выглядет после редатирования следующим образом:

private static $users = [
'100' => [
'id' => '100',
'username' => 'admin',
'password' => 'adminkey',
'authKey' => 'test100key',
'accessToken' => '100-token',
],
];

С паролем я заморачивать не буду, моя цель показать. Думаю вы понимаете что в будущем можно будет перерпботать данную модель на получения пользователей из базы данных. После изменения пробуем авторизоваться на сайте с попощью страницы login.

 Далее переименуем ссылку на управление нашим блогом в "Управление блогом". Где изменить ссылки главного меню думаю вы помните (views/layouts/main.php). После того как переименуем давайте скроем эту ссылку от глаз гостей. Для этого в том же файле добавим в вывод виджета условие которое будет проверять авторизован пользователь или нет и выводить ссылку на экран в первом случае. Код вывода главного меню будет выглядеть так:

echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
(Yii::$app->user->isGuest!=1) ?
['label' => 'Управление блогом', 'url' => ['/blog']]: '',
Yii::$app->user->isGuest ?
['label' => 'Login', 'url' => ['/site/login']] :
['label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']],
],
]);

Думаю условие понятно и пояснений не требует. Далее нам необходимо ограничить доступ к нашему к администрированию блогом. Для этого в контроллер в поведение (behaviors) добавить правило.

Открываем наш контроллер (controllers/BlogController.php)

Глядим на поведение:

public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
];
}

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

public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
 [
'allow' => true,
'roles' => ['@'],
],
],
],
];
}

 Можно еще на всякий случай действия контроллера защитить условием. К прмеру если нету нет id пользователя то не выполняем действие, а отправляем пользователя на  страницу логина. Думаю того что мы уже сделали достаточно, но на всякий случай приведу строчку для получения id пользователя, думаю в будущем пригодится.

$userId = Yii::$app->user->identity->getId()

К сожалению время которое было, вышло и рассмотреть вывод постов на главную мы сегодня не успеем. Ждите следющий пост.

Добавить комментарий


Защитный код
Обновить

Поиск

Голосование

Что Вы думаете на счет битрикса?