refactor: [authz] 역할/권한 API 품질 개선

- Validator::make를 FormRequest로 분리 (6개 생성)
- 하드코딩 한글 문자열을 i18n 키로 교체
- RoleMenuPermission 데드코드 제거
- Role 모델 SpatieRole 상속으로 일원화
- 권한 변경 후 캐시 무효화 추가 (AccessService::bumpVersion)
- 미문서화 8개 Swagger 엔드포인트 추가
- 역할/권한 라우트에 perm.map+permission 미들웨어 추가
This commit is contained in:
김보곤
2026-02-20 21:59:26 +09:00
parent 555fd196f5
commit 1dd9057540
21 changed files with 1400 additions and 271 deletions

View File

@@ -57,7 +57,7 @@
});
// Role API
Route::prefix('roles')->group(function () {
Route::middleware(['perm.map', 'permission'])->prefix('roles')->group(function () {
Route::get('/', [RoleController::class, 'index'])->name('v1.roles.index');
Route::post('/', [RoleController::class, 'store'])->name('v1.roles.store');
Route::get('/stats', [RoleController::class, 'stats'])->name('v1.roles.stats');
@@ -68,10 +68,10 @@
});
// Role Permission API - 공통
Route::get('/role-permissions/menus', [RolePermissionController::class, 'menus'])->name('v1.roles.perms.menus');
Route::middleware(['perm.map', 'permission'])->get('/role-permissions/menus', [RolePermissionController::class, 'menus'])->name('v1.roles.perms.menus');
// Role Permission API - 역할별
Route::prefix('roles/{id}/permissions')->group(function () {
Route::middleware(['perm.map', 'permission'])->prefix('roles/{id}/permissions')->group(function () {
Route::get('/', [RolePermissionController::class, 'index'])->name('v1.roles.perms.index');
Route::post('/', [RolePermissionController::class, 'grant'])->name('v1.roles.perms.grant');
Route::delete('/', [RolePermissionController::class, 'revoke'])->name('v1.roles.perms.revoke');