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;
    }
}