<?php declare(strict_types=1); namespace App\Http\Controllers; use App\Http\Requests\AuthorizationRequest; use App\Services\AuthService; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Log; use Illuminate\View\View; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Auth; final class AuthController extends Controller { public function __construct( private readonly AuthService $authService ) { } public function login(): View { return view('public/login'); } public function authorization(AuthorizationRequest $request): RedirectResponse { $authorization = $request->getDto(); $result = $this->authService->authorization($authorization); if ($result->isError()) { if ($result->getCode() === Response::HTTP_UNAUTHORIZED) { Log::warning('Unauthorized ' . $authorization->getEmail() . ' [' . $request->getClientIp() . ']'); } return redirect()->route('login')->withInput()->withErrors($result->getMessage()); } $request->session()->regenerate(); Log::notice('Logged in ' . $authorization->getEmail() . ' [' . $request->getClientIp() . ']'); return redirect()->route('home'); } public function logout(Request $request): RedirectResponse { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect(route('login')); } }