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.
101 lines
5.6 KiB
101 lines
5.6 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::post('/auth/forgot-password', [AuthController::class, 'apiForgotPassword']) |
|
->middleware('throttle:3,1') |
|
->name('api.v1.auth.forgot-password'); |
|
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'); |
|
}); |
|
});
|
|
|