Db.php 1.44 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
<?php
namespace UnicaenAuth\Provider\Identity;

use BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider;
use UnicaenAuth\Entity\Db\User;

/**
 * Classe de fournisseur d'identité issue de la base de données des utilisateurs.
 * 
 * Retourne les rôles de l'utilisateur authentifié.
 * NB : 
 * - Les ACL sont fournies par le service d'authorisation du module BjyAuthorize
 * - L'utilisateur authentifié est fournie par le service d'authentification.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
 */
class Db extends AuthenticationIdentityProvider implements ChainableProvider
{
    /**
     * Retrieve roles for the current identity
     *
     * @return string[]|RoleInterface[]
     */
    public function getIdentityRoles(ChainEvent $event = null)
    {
        if (! $identity = $this->authService->getIdentity()) {
            return array($this->defaultRole);
        }
        
        $identity = $this->authService->getIdentity();
        if (is_array($identity) && isset($identity['db'])) {
            $identity = $identity['db'];
        }
            
        if ($identity instanceof User) {
            $roles = $identity->getRoles();
        }
        else {
            $roles = array();
        }
        
        if (!$roles) {
            $roles = array($this->authenticatedRole);
        }
        
        if (null !== $event) {
            $event->addRoles($roles);
        }
        
        return $roles;
    }
}