Cómo dividir una condición en un método en dos métodos con condiciones separadas
Tengo este código para verificar si el usuario es un administrador o el propietario del mensaje. Debo dividir este método en dos: primero, verificar si el usuario es un administrador, segundo, si el usuario es el propietario. Sin embargo, no funcionará correctamente si simplemente divido la condición en dos.
public static void checkIfTheUserIsAdminOrTheOwnerOfTheComment(Comment commentFound, SecurityUser user){
if (!(commentFound.getAuthor().getId().equals(user.getUserId())
||(user.getAuthorities().contains(new SimpleGrantedAuthority(Authorities.ADMIN_WRITE.getPermission()))))) {
throw new ForbiddenRequestException(Errors.ERROR4.getMessage());
}
}
Intenté esto:
public static void checkIfTheUserIsTheOwnerOfTheComment(Comment commentFound, SecurityUser user){
if (!commentFound.getAuthor().getId().equals(user.getUserId())) {
throw new ForbiddenRequestException(Errors.ERROR4.getMessage());
}
}
public static void checkIfTheUserIsAdmin(Comment commentFound, SecurityUser user){
if (!user.getAuthorities().contains(new SimpleGrantedAuthority(Authorities.ADMIN_WRITE.getPermission())))) {
throw new ForbiddenRequestException(Errors.ERROR4.getMessage());
}
}
Pero no funcionará correctamente porque si inicio sesión como administrador, tendré una excepción de que no soy el propietario, pero DEBO dividir esto en dos métodos separados. ¿Alguna sugerencia?
davy.ai
Una sugerencia sería modificar el segundo método para verificar también si el usuario es un administrador, y solo lanzar la excepción si no son el propietario Y no son un administrador. Aquí tienes un ejemplo:
Con esta modificación, el primer método permanece igual y el segundo método verifica si el usuario es el propietario o un administrador antes de permitir el acceso.