Laravel 5.1: разработка пакетa на примере ACL. Часть 3

rulesВ этой части мы добавим регистрацию и авторизацию, а так же инструмент для присвоения ролей пользователям. Авторизацию и регистрацию мы реализуем практически по инструкции с официального сайта, но с небольшими дополнениями. Для начала давайте создадим основной макет (из корня проекта)

Поправим шаблон главной страницы на использование единого макета который мы только что создали. Откроем файл /resources/view/welcome.blade.php  и заменим содержимое на

2015-10-14 18-24-00 ACL

Хотя можете там что-то свое собрать.

Теперь давайте создадим представления для авторизации и регистрации. Для этого нам надо создать директорию для этих представлений (можно конечно не использовать директории, но я предпочитаю структурировать данные)

Создадим файл представления для регистрации  touch resources/views/auth/register.blade.php  с содержимым

2015-10-14 18-25-44 ACL

и представление с формой авторизации touch resources/views/auth/login.blade.php с содержимым

2015-10-14 18-26-39 ACL

И что бы все это заработало надо добавить маршруты в app/Http/routes.php

Регистрация и авторизация готова, но есть одно небольшое неприятное «но». После прохождения процедуры регистрации, пользователя будет перенаправлять по адресу /home, что будет вызывать 404 ошибку. Если учесть, что по умолчанию при успешной регистрации пользователь автоматически авторизуется, то на мой взгляд, лучше сделать перенаправление на главную страницу. Для этого в контроллере app/Http/Controllers/Auth/AuthController.php  необходимо добавить свойство

Теперь после регистрации и авторизации пользователя будет перенаправлять на главную страницу.

Пришла пора создать UserController и представления для него. Собственно мы уже потихонечку подбираемся к финалу. И так! Создадим контроллер для работы с профилями пользователей

Как вы наверно заметили в конструкторе контроллера мы используем Gate. Вот в нем то вся изюминка и заключается.

Не буду тут объяснять как работает Gate а просто оставлю ссылку на документацию (в переводе).

Добавим три представления для UserController

Список пользователей

2015-10-14 16-51-56

Просмотр профиля

2015-10-14 18-28-45 ACL

Я сделал минимальный вариант

Редактирования профиля пользователя

2015-10-14 18-41-53

И чтобы все это заработало необходимо добавить маршрут в app\Http\routes.php

В конструкторе UserController вы наверняка заметили $user->allowRules(‘имя_правила’), да даже если не разглядывали код то при выполнении у вас в этом месте будет ошибка. Все потому что, модель User надо включить примесь

В прошлой части мы создали модель Role и теперь нам надо её доработать.

Интерфейс который мы задействовали в данной модели

Ну как бы на этом все. Для удобства обработки некоторых моментов можно добавить middleware Access

и теперь при необходимости можно использовать его в маршрутах или конструкторах контроллеров.

На этом все. Если будут вопросы и пожелания то будет продолжение

Исходники если кому надо https://github.com/bitw/acl-example

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *