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>
|
* @var array<string, class-string|string>
|
||||||
*/
|
*/
|
||||||
protected $middlewareAliases = [
|
protected $middlewareAliases = [
|
||||||
|
'checksuperadmin' => \App\Http\Middleware\CheckSuperAdmin::class,
|
||||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||||
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
|
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||||
|
|
@ -63,5 +64,6 @@ class Kernel extends HttpKernel
|
||||||
'signed' => \App\Http\Middleware\ValidateSignature::class,
|
'signed' => \App\Http\Middleware\ValidateSignature::class,
|
||||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::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,11 +19,29 @@ public function handle(Request $request, Closure $next, string ...$guards): Resp
|
||||||
{
|
{
|
||||||
$guards = empty($guards) ? [null] : $guards;
|
$guards = empty($guards) ? [null] : $guards;
|
||||||
|
|
||||||
|
// foreach ($guards as $guard) {
|
||||||
|
// if (Auth::guard($guard)->check()) {
|
||||||
|
// return redirect(RouteServiceProvider::HOME);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
foreach ($guards as $guard) {
|
foreach ($guards as $guard) {
|
||||||
if (Auth::guard($guard)->check()) {
|
if (Auth::guard($guard)->check()) {
|
||||||
|
$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);
|
return redirect(RouteServiceProvider::HOME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ class RouteServiceProvider extends ServiceProvider
|
||||||
*/
|
*/
|
||||||
public const HOME = '/';
|
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.
|
* 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">
|
<li class="nav-item">
|
||||||
<form method="POST" action="{{ route('logout') }}">
|
<form method="POST" action="{{ route('logout') }}">
|
||||||
@csrf
|
@csrf
|
||||||
<button type="submit" class="btn btn-link">Logout</button>
|
<button type="submit" class="nav-link active">Logout</button>
|
||||||
</form>
|
</form>
|
||||||
{{-- <a href="{{route('logout')}}" class="nav-link active">
|
{{-- <a href="{{route('logout')}}" class="nav-link active">
|
||||||
<i class="nav-icon fas fa-tachometer-alt"></i>
|
<i class="nav-icon fas fa-tachometer-alt"></i>
|
||||||
|
|
@ -140,6 +140,15 @@ class="fas fa-bars"></i></a>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</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">
|
<li class="nav-item">
|
||||||
<a href="#" class="nav-link">
|
<a href="#" class="nav-link">
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
use App\Http\Controllers\NewPasswordController;
|
use App\Http\Controllers\NewPasswordController;
|
||||||
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
||||||
|
|
||||||
|
use App\Http\Controllers\userController;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -40,6 +42,15 @@
|
||||||
})->name('formulario');
|
})->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
|
// Rota responsavel por enviar o formulario
|
||||||
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
||||||
|
|
||||||
|
|
@ -47,7 +58,7 @@
|
||||||
return view('email/createUser');
|
return view('email/createUser');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::get('test', [userController::class,'test'])->name('test');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user