Commit a4d9fadd authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Initial commit

parents
Loading
Loading
Loading
Loading

CHANGELOG.md

0 → 100644
+38 −0
Original line number Diff line number Diff line
# Changelog

## 1.3.0 - 23/01/2019

- Authentification locale activable/désactivable dans la config.
    - Clé de config `unicaen-auth` > `local` > `enabled`.

- Ajout de la fonctionnalité "Mot de passe oublié" pour l'authentification locale. 
    - Principe: un lien contenant un token est envoyé par mail à l'utilisateur.
    - NB: Le username de l'utilisateur doit être une adresse électronique.
    - NB: nécessité de créer une nouvelle colonne dans la table des utilisateurs,
      cf. [répertoire data](./data).    

## 1.3.1 - 25/01/2019

- Fonctionnalité "Mot de passe oublié" :
    - Correction: l'utilisateur n'était pas recherché par son username!
    - Ajout d'un validateur sur le formulaire de saisie de l'adresse électronique.
    - Vérification que le compte utilisateur est bien local.

## 1.3.2 - 29/01/2019

- Authentification Shibboleth: possibilité de spécifier les attributs nécessaires au fonctionnement de l'appli 
  (clé de config `unicaen-auth` > `shibboleth` > `required_attributes`).
  
## 1.3.3 - 29/01/2019

- Correction du namespace de l'exception InvalidArgumentException lancée dans ShibService. 

## 1.3.4 - 30/01/2019

- Correction d'un nom erroné de variable passée à une vue : passwordReset.
- Correction config globale .dist: désactivation par défaut de l'auth locale pure ; commentaires plus précis.
- Adapter Db: suppression catch exception inexistante ; correction doc ; ajout initialisation de variable manquante.

## 1.3.5 - 04/02/2019

- Simplifications autour de la simulation d'une authentification shibboleth.

Module.php

0 → 100644
+79 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenAuthentification;

use Zend\EventManager\EventInterface;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use Zend\ModuleManager\Feature\ServiceProviderInterface;

/**
 * Point d'entrée du module d'authentification Unicaen.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
class Module implements AutoloaderProviderInterface, ConfigProviderInterface, ServiceProviderInterface
{
    /**
     * @return array
     * @see ConfigProviderInterface
     */
    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }

    /**
     * @return array
     * @see AutoloaderProviderInterface
     */
    public function getAutoloaderConfig()
    {
        return [
            'Zend\Loader\StandardAutoloader' => [
                'namespaces' => [
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ],
            ],
        ];
    }

    /**
     * This method is called once the MVC bootstrapping is complete,
     * after the "loadModule.post" event, once $application->bootstrap() is called.
     *
     * @param EventInterface $e
     *
     * @see BootstrapListenerInterface
     */
    public function onBootstrap(EventInterface $e)
    {

    }

    /**
     * @return array
     * @see ServiceProviderInterface
     */
    public function getServiceConfig()
    {
        return [
            //========== repris du module zf-commons/zfc-user-doctrine-orm abandonné =========
            'aliases' => array(
                'zfcuser_doctrine_em' => 'Doctrine\ORM\EntityManager',
            ),
            //===========================================


            'factories' => [
                //========== repris du module zf-commons/zfc-user-doctrine-orm abandonné =========
                'zfcuser_module_options' => function ($sm) {
                    $config = $sm->get('Configuration');
                    return new Options\ModuleOptions(isset($config['zfcuser']) ? $config['zfcuser'] : array());
                },
                //===========================================

            ],
        ];
    }
}
 No newline at end of file

README.md

0 → 100644
+24 −0
Original line number Diff line number Diff line
# UnicaenAuth

Ce module :

- ajoute à une application la possibilité d'identifier/authentifier l'utilisateur (LDAP, base de données ou CAS).
- fournit la possibilité à l'utilisateur de se créer un compte dans la base de données de l'application (option de config).
- fournit les fonctionnalités d'habilitation de l'utilisateur (ACL).
- Une bibliothèque de rôles éditable via une IHM
- Un système de gestion des droits avec des privilèges éditables via une IHM
- Un système d'assertions avancées pour gérer des cas complexes d'autorisations
- requiert les modules suivants :
  - UnicaenApp
  - ZfcUserDoctrineOrm
  - phpCAS
  - BjyAuthorize

## Documentation

- [Installation](./doc/installation.md)
- [Configuration](./doc/configuration.md)
- [Authentification](./doc/authentification.md)
- [Services](./doc/services.md)
- [Utilisation de la gestion des droits et privilèges](./doc/droits.md)
- [Aides de vue (view helpers)](./doc/helpers.md)

autoload_classmap.php

