Skip to content

Commit df29847

Browse files
chore: 빌트인 퍼미션 카탈로그 추가 및 중복 처리 로직 개선
1 parent ee8da45 commit df29847

2 files changed

Lines changed: 37 additions & 4 deletions

File tree

src/main/java/apu/saerok_admin/web/RoleManagementController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import apu.saerok_admin.infra.role.dto.UpdateRolePermissionsRequest;
1414
import apu.saerok_admin.web.view.Breadcrumb;
1515
import apu.saerok_admin.web.view.CurrentAdminProfile;
16+
import apu.saerok_admin.web.view.role.PermissionCatalog;
1617
import apu.saerok_admin.web.view.role.PermissionOptionView;
1718
import apu.saerok_admin.web.view.role.PermissionView;
1819
import apu.saerok_admin.web.view.role.RoleDisplay;
@@ -566,15 +567,15 @@ private TeamMemberView toTeamMemberView(AdminUserRoleResponse response) {
566567
}
567568

568569
private List<PermissionOptionView> buildPermissionOptions(List<RoleTemplateView> templates) {
569-
if (templates.isEmpty()) {
570-
return List.of();
571-
}
572570
Map<String, PermissionOptionView> deduplicated = new LinkedHashMap<>();
573571
for (RoleTemplateView template : templates) {
574572
for (PermissionView permission : template.permissions()) {
575-
deduplicated.putIfAbsent(permission.key(), new PermissionOptionView(permission.key(), permission.description()));
573+
deduplicated.put(permission.key(), new PermissionOptionView(permission.key(), permission.description()));
576574
}
577575
}
576+
for (PermissionOptionView builtin : PermissionCatalog.builtinPermissions()) {
577+
deduplicated.putIfAbsent(builtin.key(), builtin);
578+
}
578579
Comparator<PermissionOptionView> comparator = Comparator
579580
.comparing(PermissionOptionView::label, String.CASE_INSENSITIVE_ORDER)
580581
.thenComparing(PermissionOptionView::key, String.CASE_INSENSITIVE_ORDER);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package apu.saerok_admin.web.view.role;
2+
3+
import java.util.List;
4+
5+
public final class PermissionCatalog {
6+
7+
private static final List<PermissionOptionView> BUILTIN_PERMISSIONS = List.of(
8+
option("ADMIN_LOGIN", "어드민에 로그인"),
9+
option("ADMIN_REPORT_READ", "신고된 콘텐츠 내용 조회"),
10+
option("ADMIN_REPORT_WRITE", "신고된 콘텐츠에 대한 모든 조치"),
11+
option("ADMIN_AUDIT_READ", "관리자 활동 로그 조회"),
12+
option("ADMIN_STAT_READ", "서비스 통계 조회"),
13+
option("ADMIN_STAT_WRITE", "서비스 통계 수동 집계"),
14+
option("ADMIN_AD_READ", "광고, 광고 위치, 광고 스케줄 조회"),
15+
option("ADMIN_AD_WRITE", "광고, 광고 위치, 광고 스케줄 생성/수정/삭제 (단, 광고 위치 삭제는 불가)"),
16+
option("ADMIN_SLOT_DELETE", "광고 위치 삭제"),
17+
option("ADMIN_ROLE_MY_READ", "로그인한 관리자의 역할/권한 조회"),
18+
option("ADMIN_ROLE_READ", "모든 관리자(TEAM_MEMBER 기준)의 역할과 권한 조회"),
19+
option("ADMIN_ROLE_WRITE", "역할 생성/삭제, 권한 편집 및 사용자 역할 부여/회수")
20+
);
21+
22+
private PermissionCatalog() {
23+
}
24+
25+
public static List<PermissionOptionView> builtinPermissions() {
26+
return BUILTIN_PERMISSIONS;
27+
}
28+
29+
private static PermissionOptionView option(String key, String description) {
30+
return new PermissionOptionView(key, description);
31+
}
32+
}

0 commit comments

Comments
 (0)