/bsa-2018-php-9

Laravel auth hometask.

Primary LanguagePHP

Домашнее задание Laravel auth

Цель

Ознакомиться с механизмами аутентификации и авторизации в Laravel.

Установка

Установка показана в рабочем окружении OS Linux:

git clone git@github.com:BinaryStudioAcademy/bsa-2018-php-9.git
cd project-dir
composer install
cp .env.example .env
php artisan key:generate

Подготовка

  1. Добавить функциональность(миграции, модели и т.д) из домашнего задания по Views and Forms.
  2. Создать по роуту “/” главную страницу, содержащую текст: "Currency market".

Задание 1

Добавить возможность регистрации новых пользователей и аутентификации с помощью email и password.

  1. После аутентификации показывать пользователю страницу со списком валют /currencies.
  2. Закрыть доступ ко всем страницам, кроме главной для пользователей, не прошедших аутентификацию.

Задание 2

Добавить возможность аутентификации через социальную сеть или сервис, например, Фейсбук (Socialite, SocialiteProviders, etc.) Для этого нужно будет зарегистрировать приложение на используемом ресурсе и использовать предоставленные ключи внутри .env Laravel приложения.

Задание 3

Реализовать механизм авторизации с помощью ролей.

  • Ролей должно быть 2: обычный пользователь и администратор.
  • Для хранения роли нужно изменить миграцию для таблицы [users]: добавить флаг is_admin.
  • Права доступа:
    • Пользователь должен иметь доступ к страницам списка валют и отдельной валюты.
    • Пользователь не должен видеть контролы для редактирования, удаления и добавления валюты.
    • Пользователь не должен иметь доступа к соответствующим действиям(добавление, обновление, удаление).
    • Администратор должен видеть контролы для редактирования, удаления и добавления валюты и иметь доступ к соответствующим действиям.
    • В случае попытки неавторизованного доступа на любую из страниц - перенаправлять на (/login).
  • Контроль прав доступа нужно реализовать в классах Policy.
  • Проверка критерия предоставления доступа должна происходить в методах класса полиси. То есть в контроллерах в итоге должна быть проверка типа
if (Gate::denies(‘create', $post)) ...

вместо

if (Gate::denies(‘isAdmin', $post)) …

Запуск тестов

  1. Создайте APP_URL в .env

  2. Запустите тесты

php artisan dusk

Запуск тестов c Homestead

Зайдите на виртуальную машину через ssh из папки, где установлен Homestead

vagrant ssh

Перейдите в директорию проекта и запустите

php artisan serve --host=192.168.10.10 --port=8080

Установите в '.env' строку

APP_URL=http://192.168.10.10:8080

Теперь можно запустить тесты.

php artisan dusk

см. https://laravel.com/docs/master/dusk

Дополнительно

Примеры из лекции доступны здесь: https://github.com/Antarus66/Auth-samples