Db.php 1.55 KB
Newer Older
1 2 3 4
<?php
namespace UnicaenAuth\Provider\Identity;

use BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider;
5 6
use BjyAuthorize\Provider\Role\ProviderInterface;
use ZfcUser\Entity\UserInterface;
7 8 9 10 11 12 13 14 15 16 17 18 19 20

/**
 * 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
{
    /**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
21
     * {@inheritDoc}
22
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
23 24 25 26 27 28 29 30 31
    public function getIdentityRolesTrigger(ChainEvent $event)
    {
        $event->addRoles($this->getIdentityRoles());
    }
    
    /**
     * {@inheritDoc}
     */
    public function getIdentityRoles()
32
    {
33
        if (!($identity = $this->authService->getIdentity())) {
34 35 36 37 38 39 40
            return array($this->defaultRole);
        }
        
        if (is_array($identity) && isset($identity['db'])) {
            $identity = $identity['db'];
        }
            
41 42
        if ($identity instanceof ProviderInterface) {
            $roles = $identity->getRoles();
43 44 45 46
        }
        else {
            $roles = array();
        }
47 48 49 50
         
        if ($identity instanceof UserInterface) {
            $roles[] = $identity->getUsername();
        }
51 52 53 54 55 56 57 58
        
        if (!$roles) {
            $roles = array($this->authenticatedRole);
        }
        
        return $roles;
    }
}