admin: 권한 메뉴 타입 추가

This commit is contained in:
geonhos 2024-05-17 11:15:08 +09:00
parent bc853e023e
commit 75da53e469
8 changed files with 45 additions and 14 deletions

View File

@ -83,10 +83,6 @@ public class MenuService {
menuRepository.deleteById(id); menuRepository.deleteById(id);
} }
public Optional<Menu> findById(Long menuId) {
return menuRepository.findById(menuId);
}
public Optional<Menu> find(Long menuId) { public Optional<Menu> find(Long menuId) {
return menuRepository.findById(menuId); return menuRepository.findById(menuId);
} }

View File

@ -0,0 +1,14 @@
package com.bpgroup.poc.admin.domain.base.role;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public enum RoleMenuType {
REQUESTER("요청자"),
APPROVER("승인자"),
MANAGER("관리자");
private final String description;
}

View File

@ -2,6 +2,7 @@ package com.bpgroup.poc.admin.domain.base.role.entity;
import com.bpgroup.poc.admin.domain.base.BaseEntity; import com.bpgroup.poc.admin.domain.base.BaseEntity;
import com.bpgroup.poc.admin.domain.base.menu.entity.Menu; import com.bpgroup.poc.admin.domain.base.menu.entity.Menu;
import com.bpgroup.poc.admin.domain.base.role.RoleMenuType;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@ -23,11 +24,17 @@ public class RoleMenu extends BaseEntity {
@JoinColumn(name = "menu_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) @JoinColumn(name = "menu_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
private Menu menu; private Menu menu;
@Enumerated(EnumType.STRING)
@Column(name = "role_menu_type", nullable = false)
private RoleMenuType roleMenuType;
@Builder @Builder
public static RoleMenu of(Role role, Menu menu) { public static RoleMenu of(Role role, Menu menu, RoleMenuType roleMenuType) {
RoleMenu roleMenu = new RoleMenu(); RoleMenu roleMenu = new RoleMenu();
roleMenu.role = role; roleMenu.role = role;
roleMenu.menu = menu; roleMenu.menu = menu;
roleMenu.roleMenuType = roleMenuType;
roleMenu.role.getRoleMenus().add(roleMenu); roleMenu.role.getRoleMenus().add(roleMenu);
return roleMenu; return roleMenu;
} }

View File

@ -1,6 +1,7 @@
package com.bpgroup.poc.admin.domain.base.role.service; package com.bpgroup.poc.admin.domain.base.role.service;
import com.bpgroup.poc.admin.domain.base.menu.entity.Menu; import com.bpgroup.poc.admin.domain.base.menu.entity.Menu;
import com.bpgroup.poc.admin.domain.base.role.RoleMenuType;
import com.bpgroup.poc.admin.domain.base.role.entity.Role; import com.bpgroup.poc.admin.domain.base.role.entity.Role;
import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -15,17 +16,20 @@ public class RoleAddMenuCommand {
private Role role; private Role role;
@NotNull @NotNull
private Menu menu; private Menu menu;
@NotNull
private RoleMenuType roleMenuType;
@Builder @Builder
public static RoleAddMenuCommand of(Role role, Menu menu) { public static RoleAddMenuCommand of(Role role, Menu menu, RoleMenuType roleMenuType) {
RoleAddMenuCommand command = new RoleAddMenuCommand(); RoleAddMenuCommand command = new RoleAddMenuCommand();
command.role = role; command.role = role;
command.menu = menu; command.menu = menu;
command.roleMenuType = roleMenuType;
return command; return command;
} }
public RoleMenu toEntity() { public RoleMenu toEntity() {
return RoleMenu.of(role, menu); return RoleMenu.of(role, menu, roleMenuType);
} }
} }

View File

@ -1,6 +1,5 @@
package com.bpgroup.poc.admin.domain.base.role.service; package com.bpgroup.poc.admin.domain.base.role.service;
import com.bpgroup.poc.admin.domain.base.menu.entity.MenuRepository;
import com.bpgroup.poc.admin.domain.base.role.entity.Role; import com.bpgroup.poc.admin.domain.base.role.entity.Role;
import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository;
import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository; import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository;
@ -21,7 +20,6 @@ import java.util.Set;
public class RoleService { public class RoleService {
private final RoleRepository roleRepository; private final RoleRepository roleRepository;
private final MenuRepository menuRepository;
private final RoleMenuRepository roleMenuRepository; private final RoleMenuRepository roleMenuRepository;
/** /**

View File

@ -61,8 +61,8 @@ public class RoleWebService {
Role role = findRole.get(); Role role = findRole.get();
Set<RoleAddMenuCommand> commands = request.getMenus().stream() Set<RoleAddMenuCommand> commands = request.getMenus().stream()
.map(menuId -> { .map(menuRecord -> {
Optional<Menu> findMenu = menuService.find(menuId); Optional<Menu> findMenu = menuService.find(menuRecord.menuId());
if (findMenu.isEmpty()) { if (findMenu.isEmpty()) {
throw new IllegalArgumentException("Menu Not Found"); throw new IllegalArgumentException("Menu Not Found");
} }
@ -70,6 +70,7 @@ public class RoleWebService {
return RoleAddMenuCommand.builder() return RoleAddMenuCommand.builder()
.role(role) .role(role)
.menu(menu) .menu(menu)
.roleMenuType(menuRecord.roleMenuType())
.build(); .build();
} }
) )

View File

@ -1,5 +1,6 @@
package com.bpgroup.poc.admin.web.main.admin.role.reqres; package com.bpgroup.poc.admin.web.main.admin.role.reqres;
import com.bpgroup.poc.admin.domain.base.role.RoleMenuType;
import com.bpgroup.poc.admin.web.common.CommonResponse; import com.bpgroup.poc.admin.web.common.CommonResponse;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
@ -8,8 +9,8 @@ import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; import lombok.ToString;
import java.util.HashSet; import java.util.ArrayList;
import java.util.Set; import java.util.List;
public class RoleAddMenu { public class RoleAddMenu {
@ -19,7 +20,10 @@ public class RoleAddMenu {
private Long roleId; private Long roleId;
@NotNull @NotNull
@Size(min = 1) @Size(min = 1)
private Set<Long> menus = new HashSet<>(); private List<Menu> menus = new ArrayList<>();
public record Menu(@NotNull Long menuId, @NotNull RoleMenuType roleMenuType) {
}
} }

View File

@ -1,5 +1,6 @@
package com.bpgroup.poc.admin.domain.base.role.service; package com.bpgroup.poc.admin.domain.base.role.service;
import com.bpgroup.poc.admin.domain.base.role.RoleMenuType;
import com.bpgroup.poc.admin.domain.base.role.entity.Role; import com.bpgroup.poc.admin.domain.base.role.entity.Role;
import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu;
import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository;
@ -121,10 +122,12 @@ class RoleServiceTest extends MariaDBTestEnv {
RoleAddMenuCommand.builder() RoleAddMenuCommand.builder()
.role(saveRole) .role(saveRole)
.menu(menu1) .menu(menu1)
.roleMenuType(RoleMenuType.MANAGER)
.build(), .build(),
RoleAddMenuCommand.builder() RoleAddMenuCommand.builder()
.role(saveRole) .role(saveRole)
.menu(menu2) .menu(menu2)
.roleMenuType(RoleMenuType.MANAGER)
.build() .build()
) )
); );
@ -152,6 +155,7 @@ class RoleServiceTest extends MariaDBTestEnv {
RoleMenu.builder() RoleMenu.builder()
.role(saveRole) .role(saveRole)
.menu(saveMenu1) .menu(saveMenu1)
.roleMenuType(RoleMenuType.MANAGER)
.build() .build()
); );
@ -159,6 +163,7 @@ class RoleServiceTest extends MariaDBTestEnv {
RoleMenu.builder() RoleMenu.builder()
.role(saveRole) .role(saveRole)
.menu(saveMenu2) .menu(saveMenu2)
.roleMenuType(RoleMenuType.MANAGER)
.build() .build()
); );
flushAndClear(); flushAndClear();
@ -189,6 +194,7 @@ class RoleServiceTest extends MariaDBTestEnv {
RoleMenu.builder() RoleMenu.builder()
.role(saveRole) .role(saveRole)
.menu(saveMenu1) .menu(saveMenu1)
.roleMenuType(RoleMenuType.MANAGER)
.build() .build()
); );
@ -196,6 +202,7 @@ class RoleServiceTest extends MariaDBTestEnv {
RoleMenu.builder() RoleMenu.builder()
.role(saveRole) .role(saveRole)
.menu(saveMenu2) .menu(saveMenu2)
.roleMenuType(RoleMenuType.MANAGER)
.build() .build()
); );