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); } }