Creating routes based on user_type and permissions to access routes
This commit is contained in:
parent
567605ceb9
commit
1da54d43f4
37
app/Http/Controllers/userController.php
Normal file
37
app/Http/Controllers/userController.php
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
|
||||
use Laravel\Fortify\Contracts\LogoutResponse as LogoutResponseContract;
|
||||
use Laravel\Fortify\Fortify;
|
||||
use Laravel\Fortify\Http\Controllers\AuthenticatedSessionController as FortifyAuthenticatedSessionController;
|
||||
|
||||
|
||||
|
||||
use App\Models\User;
|
||||
|
||||
class userController extends Controller
|
||||
{
|
||||
|
||||
public function authenticate(Request $request)
|
||||
{
|
||||
$request->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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -53,6 +53,7 @@ class Kernel extends HttpKernel
|
|||
* @var array<string, class-string|string>
|
||||
*/
|
||||
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,
|
||||
|
||||
];
|
||||
}
|
||||
|
|
|
|||
25
app/Http/Middleware/CheckSuperAdmin.php
Normal file
25
app/Http/Middleware/CheckSuperAdmin.php
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class CheckSuperAdmin
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if (auth()->user() && auth()->user()->user_type == 'Super_Admin') {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
return abort(403, 'Acesso não autorizado.');
|
||||
// return $next($request);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ class="fas fa-bars"></i></a>
|
|||
<li class="nav-item">
|
||||
<form method="POST" action="{{ route('logout') }}">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-link">Logout</button>
|
||||
<button type="submit" class="nav-link active">Logout</button>
|
||||
</form>
|
||||
{{-- <a href="{{route('logout')}}" class="nav-link active">
|
||||
<i class="nav-icon fas fa-tachometer-alt"></i>
|
||||
|
|
@ -140,6 +140,15 @@ class="fas fa-bars"></i></a>
|
|||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ route('test') }}" class="nav-link active">
|
||||
<i class="nav-icon fas fa-tachometer-alt"></i>
|
||||
<p>
|
||||
TestController
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link">
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@
|
|||
use App\Http\Controllers\NewPasswordController;
|
||||
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
||||
|
||||
use App\Http\Controllers\userController;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -40,6 +42,15 @@
|
|||
})->name('formulario');
|
||||
});
|
||||
|
||||
|
||||
Route::middleware(['auth', 'verified', 'checksuperadmin'])->group(function () {
|
||||
// Rotas protegidas que exigem verificação de e-mail e user_type Super_Admin
|
||||
Route::get('formulario', function () {
|
||||
return view('email/formAdmin');
|
||||
})->name('formulario');
|
||||
});
|
||||
|
||||
|
||||
// Rota responsavel por enviar o formulario
|
||||
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
||||
|
||||
|
|
@ -47,7 +58,7 @@
|
|||
return view('email/createUser');
|
||||
});
|
||||
|
||||
|
||||
Route::get('test', [userController::class,'test'])->name('test');
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user