es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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:

    public static void checkIfTheUserIsAdmin(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());
        }
    }
    

    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.

Comments are closed.