0 → 100644
+88 −0
Original line number Diff line number Diff line
<?php
// Generated by ZF2's ./bin/classmap_generator.php
return array(
    'UnicaenAutorisation\Module'                                                => __DIR__ . '/Module.php',
    'UnicaenAutorisation\Guard\PrivilegeController'                             => __DIR__ . '/src/UnicaenAutorisation/Guard/PrivilegeController.php',
    'UnicaenAutorisation\Options\AuthenticationOptionsInterface'                => __DIR__ . '/src/UnicaenAutorisation/Options/AuthenticationOptionsInterface.php',
    'UnicaenAutorisation\Options\Traits\ModuleOptionsAwareTrait'                => __DIR__ . '/src/UnicaenAutorisation/Options/Traits/ModuleOptionsAwareTrait.php',
    'UnicaenAutorisation\Options\ModuleOptionsFactory'                          => __DIR__ . '/src/UnicaenAutorisation/Options/ModuleOptionsFactory.php',
    'UnicaenAutorisation\Options\ModuleOptions'                                 => __DIR__ . '/src/UnicaenAutorisation/Options/ModuleOptions.php',
    'UnicaenAutorisation\Entity\Db\CategoriePrivilege'                          => __DIR__ . '/src/UnicaenAutorisation/Entity/Db/CategoriePrivilege.php',
    'UnicaenAutorisation\Entity\Db\User'                                        => __DIR__ . '/src/UnicaenAutorisation/Entity/Db/User.php',
    'UnicaenAutorisation\Entity\Db\Privilege'                                   => __DIR__ . '/src/UnicaenAutorisation/Entity/Db/Privilege.php',
    'UnicaenAutorisation\Entity\Db\Role'                                        => __DIR__ . '/src/UnicaenAutorisation/Entity/Db/Role.php',
    'UnicaenAutorisation\Entity\Db\AbstractUser'                                => __DIR__ . '/src/UnicaenAutorisation/Entity/Db/AbstractUser.php',
    'UnicaenAutorisation\Entity\Ldap\People'                                    => __DIR__ . '/src/UnicaenAutorisation/Entity/Ldap/People.php',
    'UnicaenAutorisation\Service\LdapUserAwareInterface'                        => __DIR__ . '/src/UnicaenAutorisation/Service/LdapUserAwareInterface.php',
    'UnicaenAutorisation\Service\AuthorizeService'                              => __DIR__ . '/src/UnicaenAutorisation/Service/AuthorizeService.php',
    'UnicaenAutorisation\Service\DbUserAwareInterface'                          => __DIR__ . '/src/UnicaenAutorisation/Service/DbUserAwareInterface.php',
    'UnicaenAutorisation\Service\User'                                          => __DIR__ . '/src/UnicaenAutorisation/Service/User.php',
    'UnicaenAutorisation\Service\Traits\UserContextServiceAwareTrait'           => __DIR__ . '/src/UnicaenAutorisation/Service/Traits/UserContextServiceAwareTrait.php',
    'UnicaenAutorisation\Service\Traits\RoleServiceAwareTrait'                  => __DIR__ . '/src/UnicaenAutorisation/Service/Traits/RoleServiceAwareTrait.php',
    'UnicaenAutorisation\Service\Traits\CategoriePrivilegeServiceAwareTrait'    => __DIR__ . '/src/UnicaenAutorisation/Service/Traits/CategoriePrivilegeAwareTrait.php',
    'UnicaenAutorisation\Service\Traits\PrivilegeServiceAwareTrait'             => __DIR__ . '/src/UnicaenAutorisation/Service/Traits/PrivilegeServiceAwareTrait.php',
    'UnicaenAutorisation\Service\UserAwareInitializer'                          => __DIR__ . '/src/UnicaenAutorisation/Service/UserAwareInitializer.php',
    'UnicaenAutorisation\Service\UserContext'                                   => __DIR__ . '/src/UnicaenAutorisation/Service/UserContext.php',
    'UnicaenAutorisation\Service\PrivilegeService'                              => __DIR__ . '/src/UnicaenAutorisation/Service/PrivilegeService.php',
    'UnicaenAutorisation\Service\RoleService'                                   => __DIR__ . '/src/UnicaenAutorisation/Service/RoleService.php',
    'UnicaenAutorisation\Service\CategoriePrivilegeService'                     => __DIR__ . '/src/UnicaenAutorisation/Service/CategoriePrivilegeService.php',
    'UnicaenAutorisation\Service\AbstractService'                               => __DIR__ . '/src/UnicaenAutorisation/Service/AbstractService.php',
    'UnicaenAutorisation\Service\AuthorizeServiceFactory'                       => __DIR__ . '/src/UnicaenAutorisation/Service/AuthorizeServiceFactory.php',
    'UnicaenAutorisation\Authentication\AuthenticationServiceFactory'           => __DIR__ . '/src/UnicaenAutorisation/Authentication/AuthenticationServiceFactory.php',
    'UnicaenAutorisation\Authentication\Storage\Ldap'                           => __DIR__ . '/src/UnicaenAutorisation/Authentication/Storage/Ldap.php',
    'UnicaenAutorisation\Authentication\Storage\Db'                             => __DIR__ . '/src/UnicaenAutorisation/Authentication/Storage/Db.php',
    'UnicaenAutorisation\Authentication\Storage\Chain'                          => __DIR__ . '/src/UnicaenAutorisation/Authentication/Storage/Chain.php',
    'UnicaenAutorisation\Authentication\Storage\ChainableStorage'               => __DIR__ . '/src/UnicaenAutorisation/Authentication/Storage/ChainableStorage.php',
    'UnicaenAutorisation\Authentication\Storage\ChainServiceFactory'            => __DIR__ . '/src/UnicaenAutorisation/Authentication/Storage/ChainServiceFactory.php',
    'UnicaenAutorisation\Authentication\Storage\ChainEvent'                     => __DIR__ . '/src/UnicaenAutorisation/Authentication/Storage/ChainEvent.php',
    'UnicaenAutorisation\Authentication\Adapter\Ldap'                           => __DIR__ . '/src/UnicaenAutorisation/Authentication/Adapter/Ldap.php',
    'UnicaenAutorisation\Authentication\Adapter\Db'                             => __DIR__ . '/src/UnicaenAutorisation/Authentication/Adapter/Db.php',
    'UnicaenAutorisation\Authentication\Adapter\AbstractFactory'                => __DIR__ . '/src/UnicaenAutorisation/Authentication/Adapter/AbstractFactory.php',
    'UnicaenAutorisation\Authentication\Adapter\Cas'                            => __DIR__ . '/src/UnicaenAutorisation/Authentication/Adapter/Cas.php',
    'UnicaenAutorisation\Assertion\AbstractAssertion'                           => __DIR__ . '/src/UnicaenAutorisation/Assertion/AbstractAssertion.php',
    'UnicaenAutorisation\Acl\NamedRole'                                         => __DIR__ . '/src/UnicaenAutorisation/Acl/NamedRole.php',
    'UnicaenAutorisation\View\RedirectionStrategy'                              => __DIR__ . '/src/UnicaenAutorisation/View/RedirectionStrategy.php',
    'UnicaenAutorisation\View\Helper\AppConnection'                             => __DIR__ . '/src/UnicaenAutorisation/View/Helper/AppConnection.php',
    'UnicaenAutorisation\View\Helper\UserProfileSelectRadioItem'                => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserProfileSelectRadioItem.php',
    'UnicaenAutorisation\View\Helper\UserProfileFactory'                        => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserProfileFactory.php',
    'UnicaenAutorisation\View\Helper\UserStatus'                                => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserStatus.php',
    'UnicaenAutorisation\View\Helper\UserStatusFactory'                         => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserStatusFactory.php',
    'UnicaenAutorisation\View\Helper\UserAbstract'                              => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserAbstract.php',
    'UnicaenAutorisation\View\Helper\UserProfileSelect'                         => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserProfileSelect.php',
    'UnicaenAutorisation\View\Helper\UserConnectionFactory'                     => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserConnectionFactory.php',
    'UnicaenAutorisation\View\Helper\UserInfoFactory'                           => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserInfoFactory.php',
    'UnicaenAutorisation\View\Helper\UserInfo'                                  => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserInfo.php',
    'UnicaenAutorisation\View\Helper\UserCurrentFactory'                        => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserCurrentFactory.php',
    'UnicaenAutorisation\View\Helper\UserProfileSelectRadioItemFactory'         => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserProfileSelectRadioItemFactory.php',
    'UnicaenAutorisation\View\Helper\UserProfileSelectFactory'                  => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserProfileSelectFactory.php',
    'UnicaenAutorisation\View\Helper\UserProfile'                               => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserProfile.php',
    'UnicaenAutorisation\View\Helper\UserCurrent'                               => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserCurrent.php',
    'UnicaenAutorisation\View\Helper\UserConnection'                            => __DIR__ . '/src/UnicaenAutorisation/View/Helper/UserConnection.php',
    'UnicaenAutorisation\Controller\DroitsController'                           => __DIR__ . '/src/UnicaenAutorisation/Controller/DroitsController.php',
    'UnicaenAutorisation\Controller\UtilisateurController'                      => __DIR__ . '/src/UnicaenAutorisation/Controller/UtilisateurController.php',
    'UnicaenAutorisation\Provider\Role\ConfigServiceFactory'                    => __DIR__ . '/src/UnicaenAutorisation/Provider/Role/ConfigServiceFactory.php',
    'UnicaenAutorisation\Provider\Role\Config'                                  => __DIR__ . '/src/UnicaenAutorisation/Provider/Role/Config.php',
    'UnicaenAutorisation\Provider\Role\UsernameServiceFactory'                  => __DIR__ . '/src/UnicaenAutorisation/Provider/Role/UsernameServiceFactory.php',
    'UnicaenAutorisation\Provider\Role\DbRole'                                  => __DIR__ . '/src/UnicaenAutorisation/Provider/Role/DbRole.php',
    'UnicaenAutorisation\Provider\Role\DbRoleServiceFactory'                    => __DIR__ . '/src/UnicaenAutorisation/Provider/Role/DbRoleServiceFactory.php',
    'UnicaenAutorisation\Provider\Role\Username'                                => __DIR__ . '/src/UnicaenAutorisation/Provider/Role/Username.php',
    'UnicaenAutorisation\Provider\Privilege\PrivilegeProviderAwareTrait'        => __DIR__ . '/src/UnicaenAutorisation/Provider/Privilege/PrivilegeProviderAwareTrait.php',
    'UnicaenAutorisation\Provider\Privilege\PrivilegeProviderInterface'         => __DIR__ . '/src/UnicaenAutorisation/Provider/Privilege/PrivilegeProviderInterface.php',
    'UnicaenAutorisation\Provider\Privilege\Privileges'                         => __DIR__ . '/src/UnicaenAutorisation/Provider/Privilege/Privileges.php',
    'UnicaenAutorisation\Provider\Rule\PrivilegeRuleProvider'                   => __DIR__ . '/src/UnicaenAutorisation/Provider/Rule/PrivilegeRuleProvider.php',
    'UnicaenAutorisation\Provider\Identity\DbServiceFactory'                    => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/DbServiceFactory.php',
    'UnicaenAutorisation\Provider\Identity\Basic'                               => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/Basic.php',
    'UnicaenAutorisation\Provider\Identity\Ldap'                                => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/Ldap.php',
    'UnicaenAutorisation\Provider\Identity\Db'                                  => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/Db.php',
    'UnicaenAutorisation\Provider\Identity\Chain'                               => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/Chain.php',
    'UnicaenAutorisation\Provider\Identity\ChainableProvider'                   => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/ChainableProvider.php',
    'UnicaenAutorisation\Provider\Identity\LdapServiceFactory'                  => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/LdapServiceFactory.php',
    'UnicaenAutorisation\Provider\Identity\BasicServiceFactory'                 => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/BasicServiceFactory.php',
    'UnicaenAutorisation\Provider\Identity\ChainServiceFactory'                 => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/ChainServiceFactory.php',
    'UnicaenAutorisation\Provider\Identity\ChainEvent'                          => __DIR__ . '/src/UnicaenAutorisation/Provider/Identity/ChainEvent.php',
    'UnicaenAutorisation\Event\UserAuthenticatedEvent'                          => __DIR__ . '/src/UnicaenAutorisation/Event/UserAuthenticatedEvent.php',
    'UnicaenAutorisation\Event\Listener\AuthenticatedUserSavedAbstractListener' => __DIR__ . '/src/UnicaenAutorisation/Event/Listener/AuthenticatedUserSavedAbstractListener.php',
    'UnicaenAutorisation\Form\Droits\Traits\RoleFormAwareTrait'                 => __DIR__ . '/src/UnicaenAutorisation/Form/Droits/Traits/RoleFormAwareTrait.php',
    'UnicaenAutorisation\Form\Droits\RoleForm'                                  => __DIR__ . '/src/UnicaenAutorisation/Form/Droits/RoleForm.php',
    'RoleFormHydrator'                                                  => __DIR__ . '/src/UnicaenAutorisation/Form/Droits/RoleForm.php',
);

composer.json

0 → 100644
+27 −0
Original line number Diff line number Diff line
{
    "name": "unicaen/auth",
    "description": "Module d'authentification pour les applications Unicaen",
    "repositories": [
        {
            "type": "composer",
            "url": "https://gest.unicaen.fr/packagist"
        }
    ],
    "require": {
        "unicaen/app":                                  "^3.0",
        "unicaen/bjy-authorize":                        "^3.0",
        "jasig/phpcas":                                 "^1.3",
        "ramsey/uuid":                                  "^3.7"
    },
    "require-dev": {
        "phpunit/phpunit":                              "^5.6"
    },
    "autoload": {
        "psr-0": {
            "UnicaenAuthentification": "src/"
        },
        "classmap": [
            "./Module.php"
        ]
    }
}
Loading