Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Comprobación de roles de un tercer usuario en un controlador de Symfony

6 de diciembre de 2014

Hola, mi pregunta es sobre cómo comprobar que un usuario tiene un role determinado, pero que le entra por jerarquía y que además no es el usuario logueado.

Es decir, no me basta con hacer lo siguiente porque no lo va a encontrar en el array:

in_array('ROLE_DM', $user->getRoles())

¿Cómo se puede hacer esto?


Respuestas

#1

¿Tengo que crear un customvoter?

@HectorPrats

6 diciembre 2014, 17:18
#2

La primera pregunta ("obtener los roles de un usuario no logueado") es sencilla. Suponiendo que los usuarios se guarden en la base de datos, sólo tienes que hacer una consulta para obtener el usuario y después ejecutar el método getRoles() para obtener sus roles. Este método debería estar seguro ya que forma parte de la interfaz UserInterface que debes implementar para crear usuarios en Symfony.

La segunda pregunta ("comprobar todos los roles del usuario, incluso los heredados") es mucho más complicada. El motivo es que Symfony no proporciona ningún helper para comprobar esto, más allá del famoso método isGranted().

Por suerte, comprobar esto a mano no es tan difícil. En el repositorio de Symfony, se ha creado recientemente el pull request 12896 para mostrar en el profiler de Symfony todos los roles de un usuario, ya sean directos o heredados. Creo que podrías inspirarte en ese código para poder desarrollar tu propio método.

@javiereguiluz

9 diciembre 2014, 8:42
#3

fantástico javier, pues en cuanto lo saque lo pego aqui para el que lo necesite.

gracias

@HectorPrats

9 diciembre 2014, 16:36