feat: 결재·마스터 실연동 업데이트

This commit is contained in:
JiWoong Sul
2025-10-14 18:10:24 +09:00
parent 1325109fba
commit 8067416c09
66 changed files with 2129 additions and 222 deletions

View File

@@ -0,0 +1,34 @@
import 'package:superport_v2/core/permissions/permission_manager.dart';
import 'package:superport_v2/core/permissions/permission_resources.dart';
import '../entities/group_permission.dart';
/// 그룹-메뉴 권한 목록을 [PermissionManager]에 적용할 수 있는 맵으로 변환한다.
///
/// - 메뉴 경로([GroupPermissionMenu.path])가 비어 있으면 해당 항목은 건너뛴다.
/// - 읽기 권한은 [PermissionAction.view]로 매핑하고, CRUD 권한은 각각 대응한다.
Map<String, Set<PermissionAction>> buildPermissionMap(
Iterable<GroupPermission> permissions,
) {
final result = <String, Set<PermissionAction>>{};
for (final permission in permissions) {
final path = PermissionResources.normalize(permission.menu.path ?? '');
if (path.isEmpty) {
continue;
}
final actions = result.putIfAbsent(path, () => <PermissionAction>{});
if (permission.canRead) {
actions.add(PermissionAction.view);
}
if (permission.canCreate) {
actions.add(PermissionAction.create);
}
if (permission.canUpdate) {
actions.add(PermissionAction.edit);
}
if (permission.canDelete) {
actions.add(PermissionAction.delete);
}
}
return result;
}