forked from admin/services_core
big update base struktur tahap 1
This commit is contained in:
+197
-43
@@ -1,80 +1,128 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\Audit\AuditLogController;
|
||||
use App\Http\Controllers\AuthController;
|
||||
use App\Http\Controllers\File\StoredFileController;
|
||||
use App\Http\Controllers\Material\MaterialController;
|
||||
use App\Http\Controllers\Menu\MenuController;
|
||||
use App\Http\Controllers\Menu\MenuGroupController;
|
||||
use App\Http\Controllers\Menu\MenuListController;
|
||||
use App\Http\Controllers\Nas\NasResourceController;
|
||||
use App\Http\Controllers\Profile\ProfileController;
|
||||
use App\Http\Controllers\Tenant\TenantController;
|
||||
use App\Http\Controllers\Ticket\TicketController;
|
||||
use App\Http\Controllers\Ticket\TicketIncidentTypeController;
|
||||
use App\Http\Controllers\Ticket\TicketTypeController;
|
||||
use App\Http\Controllers\Ticket\TicketWorkflowController;
|
||||
use App\Http\Controllers\Ticket\TicketIncidentTypeController;
|
||||
use App\Http\Controllers\Material\MaterialController;
|
||||
use App\Http\Controllers\Audit\AuditLogController;
|
||||
use App\Http\Controllers\User\UserController;
|
||||
use App\Http\Controllers\Wilayah\WilayahController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::post('/login', [AuthController::class, 'login']);
|
||||
Route::post('/register', [AuthController::class, 'register']);
|
||||
Route::post('/register/verify', [AuthController::class, 'verifyRegistration']);
|
||||
Route::post('/register/resend-code', [AuthController::class, 'resendVerificationCode']);
|
||||
|
||||
Route::middleware(['auth:sanctum', 'tenant.context'])->group(function () {
|
||||
|
||||
// Route::prefix('tickets')->group(function () {
|
||||
// Route::get('/', [TicketController::class, 'index']);
|
||||
// Route::post('/', [TicketController::class, 'store']);
|
||||
// });
|
||||
Route::get('/generate-token', function () {
|
||||
foreach ([
|
||||
'mikrotiks' => ['resource' => 'mikrotik', 'menu' => 'nas-mikrotik'],
|
||||
'package-profiles' => ['resource' => 'package-profile', 'menu' => 'nas-package-profiles'],
|
||||
'olts' => ['resource' => 'olt', 'menu' => 'nas-olt'],
|
||||
'webfig-devices' => ['resource' => 'webfig', 'menu' => 'nas-webfig'],
|
||||
] as $path => $nas) {
|
||||
Route::prefix("nas/{$path}")
|
||||
->middleware("menu.resource:{$nas['menu']}")
|
||||
->controller(NasResourceController::class)
|
||||
->group(function () use ($nas, $path) {
|
||||
Route::get('/', 'index')
|
||||
->name("nas.{$path}.index")
|
||||
->defaults('nas_resource', $nas['resource']);
|
||||
Route::post('/', 'store')
|
||||
->name("nas.{$path}.store")
|
||||
->defaults('nas_resource', $nas['resource']);
|
||||
Route::get('/{id}', 'show')
|
||||
->name("nas.{$path}.show")
|
||||
->whereNumber('id')
|
||||
->defaults('nas_resource', $nas['resource']);
|
||||
Route::put('/{id}', 'update')
|
||||
->name("nas.{$path}.update")
|
||||
->whereNumber('id')
|
||||
->defaults('nas_resource', $nas['resource']);
|
||||
Route::patch('/{id}', 'update')
|
||||
->name("nas.{$path}.patch")
|
||||
->whereNumber('id')
|
||||
->defaults('nas_resource', $nas['resource']);
|
||||
Route::delete('/{id}', 'destroy')
|
||||
->name("nas.{$path}.destroy")
|
||||
->whereNumber('id')
|
||||
->defaults('nas_resource', $nas['resource']);
|
||||
});
|
||||
}
|
||||
|
||||
$user = \App\Models\User::find(1);
|
||||
Route::apiResource('tickets', TicketController::class)
|
||||
->middleware('menu.resource:ticketing-ticket');
|
||||
|
||||
return $user->createToken(
|
||||
'master-token'
|
||||
)->plainTextToken;
|
||||
|
||||
});
|
||||
|
||||
Route::middleware('auth:sanctum')->group(function () {
|
||||
|
||||
Route::apiResource('tickets', TicketController::class);
|
||||
|
||||
Route::apiResource('ticket-types', TicketTypeController::class);
|
||||
Route::apiResource('ticket-incident-types', TicketIncidentTypeController::class);
|
||||
Route::apiResource('ticket-types', TicketTypeController::class)
|
||||
->middleware('menu.resource:ticketing-ticket-types');
|
||||
Route::apiResource('ticket-incident-types', TicketIncidentTypeController::class)
|
||||
->middleware('menu.resource:ticketing-ticket-incidents');
|
||||
|
||||
Route::prefix('tickets/{ticket}')
|
||||
->controller(TicketWorkflowController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/workflow', 'history');
|
||||
Route::get('/workflow', 'history')
|
||||
->middleware('menu.permission:ticketing-ticket,view');
|
||||
|
||||
Route::post('/assign', 'assign');
|
||||
Route::post('/reassign', 'reassign');
|
||||
Route::post('/assign', 'assign')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
Route::post('/reassign', 'reassign')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
|
||||
Route::post('/approve', 'approve');
|
||||
Route::post('/reject', 'reject');
|
||||
Route::post('/approve', 'approve')
|
||||
->middleware('menu.permission:ticketing-approval,approve');
|
||||
Route::post('/reject', 'reject')
|
||||
->middleware('menu.permission:ticketing-approval,approve');
|
||||
|
||||
Route::post('/start', 'start');
|
||||
Route::post('/start', 'start')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
|
||||
Route::post('/pending', 'pending');
|
||||
Route::post('/resume', 'resume');
|
||||
Route::post('/pending', 'pending')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
Route::post('/resume', 'resume')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
|
||||
Route::post('/resolve', 'resolve');
|
||||
Route::post('/resolve', 'resolve')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
|
||||
Route::post('/close', 'close');
|
||||
Route::post('/close', 'close')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
|
||||
Route::post('/cancel', 'cancel');
|
||||
Route::post('/cancel', 'cancel')
|
||||
->middleware('menu.permission:ticketing-ticket,delete');
|
||||
|
||||
Route::post('/escalate', 'escalate');
|
||||
Route::post('/escalate', 'escalate')
|
||||
->middleware('menu.permission:ticketing-ticket,update');
|
||||
});
|
||||
|
||||
|
||||
Route::prefix('materials')
|
||||
->middleware('menu.resource:ticketing-material')
|
||||
->controller(MaterialController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index');
|
||||
Route::post('/assign', 'assign');
|
||||
Route::post('/transfer', 'transfer');
|
||||
Route::post('/return', 'return');
|
||||
Route::get('/', 'index');
|
||||
Route::post('/assign', 'assign');
|
||||
Route::post('/transfer', 'transfer');
|
||||
Route::post('/return', 'return');
|
||||
|
||||
Route::get('/user/{user_id}', 'listByUser');
|
||||
Route::get('/history/{barcode_id}', 'history');
|
||||
Route::get('/user/{user_id}', 'listByUser');
|
||||
Route::get('/history/{barcode_id}', 'history');
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Route::prefix('audit-logs')
|
||||
->middleware('access.level:tenant_owner')
|
||||
->controller(AuditLogController::class)
|
||||
->group(function () {
|
||||
|
||||
@@ -83,4 +131,110 @@ Route::middleware('auth:sanctum')->group(function () {
|
||||
Route::get('/{id}', 'show');
|
||||
});
|
||||
|
||||
Route::prefix('me')
|
||||
->group(function () {
|
||||
Route::get('/menus', [MenuController::class, 'myMenus']);
|
||||
Route::get('/profile', [ProfileController::class, 'show']);
|
||||
Route::put('/profile', [ProfileController::class, 'update']);
|
||||
});
|
||||
|
||||
Route::prefix('files')->controller(StoredFileController::class)->group(function () {
|
||||
Route::get('/', 'index');
|
||||
Route::post('/', 'store');
|
||||
Route::get('/{storedFile}', 'show');
|
||||
Route::get('/{storedFile}/temporary-url', 'temporaryUrl');
|
||||
Route::delete('/{storedFile}', 'destroy');
|
||||
});
|
||||
|
||||
Route::get('wilayah/alamat-lengkap', [WilayahController::class, 'alamatLengkap'])
|
||||
->name('wilayah.alamat-lengkap');
|
||||
Route::prefix('wilayah/options')->controller(WilayahController::class)->group(function () {
|
||||
Route::get('/provinsi', 'provinsiOptions')->name('wilayah.options.provinsi');
|
||||
Route::get('/kabupaten/{provinsi}', 'kabupatenOptions')->name('wilayah.options.kabupaten');
|
||||
Route::get('/kecamatan/{kabupaten}', 'kecamatanOptions')->name('wilayah.options.kecamatan');
|
||||
Route::get('/desa/{kecamatan}', 'desaOptions')->name('wilayah.options.desa');
|
||||
});
|
||||
|
||||
foreach ([
|
||||
'desa' => 'wilayah-desa',
|
||||
'kecamatan' => 'wilayah-kecamatan',
|
||||
'kabupaten' => 'wilayah-kabupaten',
|
||||
'provinsi' => 'wilayah-provinsi',
|
||||
] as $tingkat => $menuSlug) {
|
||||
$readRoutes = [
|
||||
Route::get("wilayah/{$tingkat}", [WilayahController::class, 'index'])
|
||||
->name("wilayah.{$tingkat}.index"),
|
||||
Route::get("wilayah/{$tingkat}/{wilayah}", [WilayahController::class, 'show'])
|
||||
->name("wilayah.{$tingkat}.show")
|
||||
->whereNumber('wilayah'),
|
||||
];
|
||||
$writeRoutes = [
|
||||
Route::post("wilayah/{$tingkat}", [WilayahController::class, 'store'])
|
||||
->name("wilayah.{$tingkat}.store"),
|
||||
Route::put("wilayah/{$tingkat}/{wilayah}", [WilayahController::class, 'update'])
|
||||
->name("wilayah.{$tingkat}.update")
|
||||
->whereNumber('wilayah'),
|
||||
Route::patch("wilayah/{$tingkat}/{wilayah}", [WilayahController::class, 'update'])
|
||||
->name("wilayah.{$tingkat}.patch")
|
||||
->whereNumber('wilayah'),
|
||||
Route::delete("wilayah/{$tingkat}/{wilayah}", [WilayahController::class, 'destroy'])
|
||||
->name("wilayah.{$tingkat}.destroy")
|
||||
->whereNumber('wilayah'),
|
||||
];
|
||||
|
||||
foreach ($readRoutes as $wilayahRoute) {
|
||||
$wilayahRoute->defaults('tingkat', $tingkat);
|
||||
}
|
||||
|
||||
foreach ($writeRoutes as $wilayahRoute) {
|
||||
$wilayahRoute->defaults('tingkat', $tingkat)
|
||||
->middleware("menu.resource:{$menuSlug}");
|
||||
}
|
||||
}
|
||||
|
||||
Route::apiResource('menus', MenuListController::class)
|
||||
->parameters(['menus' => 'menu_list'])
|
||||
->middleware('access.level:master_admin');
|
||||
Route::apiResource('menu-groups', MenuGroupController::class)
|
||||
->middleware([
|
||||
'access.level:tenant_owner',
|
||||
'menu.resource:users-group-menus',
|
||||
]);
|
||||
Route::apiResource('tenants', TenantController::class)
|
||||
->only(['index', 'show'])
|
||||
->middleware('access.level:tenant_owner');
|
||||
Route::apiResource('tenants', TenantController::class)
|
||||
->except(['index', 'show'])
|
||||
->middleware('access.level:master_admin');
|
||||
Route::apiResource('users', UserController::class)
|
||||
->middleware([
|
||||
'access.level:tenant_owner',
|
||||
'menu.resource:users-user',
|
||||
]);
|
||||
|
||||
Route::prefix('menu-groups/{menu_group}')
|
||||
->middleware([
|
||||
'access.level:tenant_owner',
|
||||
'menu.permission:users-group-menus,update',
|
||||
])
|
||||
->controller(MenuGroupController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/menus', 'menus');
|
||||
Route::get('/available-menus', 'availableMenus');
|
||||
Route::put('/menus', 'syncMenus');
|
||||
});
|
||||
|
||||
Route::prefix('users/{user}')
|
||||
->middleware([
|
||||
'access.level:tenant_owner',
|
||||
'menu.permission:users-group-menus,update',
|
||||
])
|
||||
->controller(MenuGroupController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/menu-groups', 'userAssignments');
|
||||
Route::put('/menu-groups', 'syncUserAssignments');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user