From ea9115064c8dbfd406fc614119f1857ec4f91b4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mois=C3=A9s=20de=20Jes=C3=BAs=20Cort=C3=A9s=20Castellanos?= Date: Mon, 30 Dec 2024 15:49:28 -0600 Subject: [PATCH] UPDATE: Acceso a PULSE --- .../Controllers/Developer/AuthController.php | 57 +++++++++++++++++++ app/Providers/AppServiceProvider.php | 6 +- config/pulse.php | 1 + database/seeders/RoleSeeder.php | 11 +++- routes/web.php | 8 ++- 5 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/Developer/AuthController.php diff --git a/app/Http/Controllers/Developer/AuthController.php b/app/Http/Controllers/Developer/AuthController.php new file mode 100644 index 0000000..0e02a2f --- /dev/null +++ b/app/Http/Controllers/Developer/AuthController.php @@ -0,0 +1,57 @@ + + * + * @version 1.0.0 + */ +class AuthController extends Controller +{ + /** + * Iniciar sesión + */ + public function login(LoginRequest $request) + { + $user = User::where('email', $request->get('email'))->first(); + + if (!$user || !$user->validateForPassportPasswordGrant($request->get('password'))) { + return ApiResponse::UNPROCESSABLE_CONTENT->response([ + 'email' => ['Usuario no valido'] + ]); + } + + + if (Auth::guard('web')->check()) { + return ApiResponse::OK->response([ + "status" => 'logged' + ]); + } else { + return ApiResponse::UNPROCESSABLE_CONTENT->response([ + "status" => Auth::guard('web')->login($user, true) + ]); + } + } + + /** + * Cerrar sesión + */ + public function logout() + { + Auth::guard('web')->logout(); + + return ApiResponse::OK->response([ + "status" => 'logged out' + ]); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 9f7b833..4887794 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -40,7 +40,11 @@ public function boot(): void // Acceso a Pulse Gate::define('viewPulse', function (User $user) { - return $user->hasRole('developer'); + try { + return $user->hasPermissionTo('pulse', 'api'); + } catch (\Throwable $th) { + return false; + } }); } } diff --git a/config/pulse.php b/config/pulse.php index 7c00f81..85d79be 100644 --- a/config/pulse.php +++ b/config/pulse.php @@ -118,6 +118,7 @@ 'middleware' => [ 'web', + 'auth:web', Authorize::class, ], diff --git a/database/seeders/RoleSeeder.php b/database/seeders/RoleSeeder.php index 597ccf2..e1977ae 100644 --- a/database/seeders/RoleSeeder.php +++ b/database/seeders/RoleSeeder.php @@ -50,6 +50,12 @@ public function run(): void $roleDestroy ] = $this->onCRUD('roles', $roles, 'api'); + $pulse = PermissionType::create([ + 'name' => 'Sistema' + ]); + + $systemPulse = $this->onPermission('pulse', 'Monitoreo de Pulse', $pulse, 'api'); + // Desarrollador Role::create([ 'name' => 'developer', @@ -57,8 +63,6 @@ public function run(): void 'guard_name' => 'api' ])->givePermissionTo(Permission::all()); - - // Administrador Role::create([ 'name' => 'admin', @@ -74,7 +78,8 @@ public function run(): void $roleIndex, $roleCreate, $roleEdit, - $roleDestroy + $roleDestroy, + $systemPulse ); } } diff --git a/routes/web.php b/routes/web.php index f05d4e4..318c4c4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,8 +1,14 @@ name('login'); \ No newline at end of file +Route::get('/login', [ServerController::class, 'loginRequired'])->name('login'); + +Route::prefix('developer')->middleware('web')->group(function () { + Route::get('/login', [AuthController::class, 'login']); + Route::get('/logout', [AuthController::class, 'logout']); +});