결재 API 계약 보완 및 테스트 정리
This commit is contained in:
32
lib/features/auth/domain/entities/auth_permission.dart
Normal file
32
lib/features/auth/domain/entities/auth_permission.dart
Normal file
@@ -0,0 +1,32 @@
|
||||
import '../../../../core/permissions/permission_manager.dart';
|
||||
import '../../../../core/permissions/permission_resources.dart';
|
||||
|
||||
/// 로그인 응답에서 내려오는 단일 권한(리소스 + 액션 목록)을 표현한다.
|
||||
class AuthPermission {
|
||||
const AuthPermission({required this.resource, required this.actions});
|
||||
|
||||
/// 서버가 반환한 리소스 식별자 (예: `/stock-transactions`)
|
||||
final String resource;
|
||||
|
||||
/// 허용된 액션 문자열 목록 (예: `view`, `create`)
|
||||
final List<String> actions;
|
||||
|
||||
/// [PermissionManager]가 이해할 수 있는 포맷으로 변환한다.
|
||||
Map<String, Set<PermissionAction>> toPermissionMap() {
|
||||
final normalized = PermissionResources.normalize(resource);
|
||||
final actionSet = <PermissionAction>{};
|
||||
for (final raw in actions) {
|
||||
final matched = PermissionAction.values.where(
|
||||
(action) => action.name == raw.trim().toLowerCase(),
|
||||
);
|
||||
if (matched.isEmpty) {
|
||||
continue;
|
||||
}
|
||||
actionSet.addAll(matched);
|
||||
}
|
||||
if (actionSet.isEmpty) {
|
||||
return <String, Set<PermissionAction>>{};
|
||||
}
|
||||
return {normalized: actionSet};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user