Files
Nexora/routes/web.php
Javi 356f56eebd
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
first commit
2025-04-23 00:14:33 +06:00

79 lines
3.5 KiB
PHP

<?php
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\DocumentController;
use App\Http\Controllers\FolderController;
use App\Http\Controllers\PermissionController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\ProjectController;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\UserController;
use App\Livewire\ProjectShow;
use Illuminate\Support\Facades\Route;
use Livewire\Volt\Volt;
Route::get('/', function () {
return view('welcome');
})->name('home');
/*Route::view('dashboard', 'dashboard')
->middleware(['auth', 'verified'])
->name('dashboard');
Route::middleware(['auth'])->group(function () {
Route::redirect('settings', 'settings/profile');
Volt::route('settings/profile', 'settings.profile')->name('settings.profile');
Volt::route('settings/password', 'settings.password')->name('settings.password');
Volt::route('settings/appearance', 'settings.appearance')->name('settings.appearance');
});*/
require __DIR__.'/auth.php';
// Rutas autenticadas
Route::middleware(['auth', 'verified'])->group(function () {
// Dashboard
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
// Proyectos
Route::resource('projects', ProjectController::class);
Route::get('/projects/{project}', ProjectController::class)->name('projects.show');
Route::get('/projects/{project}', ProjectController::class)->name('projects.show')->middleware('can:view,project'); // Opcional: política de acceso
Route::get('/projects/{project}', ProjectShow::class)->name('projects.show');
// Documentos
Route::resource('documents', DocumentController::class);
Route::post('/documents/{document}/approve', [DocumentController::class, 'approve'])->name('documents.approve');
Route::post('/documents/{document}/comment', [DocumentController::class, 'addComment'])->name('documents.comment');
// Carpetas
Route::resource('folders', FolderController::class);
Route::post('/folders/{folder}/documents', [FolderController::class, 'storeDocument'])->name('folders.documents.store');
// Gestión de Usuarios
Route::resource('users', UserController::class)->except('show');
Route::put('/users/{user}/password', [UserController::class, 'updatePassword'])->name('users.password.update');
// Permisos y Roles
Route::resource('roles', RoleController::class)->except('show');
Route::resource('permissions', PermissionController::class)->only(['index', 'store', 'update']);
Route::post('/roles/{role}/permissions', [RoleController::class, 'syncPermissions'])->name('roles.permissions.sync');
// Perfil de usuario
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::get('/profile', [ProfileController::class, 'show'])->name('profile.show');
// Ruta para el perfil de usuario
Route::redirect('settings', 'settings/profile');
Volt::route('settings/profile', 'settings.profile')->name('settings.profile');
Volt::route('settings/password', 'settings.password')->name('settings.password');
Volt::route('settings/appearance', 'settings.appearance')->name('settings.appearance');
});
// API (para integraciones futuras)
Route::prefix('api')->middleware('auth:sanctum')->group(function () {
Route::get('/projects', [ProjectController::class, 'apiIndex']);
Route::post('/documents/upload', [DocumentController::class, 'apiStore']);
});