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

Cómo implementar los roles de Symfony con una interfaz

3 de enero de 2015

Después de haber configurado el archivo security.yml de una aplicación Symfony y después de que la entidad del usuario haya implementado la interfaz UserInterface, ¿existe alguna interfaz RoleInterface que pueda implementar para crear los roles?


Respuestas

#1

Efectivamente existe una interfaz para los roles y se llama precisamente RoleInterface. La interfaz es muy sencilla y solo obliga a implementar un método llamado getRole() que devuelve una cadena de texto con el nombre del rol (normalmente esta cadena empiza por ROLE_):

namespace Symfony\Component\Security\Core\Role;
 
/**
 * RoleInterface represents a role granted to a user.
 *
 * A role must either have a string representation or it needs to be explicitly
 * supported by at least one AccessDecisionManager.
 *
 * @author Fabien Potencier <[email protected]>
 */
interface RoleInterface
{
    /**
     * Returns the role.
     *
     * This method returns a string representation whenever possible.
     *
     * When the role cannot be represented with sufficient precision by a
     * string, it should return null.
     *
     * @return string|null A string representation of the role, or null
     */
    public function getRole();
}

En cualquier caso, te aconsejo que no uses la interfaz RoleInterface. Ya se que usar interfaces en vez de implementaciones es lo correcto y es la manera profesional de programar aplicaciones.

Pero en este caso concreto, utilizar la interfaz no te hace más profesional. Simplemente complica mucho más tu trabajo sin que ganes nada con ello. De hecho, el propio creador de Symfony ha propuesto eliminar esta interfaz para la siguiente versión de Symfony (la versión 3.0 que podría salir a finales de 2015). El motivo es que nadie use y nadie necesita esta interfaz en las aplicaciones reales. Basta con usar una cadena de texto que empiece por ROLE_. Si quieres leer más detalles sobre la propuesta de eliminar esta interfaz, puedes leer este comentario del repositorio de Symfony.

@javiereguiluz

3 enero 2015, 10:11