- Introduced `ApplicationTypeEnum` and updated `ConnectionProtocolEnum` with labeled options, hints, and implementations for enhanced flexibility. - Modularized the `apps` routes into a separate file for improved structure and maintainability. - Added `CreateAppSelectionForm` Livewire component to handle app creation flows with dynamic protocol and type selection. - Enhanced `connected-apps` UI with a modal-based app creation mechanism.
92 lines
4.2 KiB
PHP
92 lines
4.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Enums\DefaultUserRole;
|
|
use App\Enums\Permissions\{PermissionPermissionEnum, RoleAndAppsPermissionEnum, UserPermissionEnum};
|
|
use App\Http\Controllers\{EntraController, KekaController};
|
|
use App\Http\Controllers\KekaOutlookController;
|
|
use App\Http\Controllers\{ResolveDashboardRouteController, SamlIdpController};
|
|
use Illuminate\Support\Facades\Route;
|
|
use Spatie\Permission\Middleware\{PermissionMiddleware, RoleMiddleware};
|
|
|
|
Route::redirect('/', '/dashboard')->name('home');
|
|
|
|
Route::get('saml/metadata', [SamlIdpController::class, 'metadata'])->name('saml.metadata');
|
|
Route::match(['get', 'post'], 'saml/sso', [SamlIdpController::class, 'sso'])->name('saml.sso');
|
|
|
|
Route::group(['middleware' => ['auth', 'verified']], function (): void {
|
|
Route::get('dashboard', ResolveDashboardRouteController::class)->name('dashboard');
|
|
|
|
Route::post('notifications/read-all', function () {
|
|
auth()->user()?->unreadNotifications->markAsRead();
|
|
|
|
return back();
|
|
})->name('notifications.read-all');
|
|
|
|
Route::get('notifications/{id}/resolve', App\Http\Controllers\ResolveNotificationRouteController::class)->name('notifications.resolve');
|
|
|
|
Route::livewire('tickets', 'pages::tickets.index')->name('tickets.index');
|
|
|
|
Route::prefix('dashboard')->name('dashboard.')->group(function (): void {
|
|
Route::livewire('/user', 'pages::dashboards.user')
|
|
->middleware(RoleMiddleware::using(DefaultUserRole::User))
|
|
->name('user');
|
|
Route::livewire('admin', 'pages::dashboards.admin')
|
|
->middleware(RoleMiddleware::using(DefaultUserRole::Admin))
|
|
->name('admin');
|
|
});
|
|
|
|
Route::prefix('access-manager')->name('access-manager.')->group(function (): void {
|
|
Route::prefix('roles-and-apps')->name('roles-and-apps.')
|
|
->middleware(PermissionMiddleware::using(RoleAndAppsPermissionEnum::Access))
|
|
->group(function (): void {
|
|
Route::livewire('roles-and-apps', 'pages::access-manager.roles-and-apps.index')->name('index');
|
|
Route::livewire('roles-and-apps/{id}', 'pages::access-manager.roles-and-apps.show')->name('show');
|
|
});
|
|
|
|
Route::prefix('users')->name('users.')
|
|
->middleware(PermissionMiddleware::using(UserPermissionEnum::Access))
|
|
->group(function (): void {
|
|
Route::livewire('users', 'pages::access-manager.users.index')->name('index');
|
|
});
|
|
|
|
Route::prefix('permissions')->name('permissions.')
|
|
->middleware(PermissionMiddleware::using(PermissionPermissionEnum::Access))
|
|
->group(function (): void {
|
|
Route::livewire('/', 'pages::access-manager.permissions.index')->name('index');
|
|
});
|
|
});
|
|
|
|
require __DIR__.'/apps.php';
|
|
});
|
|
|
|
Route::middleware(['auth', 'verified'])->prefix('entra')->name('entra.')->group(function (): void {
|
|
// Step 1: Kick off OAuth flow
|
|
Route::get('connect', [EntraController::class, 'connect'])->name('connect');
|
|
|
|
// Step 2: Microsoft redirects back here with auth code
|
|
Route::get('callback', [EntraController::class, 'callback'])->name('callback');
|
|
|
|
// Open Entra (refreshes token silently if expired)
|
|
Route::get('open', [EntraController::class, 'openEntra'])->name('open');
|
|
|
|
// Disconnect / revoke saved token
|
|
Route::delete('disconnect', [EntraController::class, 'disconnect'])->name('disconnect');
|
|
|
|
});
|
|
|
|
Route::middleware(['auth', 'verified'])->prefix('keka')->name('keka.')->group(function (): void {
|
|
Route::get('/connect', [KekaOutlookController::class, 'connect'])->name('connect');
|
|
Route::get('/callback', [KekaOutlookController::class, 'callback'])->name('callback');
|
|
Route::post('/disconnect', [KekaOutlookController::class, 'disconnect'])->name('disconnect');
|
|
});
|
|
|
|
Route::middleware(['auth', 'verified'])->prefix('keka')->name('keka.')->group(function (): void {
|
|
Route::get('connect', [KekaController::class, 'connect'])->name('connect');
|
|
Route::match(['get', 'post'], 'callback', [KekaController::class, 'callback'])->name('callback');
|
|
Route::delete('disconnect', [KekaController::class, 'disconnect'])->name('disconnect');
|
|
});
|
|
|
|
require __DIR__.'/settings.php';
|