feat: 결재·마스터 실연동 업데이트
This commit is contained in:
@@ -70,10 +70,17 @@ class GroupPermissionGroup {
|
||||
}
|
||||
|
||||
class GroupPermissionMenu {
|
||||
GroupPermissionMenu({required this.id, required this.menuName});
|
||||
GroupPermissionMenu({
|
||||
required this.id,
|
||||
required this.menuCode,
|
||||
required this.menuName,
|
||||
this.path,
|
||||
});
|
||||
|
||||
final int id;
|
||||
final String menuCode;
|
||||
final String menuName;
|
||||
final String? path;
|
||||
}
|
||||
|
||||
/// 그룹 권한 생성/수정 입력 모델
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user