Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/main/java/com/podzilla/auth/controller/AdminController.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,18 @@ public void updateUserActivation(
logger.debug("Admin requested to update activation status for userId={} to isActive={}", userId, isActive);
adminService.updateUserActivation(userId, isActive);
}


@DeleteMapping("/users/{userId}")
@Operation(summary = "Delete a user",
description = "Allows an admin to delete a specific user account.")
@ApiResponse(responseCode = "200",
description = "User deleted successfully")
public void deleteUser(
@Parameter(description = "ID of the user to delete")
@PathVariable final Long userId) {

logger.debug("Admin requested to delete user with userId={}", userId);
adminService.deleteUser(userId);
}
}
21 changes: 13 additions & 8 deletions src/main/java/com/podzilla/auth/service/AdminService.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@ public class AdminService {
private static final Logger logger = LoggerFactory.getLogger(AdminService.class);

private final UserRepository userRepository;
private final UserService userService;

public AdminService(final UserRepository userRepository) {
public AdminService(final UserRepository userRepository, final UserService userService) {
this.userRepository = userRepository;
this.userService = userService;
}

public List<User> getUsers() {
Expand All @@ -27,16 +29,19 @@ public List<User> getUsers() {

@Transactional
public void updateUserActivation(final Long userId, final boolean isActive) {
logger.debug("Fetching user with id={}", userId);
User user = userRepository.findById(userId)
.orElseThrow(() -> {
logger.warn("User not found with id={}", userId);
return new NotFoundException("User with id " + userId + " does not exist.");
});

User user = userService.getUserOrThrow(userId);
logger.debug("Updating isActive status for userId={} from {} to {}", userId, user.getIsActive(), isActive);
user.setIsActive(isActive);
userRepository.save(user);
logger.debug("User activation status updated successfully for userId={}", userId);
}


@Transactional
public void deleteUser(final Long userId) {
User user = userService.getUserOrThrow(userId);
logger.debug("Deleting user with userId={}", userId);
userRepository.delete(user);
logger.debug("User deleted successfully with userId={}", userId);
}
}
30 changes: 30 additions & 0 deletions src/main/java/com/podzilla/auth/service/UserService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.podzilla.auth.service;

import com.podzilla.auth.exception.NotFoundException;
import com.podzilla.auth.model.User;
import com.podzilla.auth.repository.UserRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class UserService {

private static final Logger logger = LoggerFactory.getLogger(UserService.class);

private final UserRepository userRepository;

public UserService(final UserRepository userRepository) {
this.userRepository = userRepository;
}


public User getUserOrThrow(final Long userId) {
logger.debug("Fetching user with id={}", userId);
return userRepository.findById(userId)
.orElseThrow(() -> {
logger.warn("User not found with id={}", userId);
return new NotFoundException("User with id " + userId + " does not exist.");
});
}
}