Авторизация и регистрация

Сначала надо запустить команду ниже, которая создаст в базе данных таблицы «users» и «password_resets».

php artisan migrate

Затем запустить команду ниже, которая создаст страницы для регистрации и авторизации пользователей.

php artisan make:auth

Страница регистрации станет доступна по ссылке «/register», а страница авторизации по ссылке  «/login».

В HTML ссылки на эти страницы рекомендуется указывать как на примере ниже.

<a href="{{ route('login') }}">Авторизация</a>
<a href="{{ route('register') }}">Регистрация</a>

Авторизация

Пример формы авторизации.

<form method="POST" action="{{ route('login') }}">
    @csrf              <!-- с версии Laravel 5.6 -->
    {{ csrf_field() }} <!-- до версии Laravel 5.5 -->

    <input type="email" name="email" value="{{ old('email') }}" required>
    @if ($errors->has('email'))
        {{ $errors->first('email') }}
    @endif

    <input type="password" name="password" required>
    @if ($errors->has('password'))
        {{ $errors->first('password') }}
    @endif

    <input type="submit" value="Войти">
</form>

После нескольких неудачных попыток авторизоваться, авторизация заблокируется на одну минуту.

Для авторизации достаточно отправить форму выше. Но также можно авторизоваться через код Auth::attempt().

Auth::attempt(['email' => $email, 'password' => $password]);

Запомнить меня

Чтобы пользователь снова не вводил свои данные при следующем посещении сайта, можно сохранять его данные авторизации. Для этого надо отправить пункт remember.

<form method="POST" action="{{ route('login') }}">
    // …
    <input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}> Remember Me
</form>

В базе данных в таблице «users» есть поле «remember_token», по которому определяется пользователь при следующем посещении.

Редирект после авторизации

Редирект после авторизации указывается в файле app/Http/Controllers/Auth/LoginController.php.

# app/Http/Controllers/Auth/LoginController.php

protected $redirectTo = '/home';

Регистрация

Пример формы регистрации.

<form method="POST" action="{{ route('register') }}">
    @csrf <!-- с версии Laravel 5.6 -->
    {{ csrf_field() }} <!-- до версии Laravel 5.5 -->

    <input type="text" name="name" value="{{ old('name') }}" required>
    @if ($errors->has('name'))
        {{ $errors->first('name') }}
    @endif

    <input type="email" name="email" value="{{ old('email') }}" required>
    @if ($errors->has('email'))
        {{ $errors->first('email') }}
    @endif

    <input type="password" name="password" required>
    @if ($errors->has('password'))
        {{ $errors->first('password') }}
    @endif

    <input type="password" name="password_confirmation" required>

    <input type="submit" value="Зарегистрироваться">
</form>

Выйти

По умолчанию, выйти из своей страницы можно по URL «/logout» через Post-запрос.

<!-- отправить форму при нажатии по ссылке (указана в onclick) -->
<a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit()">Log out</a>

<!-- форма для выхода из страницы -->
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none">
    {{ csrf_field()) }}
</form>

Также можно выйти через метод Auth::logout().

use Illuminate\Support\Facades\Auth;
// …

Auth::logout();