refactor: [authz] 역할/권한 API 품질 개선
- Validator::make를 FormRequest로 분리 (6개 생성) - 하드코딩 한글 문자열을 i18n 키로 교체 - RoleMenuPermission 데드코드 제거 - Role 모델 SpatieRole 상속으로 일원화 - 권한 변경 후 캐시 무효화 추가 (AccessService::bumpVersion) - 미문서화 8개 Swagger 엔드포인트 추가 - 역할/권한 라우트에 perm.map+permission 미들웨어 추가
This commit is contained in:
38
app/Http/Requests/Authz/RolePermissionGrantRequest.php
Normal file
38
app/Http/Requests/Authz/RolePermissionGrantRequest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Authz;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class RolePermissionGrantRequest extends FormRequest
|
||||
{
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'permission_names' => 'sometimes|array',
|
||||
'permission_names.*' => 'string|min:1',
|
||||
'menus' => 'sometimes|array',
|
||||
'menus.*' => 'integer|min:1',
|
||||
'actions' => 'sometimes|array',
|
||||
'actions.*' => [
|
||||
'string', Rule::in(config('authz.menu_actions', ['view', 'create', 'update', 'delete', 'approve'])),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function withValidator($validator): void
|
||||
{
|
||||
$validator->after(function ($validator) {
|
||||
$data = $this->all();
|
||||
if (empty($data['permission_names']) && (empty($data['menus']) || empty($data['actions']))) {
|
||||
$validator->errors()->add('permission_names', __('error.role.permission_input_required'));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user