añadir funicionalidades de permisos y grupos
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled

This commit is contained in:
2025-04-27 23:43:22 +02:00
parent fa7c92bee2
commit 883daf32ed
51 changed files with 2673 additions and 441 deletions

View File

@@ -2,33 +2,14 @@
namespace App\Providers;
use App\Models\Document;
use App\Models\Project;
use App\Models\User;
use App\Policies\DocumentPolicy;
use App\Policies\PermissionPolicy;
use App\Policies\ProfilePolicy;
use App\Policies\ProjectPolicy;
use App\Policies\RolePolicy;
use App\Policies\UserPolicy;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Validator;
use Livewire\Livewire;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class AppServiceProvider extends ServiceProvider
{
protected $policies = [
User::class => UserPolicy::class,
User::class => ProfilePolicy::class,
Role::class => RolePolicy::class,
Permission::class => PermissionPolicy::class,
Document::class => DocumentPolicy::class,
Project::class => ProjectPolicy::class,
];
/**
* Register any application services.
*/
@@ -42,10 +23,23 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot(): void
{
//
// Configuración de componentes Blade
Blade::componentNamespace('App\\View\\Components', 'icons');
Blade::component('multiselect', \App\View\Components\Multiselect::class);
// Registro de componentes Livewire
Livewire::component('project-show', \App\Http\Livewire\ProjectShow::class);
Livewire::component('file-upload', \App\Http\Livewire\FileUpload::class);
Livewire::component('toolbar', \App\Http\Livewire\Toolbar::class);
// Validación personalizada
Validator::extend('max_upload_size', function ($attribute, $value, $parameters, $validator) {
$maxSize = env('MAX_UPLOAD_SIZE', 51200); // 50MB por defecto
$totalSize = array_reduce($value, function($sum, $file) {
return $sum + $file->getSize();
}, 0);
return $totalSize <= ($maxSize * 1024);
});
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Providers;
use App\Models\Document;
use App\Models\Folder;
use App\Models\Project;
use App\Models\User;
use App\Policies\DocumentPolicy;
use App\Policies\FolderPolicy;
use App\Policies\PermissionPolicy;
use App\Policies\ProfilePolicy;
use App\Policies\ProjectPolicy;
use App\Policies\RolePolicy;
use App\Policies\UserPolicy;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\ServiceProvider;
use Livewire\Livewire;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class AppServiceProvider extends ServiceProvider
{
protected $policies = [
User::class => UserPolicy::class,
User::class => ProfilePolicy::class,
Role::class => RolePolicy::class,
Permission::class => PermissionPolicy::class,
Document::class => DocumentPolicy::class,
Project::class => ProjectPolicy::class,
Folder::class => FolderPolicy::class,
];
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
//
Blade::componentNamespace('App\\View\\Components', 'icons');
Blade::component('multiselect', \App\View\Components\Multiselect::class);
Livewire::component('project-show', \App\Http\Livewire\ProjectShow::class);
Livewire::component('project-show', \App\Http\Livewire\FileUpload::class);
Livewire::component('toolbar', \App\Http\Livewire\Toolbar::class);
Validator::extend('max_upload_size', function ($attribute, $value, $parameters, $validator) {
$maxSize = env('MAX_UPLOAD_SIZE', 51200); // Default 50MB
$totalSize = array_reduce($value, function($sum, $file) {
return $sum + $file->getSize();
}, 0);
return $totalSize <= ($maxSize * 1024);
});
}
}

View File

@@ -0,0 +1,62 @@
<?php
namespace App\Providers;
//use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
use App\Models\User;
use App\Models\Document;
use App\Models\Project;
use App\Models\Folder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use App\Policies\UserPolicy;
use App\Policies\DocumentPolicy;
use App\Policies\ProjectPolicy;
use App\Policies\FolderPolicy;
use App\Policies\RolePolicy;
use App\Policies\PermissionPolicy;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array<class-string, class-string>
*/
protected $policies = [
User::class => UserPolicy::class,
Project::class => ProjectPolicy::class,
Folder::class => FolderPolicy::class,
Document::class => DocumentPolicy::class,
Role::class => RolePolicy::class,
Permission::class => PermissionPolicy::class,
];
/**
* Register services.
*/
public function register(): void
{
//
}
/**
* Bootstrap services.
*/
public function boot(): void
{
$this->registerPolicies();
// Configuración adicional de gates aquí si es necesario
Gate::before(function ($user, $ability) {
return $user->hasRole('admin') ? true : null;
});
}
}