Laravel как всегда развивается и процветает делая нашу жизнь разработчиков проще и проще. Сегодня поговорим вкратце про кастомную авторизацию на Laravel. Laravel авторизация стала довольно проста и не нужно особо ничего писать и придумывать.
Как сделать авторизацию Laravel?
Для начала просто создадим форму, в которой будет всего два полня. Это поле email и поле password. И, конечно же кнопка submit. Ведем форму на post маршрут auth.
<form class="auth-form auth-signup-form" method="post" action="{{route("auth")}}">
@csrf
<div class="email mb-3">
<label class="sr-only" for="signup-email">Ваш e-mail</label>
<input id="signup-email" name="email" type="email" class="form-control signup-email" placeholder="Ваш e-mail" required>
</div>
<div class="password mb-3">
<label class="sr-only" for="signup-password">Ваш пароль</label>
<input id="signup-password" name="password" type="password" class="form-control signup-password" placeholder="Ваш пароль" required>
</div>
<div class="text-center">
<button type="submit" class="btn app-btn-primary btn-block theme-btn mx-auto">Войти</button>
</div>
</form>
Далее, строим сами маршруты. Я сделал раздельно маршрут самой формы и ее обработки. Форма открывается через get запрос и выдает публичный метод login, контроллера Auth/LoginController. Обработка же формы ведется в том же контроллере, но в методе auth.
Файл маршрутов route/web.php у меня получился такой:
Route::get('/', function () {
return redirect()->route("auth");
})->name("home");
Route::get('/login', [\App\Http\Controllers\Auth\Login::class, 'login'])->name("login");
Route::post('/auth', [\App\Http\Controllers\Auth\Login::class, 'auth'])->name("auth");
Далее, как вы уже видели по превью этой статьи, сам код контроллера. Всего два метода которые полностью обеспечивают авторизацию пользователя. Ничего лишнего!
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
public function login()
{
return view("forms.auth");
}
public function auth(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
$data = $request->only('email', 'password');
if (Auth::attempt($data)) {
return redirect()->route("dashboard");
}
return redirect()->route("login")->with("error", config("custom_message.auth.error"));
}
}
Как видите, здесь даже валидация включена сразу же в классе Request. Единственное что остается сделать, это обозначить вывод ошибок при необходимости. Сама валидация в строке 18 выдает нам сессию errors, где содержится массив ошибок при неверной валидации. Строка 26 нам выдает сессию ошибки error которая является строкой, при неуспешной авторизации, возможно пароль неверный. Сам текст ошибки берем с новосозданного файла config/custom_message.php:
return [
"auth" => [
"error" => "Ошибка авторизации. Неверный email или пароль."
],
];
Таким образом все отлично и быстро работает.