Ldap.php 1.49 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
namespace UnicaenAuth\Provider\Identity;

use UnicaenAuth\Entity\Ldap\People;
use BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider;

/**
 * Classe de fournisseur d'identité issue de l'annuaire Ldap.
 * 
 * Retourne les rôles correspondant aux groupes LDAP auxquels appartient l'entité LDAP authentifiée.
 * NB : 
 * - Les ACL sont fournies par le service d'authorisation du module BjyAuthorize
 * - L'identité authentifiée est fournie par le service d'authentification.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
 */
17
class Ldap extends AuthenticationIdentityProvider implements ChainableProvider//, ServiceLocatorAwareInterface
18
19
{
    /**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
20
     * {@inheritDoc}
21
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
22
    public function getIdentityRolesTrigger(ChainEvent $event)
23
    {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
24
25
26
27
28
29
30
31
        $event->addRoles($this->getIdentityRoles());
    }
    
    /**
     * {@inheritDoc}
     */
    public function getIdentityRoles()
    {
32
        if (!($identity = $this->authService->getIdentity())) {
33
34
35
36
37
38
39
40
            return array($this->defaultRole);
        }
        
        if (is_array($identity) && isset($identity['ldap'])) {
            $identity = $identity['ldap'];
        }
            
        if ($identity instanceof People) {
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;
    }
}