Skip to content

Commit 4a02966

Browse files
committed
delete user also delete deviceId
1 parent 345bfec commit 4a02966

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

backend/spring-boot/src/main/java/org/bugzkit/api/admin/service/impl/UserServiceImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.bugzkit.api.admin.payload.request.PatchUserRequest;
77
import org.bugzkit.api.admin.payload.request.UserRequest;
88
import org.bugzkit.api.admin.service.UserService;
9+
import org.bugzkit.api.auth.repository.DeviceRepository;
910
import org.bugzkit.api.auth.service.AccessTokenService;
1011
import org.bugzkit.api.auth.service.RefreshTokenService;
1112
import org.bugzkit.api.auth.util.AuthUtil;
@@ -31,6 +32,7 @@
3132
public class UserServiceImpl implements UserService {
3233
private final UserRepository userRepository;
3334
private final RoleRepository roleRepository;
35+
private final DeviceRepository deviceRepository;
3436
private final AccessTokenService accessTokenService;
3537
private final RefreshTokenService refreshTokenService;
3638
private final PasswordEncoder passwordEncoder;
@@ -39,12 +41,14 @@ public class UserServiceImpl implements UserService {
3941
public UserServiceImpl(
4042
UserRepository userRepository,
4143
RoleRepository roleRepository,
44+
DeviceRepository deviceRepository,
4245
AccessTokenService accessTokenService,
4346
RefreshTokenService refreshTokenService,
4447
PasswordEncoder passwordEncoder,
4548
UserMapper userMapper) {
4649
this.userRepository = userRepository;
4750
this.roleRepository = roleRepository;
51+
this.deviceRepository = deviceRepository;
4852
this.accessTokenService = accessTokenService;
4953
this.refreshTokenService = refreshTokenService;
5054
this.passwordEncoder = passwordEncoder;
@@ -239,6 +243,7 @@ private void setRoles(User user, Set<RoleName> roleNames) {
239243
@Transactional
240244
public void delete(Long id) {
241245
deleteAuthTokens(id);
246+
deviceRepository.deleteAllByUserId(id);
242247
userRepository.deleteById(id);
243248
log.info("Admin deleted user with id '{}'", id);
244249
}

backend/spring-boot/src/test/java/org/bugzkit/api/admin/integration/UserControllerIT.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,4 +393,39 @@ void deleteUser() throws Exception {
393393
.cookie(new Cookie("accessToken", accessToken)))
394394
.andExpect(status().isNoContent());
395395
}
396+
397+
@Test
398+
void deleteUser_withActiveSession() throws Exception {
399+
final var userRequest =
400+
UserRequest.builder()
401+
.username("todelete")
402+
.email("todelete@localhost")
403+
.password("qwerty123")
404+
.confirmPassword("qwerty123")
405+
.active(true)
406+
.lock(false)
407+
.roleNames(Set.of(RoleName.USER))
408+
.build();
409+
final var createResponse =
410+
mockMvc
411+
.perform(
412+
post(Path.ADMIN_USERS)
413+
.contentType(MediaType.APPLICATION_JSON)
414+
.cookie(new Cookie("accessToken", accessToken))
415+
.content(objectMapper.writeValueAsString(userRequest)))
416+
.andExpect(status().isCreated())
417+
.andReturn()
418+
.getResponse()
419+
.getContentAsString();
420+
final var userId = objectMapper.readValue(createResponse, UserDTO.class).id();
421+
422+
IntegrationTestUtil.authTokens(mockMvc, objectMapper, "todelete");
423+
424+
mockMvc
425+
.perform(
426+
delete(Path.ADMIN_USERS + "/{id}", userId)
427+
.contentType(MediaType.APPLICATION_JSON)
428+
.cookie(new Cookie("accessToken", accessToken)))
429+
.andExpect(status().isNoContent());
430+
}
396431
}

0 commit comments

Comments
 (0)