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