admin: administrator 내 관리자 권한 임베디드 타입으로 변경
This commit is contained in:
parent
7faf94a8c9
commit
bcbb62b513
|
|
@ -1,7 +1,6 @@
|
||||||
package com.bpgroup.poc.admin.domain.entity.administrator;
|
package com.bpgroup.poc.admin.domain.entity.administrator;
|
||||||
|
|
||||||
import com.bpgroup.poc.admin.domain.entity.BaseEntity;
|
import com.bpgroup.poc.admin.domain.entity.BaseEntity;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
@ -27,7 +26,7 @@ public class Administrator extends BaseEntity {
|
||||||
@Column(name = "name", length = 100, nullable = false)
|
@Column(name = "name", length = 100, nullable = false)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY, orphanRemoval = true)
|
@Embedded
|
||||||
private AdministratorRole administratorRole;
|
private AdministratorRole administratorRole;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
|
|
@ -44,9 +43,10 @@ public class Administrator extends BaseEntity {
|
||||||
this.password = administrator.password;
|
this.password = administrator.password;
|
||||||
this.email = administrator.email;
|
this.email = administrator.email;
|
||||||
this.name = administrator.name;
|
this.name = administrator.name;
|
||||||
|
this.administratorRole = administrator.administratorRole;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAdministratorRole(Role role) {
|
public void setAdministratorRole(AdministratorRole administratorRole) {
|
||||||
this.administratorRole = AdministratorRole.of(this, role);
|
this.administratorRole = administratorRole;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,37 +1,22 @@
|
||||||
package com.bpgroup.poc.admin.domain.entity.administrator;
|
package com.bpgroup.poc.admin.domain.entity.administrator;
|
||||||
|
|
||||||
import com.bpgroup.poc.admin.domain.entity.BaseEntity;
|
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Entity
|
@Embeddable
|
||||||
@Table(name = "administrator_role")
|
public class AdministratorRole {
|
||||||
public class AdministratorRole extends BaseEntity {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@OneToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "administrator_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
|
|
||||||
private Administrator administrator;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
|
@JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
|
||||||
private Role role;
|
private Role role;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
public static AdministratorRole of(Administrator administrator, Role role) {
|
public static AdministratorRole of(Role role) {
|
||||||
AdministratorRole administratorRole = new AdministratorRole();
|
AdministratorRole administratorRole = new AdministratorRole();
|
||||||
administratorRole.administrator = administrator;
|
|
||||||
administratorRole.role = role;
|
administratorRole.role = role;
|
||||||
return administratorRole;
|
return administratorRole;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(Role findRole) {
|
|
||||||
this.role = findRole;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
package com.bpgroup.poc.admin.domain.entity.administrator;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
|
|
||||||
public interface AdministratorRoleRepository extends JpaRepository<AdministratorRole, Long> {
|
|
||||||
}
|
|
||||||
|
|
@ -30,7 +30,6 @@ public class MenuQueryRepository {
|
||||||
roleMenu.menu.sortOrder
|
roleMenu.menu.sortOrder
|
||||||
)
|
)
|
||||||
.from(administrator)
|
.from(administrator)
|
||||||
.innerJoin(administrator.administratorRole, administratorRole)
|
|
||||||
.innerJoin(administratorRole.role, role)
|
.innerJoin(administratorRole.role, role)
|
||||||
.innerJoin(role.roleMenus, roleMenu)
|
.innerJoin(role.roleMenus, roleMenu)
|
||||||
.innerJoin(roleMenu.menu, menu)
|
.innerJoin(roleMenu.menu, menu)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package com.bpgroup.poc.admin.web.main.admin.management.service;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
|
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository;
|
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole;
|
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository;
|
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
|
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
@ -22,7 +21,6 @@ import java.util.Optional;
|
||||||
public class AdministratorManagementService {
|
public class AdministratorManagementService {
|
||||||
|
|
||||||
private final AdministratorRepository administratorRepository;
|
private final AdministratorRepository administratorRepository;
|
||||||
private final AdministratorRoleRepository administratorRoleRepository;
|
|
||||||
private final RoleRepository roleRepository;
|
private final RoleRepository roleRepository;
|
||||||
|
|
||||||
public AdministratorCreateResult create(
|
public AdministratorCreateResult create(
|
||||||
|
|
@ -33,17 +31,17 @@ public class AdministratorManagementService {
|
||||||
throw new IllegalArgumentException("Not found role");
|
throw new IllegalArgumentException("Not found role");
|
||||||
}
|
}
|
||||||
|
|
||||||
Administrator admin = administratorRepository.save(command.toEntity());
|
Role role = findRole.get();
|
||||||
|
Administrator administrator = command.toEntity();
|
||||||
AdministratorRole administratorRole = AdministratorRole.builder()
|
administrator.setAdministratorRole(
|
||||||
.administrator(admin)
|
AdministratorRole.builder()
|
||||||
.role(findRole.get())
|
.role(role)
|
||||||
.build();
|
.build()
|
||||||
|
);
|
||||||
administratorRoleRepository.save(administratorRole);
|
Administrator savedAdministrator = administratorRepository.save(administrator);
|
||||||
|
|
||||||
return AdministratorCreateResult.builder()
|
return AdministratorCreateResult.builder()
|
||||||
.id(admin.getId())
|
.id(savedAdministrator.getId())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,16 +53,19 @@ public class AdministratorManagementService {
|
||||||
throw new IllegalArgumentException("Not found administrator");
|
throw new IllegalArgumentException("Not found administrator");
|
||||||
}
|
}
|
||||||
|
|
||||||
Administrator administrator = findAdministrator.get();
|
|
||||||
administrator.update(command.toEntity());
|
|
||||||
|
|
||||||
Optional<Role> findRole = roleRepository.findById(command.getRoleId());
|
Optional<Role> findRole = roleRepository.findById(command.getRoleId());
|
||||||
if (findRole.isEmpty()) {
|
if (findRole.isEmpty()) {
|
||||||
throw new IllegalArgumentException("Not found role");
|
throw new IllegalArgumentException("Not found role");
|
||||||
}
|
}
|
||||||
|
|
||||||
Role role = findRole.get();
|
Role role = findRole.get();
|
||||||
administrator.getAdministratorRole().update(role);
|
Administrator administrator = findAdministrator.get();
|
||||||
|
administrator.setAdministratorRole(
|
||||||
|
AdministratorRole.builder()
|
||||||
|
.role(role)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
administrator.update(administrator);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void delete(@NotNull Long id) {
|
public void delete(@NotNull Long id) {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package com.bpgroup.poc.admin.web.main.admin.administrator;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
|
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository;
|
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole;
|
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository;
|
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
|
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
|
||||||
import com.bpgroup.poc.admin.env.MariaDBTestEnv;
|
import com.bpgroup.poc.admin.env.MariaDBTestEnv;
|
||||||
|
|
@ -32,9 +31,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AdministratorRepository administratorRepository;
|
private AdministratorRepository administratorRepository;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AdministratorRoleRepository administratorRoleRepository;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RoleRepository roleRepository;
|
private RoleRepository roleRepository;
|
||||||
|
|
||||||
|
|
@ -42,18 +38,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() {
|
void setUp() {
|
||||||
administratorRepository.deleteAll();
|
administratorRepository.deleteAll();
|
||||||
administratorRoleRepository.deleteAll();
|
|
||||||
roleRepository.deleteAll();
|
roleRepository.deleteAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void createAdministratorTest() {
|
void createAdministratorTest() {
|
||||||
Role role = roleRepository.save(
|
Role role = getSaveRole();
|
||||||
Role.builder()
|
|
||||||
.name("test")
|
|
||||||
.description("test")
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
flushAndClear();
|
flushAndClear();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|
@ -79,15 +69,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
@Test
|
@Test
|
||||||
void updateAdministratorTest() {
|
void updateAdministratorTest() {
|
||||||
// given
|
// given
|
||||||
Administrator saveAdministrator = createAdministrator();
|
Role saveRole = getSaveRole();
|
||||||
flushAndClear();
|
flushAndClear();
|
||||||
|
|
||||||
Role saveRole = roleRepository.save(
|
Administrator saveAdministrator = createAdministrator(saveRole);
|
||||||
Role.builder()
|
|
||||||
.name("test")
|
|
||||||
.description("test")
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
flushAndClear();
|
flushAndClear();
|
||||||
|
|
||||||
Role updateRole = roleRepository.save(
|
Role updateRole = roleRepository.save(
|
||||||
|
|
@ -98,14 +83,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
);
|
);
|
||||||
flushAndClear();
|
flushAndClear();
|
||||||
|
|
||||||
administratorRoleRepository.save(
|
|
||||||
AdministratorRole.builder()
|
|
||||||
.administrator(saveAdministrator)
|
|
||||||
.role(saveRole)
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
flushAndClear();
|
|
||||||
|
|
||||||
// when
|
// when
|
||||||
service.update(
|
service.update(
|
||||||
AdministratorUpdateCommand.builder()
|
AdministratorUpdateCommand.builder()
|
||||||
|
|
@ -131,7 +108,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
@Test
|
@Test
|
||||||
void deleteAdministratorTest() {
|
void deleteAdministratorTest() {
|
||||||
// given
|
// given
|
||||||
Administrator saveAdministrator = createAdministrator();
|
Role saveRole = getSaveRole();
|
||||||
|
flushAndClear();
|
||||||
|
|
||||||
|
Administrator saveAdministrator = createAdministrator(saveRole);
|
||||||
flushAndClear();
|
flushAndClear();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|
@ -146,23 +126,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
@Test
|
@Test
|
||||||
void deleteAdministratorAndAdministratorRoleTest() {
|
void deleteAdministratorAndAdministratorRoleTest() {
|
||||||
// given
|
// given
|
||||||
Administrator saveAdministrator = createAdministrator();
|
Role saveRole = getSaveRole();
|
||||||
flushAndClear();
|
flushAndClear();
|
||||||
|
|
||||||
Role saveRole = roleRepository.save(
|
Administrator saveAdministrator = createAdministrator(saveRole);
|
||||||
Role.builder()
|
|
||||||
.name("test")
|
|
||||||
.description("test")
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
flushAndClear();
|
|
||||||
|
|
||||||
administratorRoleRepository.save(
|
|
||||||
AdministratorRole.builder()
|
|
||||||
.administrator(saveAdministrator)
|
|
||||||
.role(saveRole)
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
flushAndClear();
|
flushAndClear();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|
@ -171,17 +138,32 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty();
|
assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty();
|
||||||
assertThat(administratorRoleRepository.findAll()).isEmpty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private Administrator createAdministrator() {
|
private Role getSaveRole() {
|
||||||
|
return roleRepository.save(
|
||||||
|
Role.builder()
|
||||||
|
.name("test")
|
||||||
|
.description("test")
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private Administrator createAdministrator(Role role) {
|
||||||
Administrator administrator = Administrator.builder()
|
Administrator administrator = Administrator.builder()
|
||||||
.loginId("test2")
|
.loginId("test2")
|
||||||
.password("test2")
|
.password("test2")
|
||||||
.email("test2")
|
.email("test2")
|
||||||
.name("test2")
|
.name("test2")
|
||||||
.build();
|
.build();
|
||||||
|
administrator.setAdministratorRole(
|
||||||
|
AdministratorRole.builder()
|
||||||
|
.role(role)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
return administratorRepository.save(administrator);
|
return administratorRepository.save(administrator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue