in app/src/main/java/com/amazon/aws/partners/saasfactory/pgrls/controller/TenantController.java [219:246]
public String deleteUser(Authentication authentication, @ModelAttribute User user, BindingResult binding, Model model, final RedirectAttributes redirectAttributes) {
LOGGER.info("Deleting user " + user.getId());
String view = null;
try {
Tenant authenticatedTenant = (Tenant) authentication.getPrincipal();
tenantService.deleteUser(user);
// For this demo, just to show RLS in action, see if the user exists
if (adminService.userExists(user.getId())) {
LOGGER.warn("Row Level Security policies prevented " + authenticatedTenant.getIdAsString() + " from deleting user " + user.getId().toString());
redirectAttributes.addFlashAttribute("css", "danger");
redirectAttributes.addFlashAttribute("msg", "Row Level Security policies prevented " + authenticatedTenant.getIdAsString() + " from deleting user " + user.getId().toString());
view = "redirect:/tenant";
} else {
LOGGER.info("User delete succeeded");
redirectAttributes.addFlashAttribute("css", "success");
redirectAttributes.addFlashAttribute("msg", "User deleted");
// Add the tenant back into model for the redirect
redirectAttributes.addFlashAttribute("selectedTenant", authenticatedTenant.getId());
view = "redirect:/tenant";
}
} catch (Exception e) {
LOGGER.error("Error deleting user", e);
model.addAttribute("css", "danger");
model.addAttribute("msg", "Failed to delete user: " + e.getMessage());
view = "deleteUser";
}
return view;
}