first&last

This commit is contained in:
sbb45
2026-03-20 15:47:17 +05:00
commit d6441abdd2
230 changed files with 20367 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
+18
View File
@@ -0,0 +1,18 @@
<?php
use Illuminate\Support\Facades\Broadcast;
/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/
Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
+19
View File
@@ -0,0 +1,19 @@
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
/*
|--------------------------------------------------------------------------
| Console Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of your Closure based console
| commands. Each Closure is bound to a command instance allowing a
| simple approach to interacting with each command's IO methods.
|
*/
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
+123
View File
@@ -0,0 +1,123 @@
<?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');
});
});