From 4f01437bb5363d3b9b02573ea0df084dfcb8dea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mois=C3=A9s=20de=20Jes=C3=BAs=20Cort=C3=A9s=20Castellanos?= Date: Thu, 16 Jan 2025 21:44:29 -0600 Subject: [PATCH] ADD: Historial de cambios y correcciones menores - ADD: Observador de roles - ADD: Activar sesion en API - ADD: Historial de cambios --- app/Events/UpdateRoleUser.php | 2 +- app/Http/Controllers/Admin/RoleController.php | 2 +- app/Http/Controllers/ChangelogController.php | 94 +++++++++++++++++++ .../Controllers/System/SystemController.php | 2 +- app/Models/Role.php | 20 ++++ app/Observers/RoleObserver.php | 73 ++++++++++++++ app/Providers/ObserverProvider.php | 3 + bootstrap/app.php | 5 + composer.json | 12 +++ config/app.php | 2 +- config/permission.php | 2 +- database/seeders/RoleSeeder.php | 2 +- lang/es/role.php | 9 ++ lang/es/user.php | 8 +- routes/api.php | 3 + 15 files changed, 229 insertions(+), 10 deletions(-) create mode 100644 app/Http/Controllers/ChangelogController.php create mode 100644 app/Models/Role.php create mode 100644 app/Observers/RoleObserver.php create mode 100644 lang/es/role.php diff --git a/app/Events/UpdateRoleUser.php b/app/Events/UpdateRoleUser.php index e27ce7e..de4d0e2 100644 --- a/app/Events/UpdateRoleUser.php +++ b/app/Events/UpdateRoleUser.php @@ -3,12 +3,12 @@ * @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved */ +use App\Models\Role; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Spatie\Permission\Models\Role; /** * Role de usuario actualizado diff --git a/app/Http/Controllers/Admin/RoleController.php b/app/Http/Controllers/Admin/RoleController.php index f05b0fe..fae2c6a 100644 --- a/app/Http/Controllers/Admin/RoleController.php +++ b/app/Http/Controllers/Admin/RoleController.php @@ -7,10 +7,10 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Roles\RoleStoreRequest; use App\Http\Requests\Roles\RoleUpdateRequest; +use App\Models\Role; use App\Supports\QuerySupport; use Illuminate\Http\Request; use Notsoweb\ApiResponse\Enums\ApiResponse; -use Spatie\Permission\Models\Role; /** * Roles del sistema diff --git a/app/Http/Controllers/ChangelogController.php b/app/Http/Controllers/ChangelogController.php new file mode 100644 index 0000000..02c9e18 --- /dev/null +++ b/app/Http/Controllers/ChangelogController.php @@ -0,0 +1,94 @@ + + * + * @version 1.0.0 + */ +class ChangelogController extends Controller +{ + /** + * Cambios del sistema + */ + public function __invoke() + { + return ApiResponse::OK->response(array_reverse([ + [ + 'version' => '0.9.0', + 'date' => '2024-12-13', + 'changes' => [ + 'ADD: Personalización de stubs', + 'ADD: Notificaciones en tiempo real básico.', + 'ADD: Registro de usuarios', + 'ADD: Sistema de autenticación', + 'ADD: Instalación de Passport', + 'INIT: Commit inicial', + ] + ], + [ + 'version' => '0.9.1', + 'date' => '2024-12-16', + 'changes' => [ + 'UPDATE: Variables de entorno', + 'ADD: Logo de aplicación administrado en Backend.', + ] + ], + [ + 'version' => '0.9.2', + 'date' => '2024-12-16', + 'changes' => [ + 'UPDATE: Correcciones visuales en administración de usuarios.', + ] + ], + [ + 'version' => '0.9.3', + 'date' => '2024-12-27', + 'changes' => [ + 'ADD: Visualización de Usuarios conectados en tiempo real.', + 'UPDATE: Notificaciones en tiempo real personalizadas.', + ] + ], + [ + 'version' => '0.9.4', + 'date' => '2024-12-28', + 'changes' => [ + 'REFACTOR: Refactorización de código y documentación.', + ] + ], + [ + 'version' => '0.9.5', + 'date' => '2025-01-03', + 'changes' => [ + 'ADD: Historial de acciones general.', + 'ADD: Historial de acciones del los usuarios.', + 'ADD: Monitorización de aplicación mediante Laravel Pulse.', + ] + ], + [ + 'version' => '0.9.6', + 'date' => '2025-01-06', + 'changes' => [ + 'ADD: Sistema de recuperación de contraseña.', + ] + ], + [ + 'version' => '0.9.7', + 'date' => '2025-01-16', + 'changes' => [ + 'ADD: Historial de cambios retornado en API.', + 'UPDATE: Permitir el usuario de las sesiones para la API.', + 'ADD: Comando para iniciar o detener todos los servicios', + 'ADD: Observador de roles.', + ] + ] + ])); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/System/SystemController.php b/app/Http/Controllers/System/SystemController.php index bf78c64..5555b06 100644 --- a/app/Http/Controllers/System/SystemController.php +++ b/app/Http/Controllers/System/SystemController.php @@ -4,9 +4,9 @@ */ use App\Http\Controllers\Controller; +use App\Models\Role; use Notsoweb\ApiResponse\Enums\ApiResponse; use Spatie\Permission\Models\Permission; -use Spatie\Permission\Models\Role; /** * Recursos del sistema diff --git a/app/Models/Role.php b/app/Models/Role.php new file mode 100644 index 0000000..1128963 --- /dev/null +++ b/app/Models/Role.php @@ -0,0 +1,20 @@ + + * + * @version 1.0.0 + */ +class Role extends ModelsRole +{ + use Extended; +} diff --git a/app/Observers/RoleObserver.php b/app/Observers/RoleObserver.php new file mode 100644 index 0000000..8bc8761 --- /dev/null +++ b/app/Observers/RoleObserver.php @@ -0,0 +1,73 @@ + + * + * @version 1.0.0 + */ +class RoleObserver +{ + /** + * Manipulador del evento "created" del modelo Role + */ + public function created(Role $role): void + { + UserEvent::report( + model: $role, + event: __FUNCTION__ + ); + } + + /** + * Manipulador del evento "updated" del modelo Role + */ + public function updated(Role $role): void + { + UserEvent::report( + model: $role, + event: __FUNCTION__, + reportChanges: true + ); + } + + /** + * Manipulador del evento "deleted" del modelo Role + */ + public function deleted(Role $role): void + { + UserEvent::report( + model: $role, + event: __FUNCTION__, + ); + } + + /** + * Manipulador del evento "restored" del modelo Role + */ + public function restored(Role $role): void + { + UserEvent::report( + model: $role, + event: __FUNCTION__, + ); + } + + /** + * Manipulador del evento "force deleted" del modelo Role + */ + public function forceDeleted(Role $role): void + { + UserEvent::report( + model: $role, + event: __FUNCTION__, + ); + } +} diff --git a/app/Providers/ObserverProvider.php b/app/Providers/ObserverProvider.php index df328fc..a3a2eeb 100644 --- a/app/Providers/ObserverProvider.php +++ b/app/Providers/ObserverProvider.php @@ -3,7 +3,9 @@ * @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved */ +use App\Models\Role; use App\Models\User; +use App\Observers\RoleObserver; use App\Observers\UserObserver; use Illuminate\Support\ServiceProvider; @@ -30,5 +32,6 @@ public function register(): void public function boot(): void { User::observe([UserObserver::class]); + Role::observe([RoleObserver::class]); } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 0554c7a..019991b 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -4,6 +4,7 @@ use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; use Illuminate\Http\Request; +use Illuminate\Session\Middleware\StartSession; use Notsoweb\ApiResponse\Enums\ApiResponse; use Notsoweb\LaravelCore\Http\APIException; use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException; @@ -20,6 +21,10 @@ attributes: ['middleware' => ['auth:api']] ) ->withMiddleware(function (Middleware $middleware) { + $middleware->group('api', [ + StartSession::class, + ]); + $middleware->validateCsrfTokens(except: [ 'sanctum/csrf-cookie', 'user/*' diff --git a/composer.json b/composer.json index 8b5f639..aa83cd6 100644 --- a/composer.json +++ b/composer.json @@ -98,6 +98,18 @@ ], "broadcast:status": [ "pm2 show holos-broadcasts" + ], + "services:start": [ + "composer run jobs:start", + "composer run broadcast:start" + ], + "services:stop": [ + "composer run jobs:stop", + "composer run broadcast:stop" + ], + "services:status": [ + "composer run jobs:status", + "composer run broadcast:status" ] }, "extra": { diff --git a/config/app.php b/config/app.php index 3352934..cfeb889 100644 --- a/config/app.php +++ b/config/app.php @@ -12,7 +12,7 @@ | other UI elements where an application name needs to be displayed. | */ - 'version' => '0.9.5', + 'version' => '0.9.7', 'name' => env('APP_NAME', 'Laravel'), diff --git a/config/permission.php b/config/permission.php index 2a520f3..44f5228 100644 --- a/config/permission.php +++ b/config/permission.php @@ -24,7 +24,7 @@ * `Spatie\Permission\Contracts\Role` contract. */ - 'role' => Spatie\Permission\Models\Role::class, + 'role' => App\Models\Role::class, ], diff --git a/database/seeders/RoleSeeder.php b/database/seeders/RoleSeeder.php index 926b728..9a348ba 100644 --- a/database/seeders/RoleSeeder.php +++ b/database/seeders/RoleSeeder.php @@ -4,10 +4,10 @@ */ use App\Models\PermissionType; +use App\Models\Role; use Illuminate\Database\Seeder; use Notsoweb\LaravelCore\Traits\MySql\RolePermission; use Spatie\Permission\Models\Permission; -use Spatie\Permission\Models\Role; /** * Roles y permisos diff --git a/lang/es/role.php b/lang/es/role.php new file mode 100644 index 0000000..8493470 --- /dev/null +++ b/lang/es/role.php @@ -0,0 +1,9 @@ + 'El rol ":model" ha sido creado', + 'updated' => 'El rol ":model" ha sido actualizado', + 'deleted' => 'El rol ":model" ha sido eliminado', + 'restored' => 'El rol ":model" ha sido restaurado', +]; + diff --git a/lang/es/user.php b/lang/es/user.php index 0ae69c3..5309ad3 100644 --- a/lang/es/user.php +++ b/lang/es/user.php @@ -1,9 +1,9 @@ 'El usuario :model ha sido creado', - 'updated' => 'El usuario :model ha sido actualizado', - 'deleted' => 'El usuario :model ha sido eliminado', - 'restored' => 'El usuario :model ha sido restaurado', + 'created' => 'El usuario ":model" ha sido creado', + 'updated' => 'El usuario ":model" ha sido actualizado', + 'deleted' => 'El usuario ":model" ha sido eliminado', + 'restored' => 'El usuario ":model" ha sido restaurado', ]; diff --git a/routes/api.php b/routes/api.php index 8fc8619..ade1541 100644 --- a/routes/api.php +++ b/routes/api.php @@ -9,6 +9,7 @@ use App\Http\Controllers\System\NotificationController; use App\Http\Controllers\System\SystemController; use App\Http\Controllers\Admin\UserController; +use App\Http\Controllers\ChangelogController; use App\Http\Controllers\ServerController; use Illuminate\Support\Facades\Route; @@ -65,6 +66,8 @@ }); Route::post('auth/logout', [LoginController::class, 'logout'])->name('auth.logout'); + + Route::get('changelogs', ChangelogController::class)->name('changelogs'); }); Route::prefix('resources')->name('resources.')->group(function() {