Files
AirService_potyk/routes/web.php
T
2026-03-20 15:47:17 +05:00

124 lines
5.6 KiB
PHP

<?php
use App\Http\Controllers\AttachmentController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\ResetPasswordController;
use App\Livewire\Auth\LoginPage;
use App\Livewire\Dashboard\DashboardPage;
use App\Livewire\Directories\DepartmentsPage;
use App\Livewire\Directories\EquipmentCategoriesPage;
use App\Livewire\Directories\EquipmentPage;
use App\Livewire\Directories\RequestTypesPage;
use App\Livewire\MyRequests\MyRequestFormPage;
use App\Livewire\MyRequests\MyRequestsIndexPage;
use App\Livewire\Notifications\NotificationsPage;
use App\Livewire\Profile\ProfilePage;
use App\Livewire\Reports\EquipmentReportPage;
use App\Livewire\Reports\GeneralReportPage;
use App\Livewire\Reports\SlaReportPage;
use App\Livewire\Reports\TechniciansReportPage;
use App\Livewire\Requests\RequestFormPage;
use App\Livewire\Requests\RequestIndexPage;
use App\Livewire\Requests\RequestShowPage;
use App\Livewire\System\ActivityLogPage;
use App\Livewire\System\SettingsPage;
use App\Livewire\Tasks\MyTasksPage;
use App\Livewire\Users\UserFormPage;
use App\Livewire\Users\UserShowPage;
use App\Livewire\Users\UsersIndexPage;
use App\Services\ActivityLogService;
use App\Support\RoleRedirect;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
if (!auth()->check()) {
return redirect()->route('login');
}
return redirect()->route(RoleRedirect::routeFor(auth()->user()));
});
Route::middleware('guest')->group(function () {
Route::get('/login', LoginPage::class)->name('login');
Route::get('/forgot-password', [ForgotPasswordController::class, 'create'])->name('password.request');
Route::post('/forgot-password', [ForgotPasswordController::class, 'store'])->name('password.email');
Route::get('/reset-password/{token}', [ResetPasswordController::class, 'create'])->name('password.reset');
Route::post('/reset-password', [ResetPasswordController::class, 'store'])->name('password.store');
});
Route::post('/logout', function (Request $request, ActivityLogService $activityLogService) {
if (auth()->check()) {
$activityLogService->log(auth()->user(), auth()->user(), auth()->id(), 'logout', 'Выход из системы', $request->ip());
}
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect()->route('login')->with('success', 'Вы вышли из системы.');
})->middleware('auth')->name('logout');
Route::middleware(['auth', 'active_user'])->group(function () {
Route::get('/profile', ProfilePage::class)->name('profile');
Route::get('/notifications', NotificationsPage::class)->name('notifications.index');
Route::get('/requests/{request}', RequestShowPage::class)
->whereNumber('request')
->name('requests.show');
Route::get('/my-requests/{request}', RequestShowPage::class)
->whereNumber('request')
->name('my-requests.show');
Route::get('/requests/{request}/attachments/{attachment}', [AttachmentController::class, 'download'])
->whereNumber('request')
->whereNumber('attachment')
->name('attachments.download');
Route::middleware('role:admin,manager')->group(function () {
Route::get('/dashboard', DashboardPage::class)->name('dashboard');
Route::get('/requests', RequestIndexPage::class)->name('requests.index');
Route::get('/requests/create', RequestFormPage::class)->name('requests.create');
Route::get('/requests/{request}/edit', RequestFormPage::class)
->whereNumber('request')
->name('requests.edit');
Route::get('/users', UsersIndexPage::class)->name('users.index');
Route::get('/users/{user}', UserShowPage::class)
->whereNumber('user')
->name('users.show');
Route::get('/reports', fn () => redirect()->route('reports.general'))->name('reports');
Route::get('/reports/general', GeneralReportPage::class)->name('reports.general');
Route::get('/reports/technicians', TechniciansReportPage::class)->name('reports.technicians');
Route::get('/reports/sla', SlaReportPage::class)->name('reports.sla');
Route::get('/reports/equipment', EquipmentReportPage::class)->name('reports.equipment');
});
Route::middleware('role:admin')->group(function () {
Route::get('/users/create', UserFormPage::class)->name('users.create');
Route::get('/users/{user}/edit', UserFormPage::class)
->whereNumber('user')
->name('users.edit');
Route::get('/directories', fn () => redirect()->route('directories.departments'))->name('directories');
Route::get('/directories/departments', DepartmentsPage::class)->name('directories.departments');
Route::get('/directories/equipment-categories', EquipmentCategoriesPage::class)->name('directories.equipment-categories');
Route::get('/directories/request-types', RequestTypesPage::class)->name('directories.request-types');
Route::get('/directories/equipment', EquipmentPage::class)->name('directories.equipment');
Route::get('/activity-log', ActivityLogPage::class)->name('activity-log');
Route::get('/settings', SettingsPage::class)->name('settings');
});
Route::middleware('role:technician')->group(function () {
Route::get('/my-tasks', MyTasksPage::class)->name('my-tasks');
});
Route::middleware('role:client')->group(function () {
Route::get('/my-requests', MyRequestsIndexPage::class)->name('my-requests.index');
Route::get('/my-requests/create', MyRequestFormPage::class)->name('my-requests.create');
});
});