Db.php 1.42 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<?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
{
    /**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
20
     * {@inheritDoc}
21
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
22 23 24 25 26 27 28 29 30
    public function getIdentityRolesTrigger(ChainEvent $event)
    {
        $event->addRoles($this->getIdentityRoles());
    }
    
    /**
     * {@inheritDoc}
     */
    public function getIdentityRoles()
31
    {
32
        if (!($identity = $this->authService->getIdentity())) {
33 34 35 36 37 38 39 40
            return array($this->defaultRole);
        }
        
        if (is_array($identity) && isset($identity['db'])) {
            $identity = $identity['db'];
        }
            
        if ($identity instanceof User) {
41 42
            $roles   = $identity->getRoles();
            $roles[] = $identity->getUsername();
43 44 45 46 47 48 49 50 51 52 53 54
        }
        else {
            $roles = array();
        }
        
        if (!$roles) {
            $roles = array($this->authenticatedRole);
        }
        
        return $roles;
    }
}