ADD: Historial de cambios y correcciones menores

- ADD: Observador de roles
- ADD: Activar sesion en API
- ADD: Historial de cambios
This commit is contained in:
Moisés de Jesús Cortés Castellanos 2025-01-16 21:44:29 -06:00
parent a076db9521
commit 4f01437bb5
15 changed files with 229 additions and 10 deletions

View File

@ -3,12 +3,12 @@
* @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved * @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/ */
use App\Models\Role;
use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Spatie\Permission\Models\Role;
/** /**
* Role de usuario actualizado * Role de usuario actualizado

View File

@ -7,10 +7,10 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Roles\RoleStoreRequest; use App\Http\Requests\Roles\RoleStoreRequest;
use App\Http\Requests\Roles\RoleUpdateRequest; use App\Http\Requests\Roles\RoleUpdateRequest;
use App\Models\Role;
use App\Supports\QuerySupport; use App\Supports\QuerySupport;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Notsoweb\ApiResponse\Enums\ApiResponse; use Notsoweb\ApiResponse\Enums\ApiResponse;
use Spatie\Permission\Models\Role;
/** /**
* Roles del sistema * Roles del sistema

View File

@ -0,0 +1,94 @@
<?php namespace App\Http\Controllers;
use Notsoweb\ApiResponse\Enums\ApiResponse;
/**
* @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
/**
* Controlador de cambios del sistema
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
* @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.',
]
]
]));
}
}

View File

@ -4,9 +4,9 @@
*/ */
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Role;
use Notsoweb\ApiResponse\Enums\ApiResponse; use Notsoweb\ApiResponse\Enums\ApiResponse;
use Spatie\Permission\Models\Permission; use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
/** /**
* Recursos del sistema * Recursos del sistema

20
app/Models/Role.php Normal file
View File

@ -0,0 +1,20 @@
<?php namespace App\Models;
/**
* @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
use Notsoweb\LaravelCore\Traits\Models\Extended;
use Spatie\Permission\Models\Role as ModelsRole;
/**
* Roles del sistema
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
* @version 1.0.0
*/
class Role extends ModelsRole
{
use Extended;
}

View File

@ -0,0 +1,73 @@
<?php namespace App\Observers;
/**
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
use App\Models\Role;
use App\Models\UserEvent;
/**
* Observador del modelo Role
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
* @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__,
);
}
}

View File

@ -3,7 +3,9 @@
* @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved * @copyright (c) 2024 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/ */
use App\Models\Role;
use App\Models\User; use App\Models\User;
use App\Observers\RoleObserver;
use App\Observers\UserObserver; use App\Observers\UserObserver;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
@ -30,5 +32,6 @@ public function register(): void
public function boot(): void public function boot(): void
{ {
User::observe([UserObserver::class]); User::observe([UserObserver::class]);
Role::observe([RoleObserver::class]);
} }
} }

View File

@ -4,6 +4,7 @@
use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware; use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Session\Middleware\StartSession;
use Notsoweb\ApiResponse\Enums\ApiResponse; use Notsoweb\ApiResponse\Enums\ApiResponse;
use Notsoweb\LaravelCore\Http\APIException; use Notsoweb\LaravelCore\Http\APIException;
use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException; use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
@ -20,6 +21,10 @@
attributes: ['middleware' => ['auth:api']] attributes: ['middleware' => ['auth:api']]
) )
->withMiddleware(function (Middleware $middleware) { ->withMiddleware(function (Middleware $middleware) {
$middleware->group('api', [
StartSession::class,
]);
$middleware->validateCsrfTokens(except: [ $middleware->validateCsrfTokens(except: [
'sanctum/csrf-cookie', 'sanctum/csrf-cookie',
'user/*' 'user/*'

View File

@ -98,6 +98,18 @@
], ],
"broadcast:status": [ "broadcast:status": [
"pm2 show holos-broadcasts" "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": { "extra": {

View File

@ -12,7 +12,7 @@
| other UI elements where an application name needs to be displayed. | other UI elements where an application name needs to be displayed.
| |
*/ */
'version' => '0.9.5', 'version' => '0.9.7',
'name' => env('APP_NAME', 'Laravel'), 'name' => env('APP_NAME', 'Laravel'),

View File

@ -24,7 +24,7 @@
* `Spatie\Permission\Contracts\Role` contract. * `Spatie\Permission\Contracts\Role` contract.
*/ */
'role' => Spatie\Permission\Models\Role::class, 'role' => App\Models\Role::class,
], ],

View File

@ -4,10 +4,10 @@
*/ */
use App\Models\PermissionType; use App\Models\PermissionType;
use App\Models\Role;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Notsoweb\LaravelCore\Traits\MySql\RolePermission; use Notsoweb\LaravelCore\Traits\MySql\RolePermission;
use Spatie\Permission\Models\Permission; use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
/** /**
* Roles y permisos * Roles y permisos

9
lang/es/role.php Normal file
View File

@ -0,0 +1,9 @@
<?php
return [
'created' => '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',
];

View File

@ -1,9 +1,9 @@
<?php <?php
return [ return [
'created' => 'El usuario :model ha sido creado', 'created' => 'El usuario ":model" ha sido creado',
'updated' => 'El usuario :model ha sido actualizado', 'updated' => 'El usuario ":model" ha sido actualizado',
'deleted' => 'El usuario :model ha sido eliminado', 'deleted' => 'El usuario ":model" ha sido eliminado',
'restored' => 'El usuario :model ha sido restaurado', 'restored' => 'El usuario ":model" ha sido restaurado',
]; ];

View File

@ -9,6 +9,7 @@
use App\Http\Controllers\System\NotificationController; use App\Http\Controllers\System\NotificationController;
use App\Http\Controllers\System\SystemController; use App\Http\Controllers\System\SystemController;
use App\Http\Controllers\Admin\UserController; use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\ChangelogController;
use App\Http\Controllers\ServerController; use App\Http\Controllers\ServerController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
@ -65,6 +66,8 @@
}); });
Route::post('auth/logout', [LoginController::class, 'logout'])->name('auth.logout'); Route::post('auth/logout', [LoginController::class, 'logout'])->name('auth.logout');
Route::get('changelogs', ChangelogController::class)->name('changelogs');
}); });
Route::prefix('resources')->name('resources.')->group(function() { Route::prefix('resources')->name('resources.')->group(function() {