3
0
mirror of https://github.com/snipe/snipe-it.git synced 2026-08-18 11:15:42 +00:00

Fixed FD-56773 - oauth gates

This commit is contained in:
snipe
2026-07-30 14:09:10 +01:00
parent 84555c4549
commit 3f74b8cf82

View File

@ -43,6 +43,31 @@ use App\Models\ReportTemplate;
use Illuminate\Support\Facades\Route;
use Tabuna\Breadcrumbs\Trail;
/*
* Gate Passport's default personal-access-token routes
* behind the same self.api permission that protects Snipe-IT's own
* /account/api and /api/v1/account/personal-access-tokens surfaces.
*
* These three routes are auto-registered by PassportServiceProvider
* with only `web, auth:web` middleware, which meant any user with a
* valid session cookie could POST here and mint a long-lived bearer
* token even if an admin had revoked their self.api permission.
*
* Snipe-IT's routes/web.php loads before Passport's package service
* provider boots, so these registrations win route resolution over
* the Passport originals (FIFO). Requests are forwarded to the same
* PersonalAccessTokenController Passport would have used, so token
* shape and behavior are unchanged for users who ARE authorized.
*/
Route::middleware(['web', 'auth', 'can:self.api'])->prefix('oauth')->group(function () {
Route::get('personal-access-tokens', [\Laravel\Passport\Http\Controllers\PersonalAccessTokenController::class, 'forUser'])
->name('passport.personal.tokens.index');
Route::post('personal-access-tokens', [\Laravel\Passport\Http\Controllers\PersonalAccessTokenController::class, 'store'])
->name('passport.personal.tokens.store');
Route::delete('personal-access-tokens/{token_id}', [\Laravel\Passport\Http\Controllers\PersonalAccessTokenController::class, 'destroy'])
->name('passport.personal.tokens.destroy');
});
Route::group(['middleware' => 'auth'], function () {
/*
* Companies