From 595b06d0126bcac88b17209eff939dfa63e0137d Mon Sep 17 00:00:00 2001 From: LukiBeg Date: Tue, 28 Oct 2025 17:26:08 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20implementar=20sistema=20de=20autentica?= =?UTF-8?q?=C3=A7=C3=A3o=20e=20gerenciamento=20de=20usu=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Adicionar CreateUserController para criação de usuários com validação - Implementar LogoutController para logout seguro com invalidação de sessão - Atualizar UserController para dashboard com listagem de usuários - Configurar modelo User com campos fillable e cast para permissions - Criar UserService para lógica de negócio de criação de usuários - Implementar Gate de autorização no AppServiceProvider --- app/Http/Controllers/CreateUserController.php | 8 ++++++-- app/Http/Controllers/LogoutController.php | 12 ++++++++++-- app/Http/Controllers/UserController.php | 2 -- app/Models/User.php | 1 + app/Providers/AppServiceProvider.php | 7 ++++++- app/Services/UserService.php | 3 +-- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/CreateUserController.php b/app/Http/Controllers/CreateUserController.php index 66d11be..aa4b366 100644 --- a/app/Http/Controllers/CreateUserController.php +++ b/app/Http/Controllers/CreateUserController.php @@ -20,7 +20,11 @@ public function createUsers(Request $request): RedirectResponse 'password' => 'required|string|min:8', ]); - $user = $this->userService->createUser($validated); - return redirect()->route('users.view', ['user' => $user]); + try { + $user = $this->userService->createUser($validated); + return redirect()->route('users.view', ['user' => $user], 200)->with('message', 'Usuário cadastrado com sucesso!'); + } catch (\Exception $e) { + return redirect()->route('users.create', status: 403)->with('error', $e->getMessage()); + } } } diff --git a/app/Http/Controllers/LogoutController.php b/app/Http/Controllers/LogoutController.php index f9ed454..903f193 100644 --- a/app/Http/Controllers/LogoutController.php +++ b/app/Http/Controllers/LogoutController.php @@ -4,9 +4,17 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; + class LogoutController extends Controller { - public function logout(User $user){ - $user->tokens()->delete(); + public function logout(Request $request) + { + Auth::logout(); + + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + return redirect('/')->with('success', 'Logout efetuado com sucesso!'); } } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a44158d..35b238c 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -12,9 +12,7 @@ class UserController extends Controller public function __construct(UserService $userService) {} public function dashboard(Request $request): View { - $users = User::all(); - $users->tokens()->delete(); return view('dashboard', ['users' => $users]); } } diff --git a/app/Models/User.php b/app/Models/User.php index a6ab88e..f5b0a55 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -44,6 +44,7 @@ protected function casts(): array return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', + 'permissions' => 'array' ]; } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..37d183c 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,8 +2,11 @@ namespace App\Providers; +use Illuminate\Support\Facades\Gate; +use App\Models\User; use Illuminate\Support\ServiceProvider; + class AppServiceProvider extends ServiceProvider { /** @@ -19,6 +22,8 @@ public function register(): void */ public function boot(): void { - // + Gate::define('createUser', function (User $user) { + return $user->permissions; + }); } } diff --git a/app/Services/UserService.php b/app/Services/UserService.php index c98c88b..d72284f 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -3,15 +3,14 @@ namespace App\Services; use App\Models\User; +use Illuminate\Support\Facades\Gate; class UserService { public function __construct(protected User $user) {} - public function createUser(array $user) { - return User::create($user); } }