Авторизация
В файле контроллера, в котором надо сделать доступ авторизованным посетителям, надо добавить компонент «Auth».
class UsersController extends AppController { public function initialize(): void { parent::initialize(); // компонент, который делает доступ к страницам только авторизованным $this->loadComponent('Auth'); } // … }
Теперь при открытии любой страницы текущего контроллера будет происходить перенаправление на страницу «/users/login», где пользователю надо авторизоваться.
По умолчанию страницы авторизации нет. Её можно создать в контроллере.
# src/Controller/UsersController.php public function login() { if ($this->request->is('post')) { $user = $this->Auth->identify(); if ($user) { $this->Auth->setUser($user); return $this->redirect($this->Auth->redirectUrl()); } $this->Flash->error('Неправильный логин или пароль'); } }
И в файле шаблона «templates/Users/login.ctp» добавить следующий код:
<!-- templates/Users/login.ctp --> <?= $this->Form->create() ?> <?= $this->Form->control('username') ?> <?= $this->Form->control('password') ?> <?= $this->Form->button('Войти'); ?> <?= $this->Form->end() ?>
Теперь пользователи могут авторизовываться на сайте.
Выйти из аккаунта
Выйти из аккаунта можно через метод $this->Auth->logout()
.
# src/Controller/UsersController.php public function logout() { return $this->redirect($this->Auth->logout()); }
Указать страницы, доступные всем пользователям
Компонент «Auth» делает все страницы текущего контроллера доступными только авторизованным. Указать страницы, которые будут доступны всем можно через метод $this->Auth->allow()
.
# src/Controller/UsersController.php use App\Controller\AppController; use Cake\Event\EventInterface; class UsersController extends AppController { public function beforeFilter(EventInterface $event) { parent::beforeFilter($event); // сделать доступными страницы «index» и «view» $this->Auth->allow(['index', 'view']); } }
Поддержать автора