GeoNetAgent, LDAPWeb, server-audit, server-connection
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

98 lines
5.5 KiB

<?php
use App\Http\Controllers\Api\V1\AuthController;
use App\Http\Controllers\Api\V1\DatabaseController;
use App\Http\Controllers\Api\V1\LdapGroupController;
use App\Http\Controllers\Api\V1\LdapUserController;
use App\Http\Controllers\Api\V1\MeController;
use App\Http\Controllers\Api\V1\ProjectSearchController;
use App\Http\Controllers\Api\V1\ServiceTokenController;
use App\Http\Controllers\Api\V1\TokenGuideController;
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->group(function () {
Route::post('/auth/login', [AuthController::class, 'login'])
->middleware('throttle:10,1')
->name('api.v1.auth.login');
Route::post('/auth/refresh', [AuthController::class, 'refresh'])
->middleware('throttle:30,1')
->name('api.v1.auth.refresh');
Route::get('/auth/token-guide', [TokenGuideController::class, 'show'])
->name('api.v1.auth.token-guide');
Route::middleware(['api.auth', 'api.audit'])->group(function () {
Route::get('/me', [MeController::class, 'show'])->name('api.v1.me');
Route::put('/me', [MeController::class, 'update'])->name('api.v1.me.update');
Route::post('/me/password', [MeController::class, 'changePassword'])->name('api.v1.me.password');
Route::post('/me/test-email', [MeController::class, 'testEmail'])->name('api.v1.me.test-email');
Route::get('/databases', [DatabaseController::class, 'index'])
->middleware('api.scope:databases:read')
->name('api.v1.databases.index');
Route::post('/databases/{database}/offline', [DatabaseController::class, 'offline'])
->middleware('api.scope:databases:write')
->name('api.v1.databases.offline');
Route::get('/ldap/users', [LdapUserController::class, 'index'])
->middleware('api.scope:ldap:read')
->name('api.v1.ldap.users.index');
Route::get('/ldap/users/{username}', [LdapUserController::class, 'show'])
->middleware('api.scope:ldap:read')
->name('api.v1.ldap.users.show');
Route::put('/ldap/users/{username}', [LdapUserController::class, 'update'])
->middleware('api.scope:ldap:write')
->name('api.v1.ldap.users.update');
Route::post('/ldap/users/{username}/groups', [LdapUserController::class, 'addToGroup'])
->middleware('api.scope:ldap:write')
->name('api.v1.ldap.users.groups.add');
Route::delete('/ldap/users/{username}/groups/{group}', [LdapUserController::class, 'removeFromGroup'])
->middleware('api.scope:ldap:write')
->name('api.v1.ldap.users.groups.remove');
Route::get('/ldap/groups', [LdapGroupController::class, 'index'])
->middleware('api.scope:ldap:read')
->name('api.v1.ldap.groups.index');
Route::get('/ldap/groups/{group}', [LdapGroupController::class, 'show'])
->middleware('api.scope:ldap:read')
->name('api.v1.ldap.groups.show');
Route::post('/ldap/groups', [LdapGroupController::class, 'store'])
->middleware('api.scope:ldap:write')
->name('api.v1.ldap.groups.store');
Route::post('/ldap/groups/{group}/members', [LdapGroupController::class, 'addMember'])
->middleware('api.scope:ldap:write')
->name('api.v1.ldap.groups.members.add');
Route::delete('/ldap/groups/{group}/members/{username}', [LdapGroupController::class, 'removeMember'])
->middleware('api.scope:ldap:write')
->name('api.v1.ldap.groups.members.remove');
Route::get('/project-search/sources', [ProjectSearchController::class, 'sources'])
->middleware('api.scope:project-search:read')
->name('api.v1.project-search.sources');
Route::get('/project-search/index/status', [ProjectSearchController::class, 'indexStatus'])
->middleware('api.scope:project-search:read')
->name('api.v1.project-search.index.status');
Route::post('/project-search/ask', [ProjectSearchController::class, 'ask'])
->middleware(['api.scope:project-search:read', 'throttle:20,1'])
->name('api.v1.project-search.ask');
// Service Tokens (microservice Bearer token management)
Route::get('/service-tokens', [ServiceTokenController::class, 'index'])
->name('api.v1.service-tokens.index');
Route::post('/service-tokens', [ServiceTokenController::class, 'store'])
->name('api.v1.service-tokens.store');
Route::get('/service-tokens/{id}', [ServiceTokenController::class, 'show'])
->name('api.v1.service-tokens.show');
Route::post('/service-tokens/{id}/revoke', [ServiceTokenController::class, 'revoke'])
->name('api.v1.service-tokens.revoke');
Route::post('/service-tokens/{id}/regenerate', [ServiceTokenController::class, 'regenerate'])
->name('api.v1.service-tokens.regenerate');
Route::delete('/service-tokens/{id}', [ServiceTokenController::class, 'destroy'])
->name('api.v1.service-tokens.destroy');
Route::get('/service-tokens/by-service/{service}', [ServiceTokenController::class, 'getByService'])
->name('api.v1.service-tokens.by-service');
Route::get('/service-tokens/active', [ServiceTokenController::class, 'getActive'])
->name('api.v1.service-tokens.active');
Route::get('/service-tokens/expired', [ServiceTokenController::class, 'getExpired'])
->name('api.v1.service-tokens.expired');
});
});