admin: 권한 메뉴 타입 추가
This commit is contained in:
parent
bc853e023e
commit
75da53e469
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue