From 1da54d43f425006056f7c1509413e661a6900bf1 Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Wed, 26 Apr 2023 15:21:41 +0100 Subject: [PATCH] Creating routes based on user_type and permissions to access routes --- app/Http/Controllers/userController.php | 37 +++++++++++++++++++ app/Http/Kernel.php | 2 + app/Http/Middleware/CheckSuperAdmin.php | 25 +++++++++++++ .../Middleware/RedirectIfAuthenticated.php | 20 +++++++++- app/Providers/RouteServiceProvider.php | 5 +++ .../views/Templates/templateAdmin.blade.php | 11 +++++- routes/web.php | 13 ++++++- 7 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/userController.php create mode 100644 app/Http/Middleware/CheckSuperAdmin.php diff --git a/app/Http/Controllers/userController.php b/app/Http/Controllers/userController.php new file mode 100644 index 00000000..4b6f7f42 --- /dev/null +++ b/app/Http/Controllers/userController.php @@ -0,0 +1,37 @@ +validate([ + Fortify::username() => 'required|string', + 'password' => 'required|string', + ]); + + $user = User::where('email', $request->email)->first(); + + if ($user && Hash::check($request->password, $user->password)) { + return $user; + } + + return null; + } + +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 1fb53dce..cc45f63c 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -53,6 +53,7 @@ class Kernel extends HttpKernel * @var array */ protected $middlewareAliases = [ + 'checksuperadmin' => \App\Http\Middleware\CheckSuperAdmin::class, 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, @@ -63,5 +64,6 @@ class Kernel extends HttpKernel 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; } diff --git a/app/Http/Middleware/CheckSuperAdmin.php b/app/Http/Middleware/CheckSuperAdmin.php new file mode 100644 index 00000000..febe6663 --- /dev/null +++ b/app/Http/Middleware/CheckSuperAdmin.php @@ -0,0 +1,25 @@ +user() && auth()->user()->user_type == 'Super_Admin') { + return $next($request); + } + + return abort(403, 'Acesso não autorizado.'); + // return $next($request); + } +} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index afc78c4e..f5e7ba29 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -19,9 +19,27 @@ public function handle(Request $request, Closure $next, string ...$guards): Resp { $guards = empty($guards) ? [null] : $guards; + // foreach ($guards as $guard) { + // if (Auth::guard($guard)->check()) { + // return redirect(RouteServiceProvider::HOME); + // } + // } + foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { - return redirect(RouteServiceProvider::HOME); + $user = Auth::guard($guard)->user(); + + switch ($user->user_type) { + case 'Cliente': + return redirect(RouteServiceProvider::CLIENTE); + case 'Tecnicos': + return redirect(RouteServiceProvider::TECNICO); + case 'inspetor': + return redirect(RouteServiceProvider::INSPETOR); + // Adicione outros tipos de usuário e suas rotas aqui + default: + return redirect(RouteServiceProvider::HOME); + } } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 1a05c37d..23f6cbc2 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -19,6 +19,11 @@ class RouteServiceProvider extends ServiceProvider */ public const HOME = '/'; + // public const HOME = '/home'; + public const CLIENTE = '/cliente'; + public const TECNICO = '/Tecnicos'; + public const INSPETOR = '/inspetor'; + /** * Define your route model bindings, pattern filters, and other route configuration. */ diff --git a/resources/views/Templates/templateAdmin.blade.php b/resources/views/Templates/templateAdmin.blade.php index 01ca1653..26cb1dbb 100644 --- a/resources/views/Templates/templateAdmin.blade.php +++ b/resources/views/Templates/templateAdmin.blade.php @@ -121,7 +121,7 @@ class="fas fa-bars"> + +