Loading composer.lock +6 −6 Changes for composer.lock: 6 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -1807,11 +1807,11 @@ }, { "name": "unicaen/app", "version": "1.3.7", "version": "1.3.8", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/app.git", "reference": "fd95b9fbcd29660a265b9019c619d532ef6b2037" "reference": "95d8e41b41b8f10ace5ab6ec98fa37aa7babb9a3" }, "require": { "doctrine/doctrine-orm-module": ">=0.7", Loading Loading @@ -1854,15 +1854,15 @@ ] }, "description": "Module de base des applications unicaen", "time": "2018-03-15T15:14:58+00:00" "time": "2018-03-20T09:08:06+00:00" }, { "name": "unicaen/auth", "version": "1.2.0", "version": "1.2.1", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/auth.git", "reference": "737a0402b9050f868c0ae1d920120fcba854c75c" "reference": "7abd386db52021383bc6dc9a84793bb59d8c3b2e" }, "require": { "bjyoungblood/bjy-authorize": ">=1.4", Loading @@ -1884,7 +1884,7 @@ ] }, "description": "Module d'authentification pour les applications Unicaen", "time": "2018-03-19T09:01:16+00:00" "time": "2018-03-20T09:01:12+00:00" }, { "name": "unicaen/code", Loading data/SQL/sygal/data/00-divers.sql +5 −5 Changes for data/SQL/sygal/data/00-divers.sql: 5 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -7,11 +7,11 @@ insert into TYPE_STRUCTURE(ID, CODE, LIBELLE) values (3, 'unite-recherche', 'Uni ---------------------- ETABLISSEMENT --------------------- INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (1, 'COMUE', 'Normandie Université'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (2, 'UCN', 'Université de Caen Normandie'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (3, 'URN', 'Université de Rouen Normandie'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (4, 'ULHN', 'Université Le Havre Normandie'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (5, 'INSA', 'INSA de Rouen'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (1, 'COMUE', null); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (2, 'UCN', 'unicaen.fr'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (3, 'URN', 'univ-rouen.fr'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (4, 'ULHN', 'univ-lehavre.fr'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (5, 'INSA', 'insa-rouen.fr'); ---------------------- SOURCE --------------------- Loading data/SQL/sygal/schema-sygal.sql +12 −7 Changes for data/SQL/sygal/schema-sygal.sql: 12 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -62,18 +62,23 @@ CREATE TABLE ETABLISSEMENT ( ID NUMBER constraint ETAB_PK primary key, CODE VARCHAR2(32 char) not null constraint ETAB_CODE_UN unique, LIBELLE VARCHAR2(128) NOT NULL constraint ETAB_LIBELLE_UN unique, CHEMIN_LOGO VARCHAR2(200) NOT NULL DOMAINE VARCHAR2(50) not null, STRUCTURE_ID NUMBER not null constraint ETAB_STRUCT_FK references STRUCTURE, HISTO_CREATION DATE default sysdate not null, HISTO_MODIFICATION DATE default SYSDATE not null, HISTO_DESTRUCTION DATE, HISTO_CREATEUR_ID NUMBER constraint ETAB_UTIL_CREATEUR_FK references UTILISATEUR, HISTO_MODIFICATEUR_ID NUMBER constraint ETAB_UTIL_MODIFICATEUR_FK references UTILISATEUR, HISTO_DESTRUCTEUR_ID NUMBER constraint ETAB_UTIL_DESTRUCTEUR_FK references UTILISATEUR ); CREATE SEQUENCE ETABLISSEMENT_ID_SEQ; alter table ETABLISSEMENT add structure_id NUMBER not null constraint ETAB_STRUCT_FK references STRUCTURE(id); alter table ETABLISSEMENT MODIFY structure_id not null; alter table ETABLISSEMENT drop COLUMN LIBELLE; alter table ETABLISSEMENT drop COLUMN CHEMIN_LOGO; COMMENT ON COLUMN ETABLISSEMENT.DOMAINE IS 'Domaine DNS de l''établissement tel que présent dans l''EPPN Shibboleth, ex: unicaen.fr.'; CREATE UNIQUE INDEX OTH.ETABLISSEMENT_DOMAINE_uindex ON ETABLISSEMENT(DOMAINE); create index ETABLISSEMENT_STRUCT_ID_IDX on ETABLISSEMENT (structure_id); CREATE SEQUENCE ETABLISSEMENT_ID_SEQ; --------------------------- API_LOG ----------------------- Loading module/Application/config/module.config.php +2 −1 Changes for module/Application/config/module.config.php: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ use Application\Service\Notification\NotificationServiceFactory; use Application\Service\Role\RoleService; use Application\Service\ServiceAwareInitializer; use Application\Service\UserContextServiceAwareInitializer; use Application\Service\UserContextServiceFactory; use Application\View\Helper\EscapeTextHelper; use Application\View\Helper\QueryParamsHelperFactory; use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain; Loading Loading @@ -165,11 +166,11 @@ return array( 'invokables' => array( 'RouteMatchInjector' => RouteMatchInjector::class, 'UserRoleSelectedEventListener' => UserRoleSelectedEventListener::class, 'UnicaenAuth\Service\UserContext' => 'Application\Service\UserContextService', 'RoleService' => RoleService::class, ), 'factories' => array( 'navigation' => NavigationFactoryFactory::class, 'UnicaenAuth\Service\UserContext' => UserContextServiceFactory::class, 'UserAuthenticatedEventListener' => UserAuthenticatedEventListenerFactory::class, 'UnicaenApp\Service\Mailer' => MailerServiceFactory::class, 'NotificationService' => NotificationServiceFactory::class, Loading module/Application/src/Application/Authentication/Storage/AppStorage.php +17 −27 Changes for module/Application/src/Application/Authentication/Storage/AppStorage.php: 17 added lines, 27 removed lines. Original line number Diff line number Diff line Loading @@ -2,16 +2,17 @@ namespace Application\Authentication\Storage; use Application\Entity\AuthUserWrapper; use Application\Entity\Db\Doctorant; use Application\Entity\Db\Etablissement; use Application\Entity\Db\Utilisateur; use Application\Service\Doctorant\DoctorantServiceAwareTrait; use Application\Service\Etablissement\EtablissementServiceAwareTrait; use Application\Service\Utilisateur\UtilisateurServiceAwareTrait; use Doctrine\ORM\NonUniqueResultException; use UnicaenApp\Entity\Ldap\People; use UnicaenApp\Exception\RuntimeException; use UnicaenAuth\Authentication\Storage\ChainableStorage; use UnicaenAuth\Authentication\Storage\ChainEvent; use UnicaenAuth\Entity\Shibboleth\ShibUser; use Zend\Authentication\Exception\ExceptionInterface; /** Loading @@ -27,24 +28,20 @@ class AppStorage implements ChainableStorage { use UtilisateurServiceAwareTrait; use DoctorantServiceAwareTrait; use EtablissementServiceAwareTrait; const KEY_DB_UTILSATEUR = 'db'; const KEY_DOCTORANT = 'doctorant'; /** * @var mixed * @var array */ private $contents; /** * @var People * @var AuthUserWrapper */ private $people; /** * @var ShibUser */ private $shibUser; private $userWrapper; /** * @var Doctorant Loading @@ -59,14 +56,12 @@ class AppStorage implements ChainableStorage { $this->contents = $e->getContents(); $this->people = $this->contents['ldap']; $this->shibUser = $this->contents['shib']; if (null === $this->people && null === $this->shibUser) { // throw new RuntimeException("Aucune donnée d'authentification LDAP ni Shibboleth disponible"); if (null === $this->contents['ldap'] && null === $this->contents['shib']) { return; } $this->userWrapper = AuthUserWrapper::inst($this->contents['ldap'] ?: $this->contents['shib']); /** * Recherche de l'utilisateur connecté dans la table Utilisateur. */ Loading Loading @@ -95,11 +90,7 @@ class AppStorage implements ChainableStorage */ private function fetchUtilisateur() { if (null !== $this->people) { $username = $this->people->getSupannAliasLogin(); } else { $username = $this->shibUser->getUsername(); } $username = $this->userWrapper->getUsername(); /** @var Utilisateur $utilisateur */ $utilisateur = $this->utilisateurService->getRepository()->findOneBy(['username' => $username]); Loading Loading @@ -130,13 +121,12 @@ class AppStorage implements ChainableStorage * - avec son numéro étudiant (Doctorant::sourceCode), * - avec son persopass (DoctorantCompl::persopass), seulement après qu'il l'a saisi sur la page d'identité de la thèse. */ if (null !== $this->people) { $username = $this->people->getSupannAliasLogin(); } else { $username = $this->shibUser->getUsername(); } // todo: solution provisoire! $etablissement = 'UCN'; $username = $this->userWrapper->getUsername(); $domaineEtab = $this->userWrapper->getDomainFromEppn(); /** @var Etablissement $etablissement */ $etablissement = $this->etablissementService->getRepository()->findOneByDomaine($domaineEtab); try { $this->doctorant = $this->doctorantService->getRepository()->findOneByUsernameAndEtab($username, $etablissement); } catch (NonUniqueResultException $e) { Loading Loading
composer.lock +6 −6 Changes for composer.lock: 6 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -1807,11 +1807,11 @@ }, { "name": "unicaen/app", "version": "1.3.7", "version": "1.3.8", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/app.git", "reference": "fd95b9fbcd29660a265b9019c619d532ef6b2037" "reference": "95d8e41b41b8f10ace5ab6ec98fa37aa7babb9a3" }, "require": { "doctrine/doctrine-orm-module": ">=0.7", Loading Loading @@ -1854,15 +1854,15 @@ ] }, "description": "Module de base des applications unicaen", "time": "2018-03-15T15:14:58+00:00" "time": "2018-03-20T09:08:06+00:00" }, { "name": "unicaen/auth", "version": "1.2.0", "version": "1.2.1", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/auth.git", "reference": "737a0402b9050f868c0ae1d920120fcba854c75c" "reference": "7abd386db52021383bc6dc9a84793bb59d8c3b2e" }, "require": { "bjyoungblood/bjy-authorize": ">=1.4", Loading @@ -1884,7 +1884,7 @@ ] }, "description": "Module d'authentification pour les applications Unicaen", "time": "2018-03-19T09:01:16+00:00" "time": "2018-03-20T09:01:12+00:00" }, { "name": "unicaen/code", Loading
data/SQL/sygal/data/00-divers.sql +5 −5 Changes for data/SQL/sygal/data/00-divers.sql: 5 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -7,11 +7,11 @@ insert into TYPE_STRUCTURE(ID, CODE, LIBELLE) values (3, 'unite-recherche', 'Uni ---------------------- ETABLISSEMENT --------------------- INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (1, 'COMUE', 'Normandie Université'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (2, 'UCN', 'Université de Caen Normandie'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (3, 'URN', 'Université de Rouen Normandie'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (4, 'ULHN', 'Université Le Havre Normandie'); INSERT INTO ETABLISSEMENT (ID, CODE, LIBELLE) VALUES (5, 'INSA', 'INSA de Rouen'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (1, 'COMUE', null); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (2, 'UCN', 'unicaen.fr'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (3, 'URN', 'univ-rouen.fr'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (4, 'ULHN', 'univ-lehavre.fr'); INSERT INTO ETABLISSEMENT (ID, CODE, DOMAINE) VALUES (5, 'INSA', 'insa-rouen.fr'); ---------------------- SOURCE --------------------- Loading
data/SQL/sygal/schema-sygal.sql +12 −7 Changes for data/SQL/sygal/schema-sygal.sql: 12 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -62,18 +62,23 @@ CREATE TABLE ETABLISSEMENT ( ID NUMBER constraint ETAB_PK primary key, CODE VARCHAR2(32 char) not null constraint ETAB_CODE_UN unique, LIBELLE VARCHAR2(128) NOT NULL constraint ETAB_LIBELLE_UN unique, CHEMIN_LOGO VARCHAR2(200) NOT NULL DOMAINE VARCHAR2(50) not null, STRUCTURE_ID NUMBER not null constraint ETAB_STRUCT_FK references STRUCTURE, HISTO_CREATION DATE default sysdate not null, HISTO_MODIFICATION DATE default SYSDATE not null, HISTO_DESTRUCTION DATE, HISTO_CREATEUR_ID NUMBER constraint ETAB_UTIL_CREATEUR_FK references UTILISATEUR, HISTO_MODIFICATEUR_ID NUMBER constraint ETAB_UTIL_MODIFICATEUR_FK references UTILISATEUR, HISTO_DESTRUCTEUR_ID NUMBER constraint ETAB_UTIL_DESTRUCTEUR_FK references UTILISATEUR ); CREATE SEQUENCE ETABLISSEMENT_ID_SEQ; alter table ETABLISSEMENT add structure_id NUMBER not null constraint ETAB_STRUCT_FK references STRUCTURE(id); alter table ETABLISSEMENT MODIFY structure_id not null; alter table ETABLISSEMENT drop COLUMN LIBELLE; alter table ETABLISSEMENT drop COLUMN CHEMIN_LOGO; COMMENT ON COLUMN ETABLISSEMENT.DOMAINE IS 'Domaine DNS de l''établissement tel que présent dans l''EPPN Shibboleth, ex: unicaen.fr.'; CREATE UNIQUE INDEX OTH.ETABLISSEMENT_DOMAINE_uindex ON ETABLISSEMENT(DOMAINE); create index ETABLISSEMENT_STRUCT_ID_IDX on ETABLISSEMENT (structure_id); CREATE SEQUENCE ETABLISSEMENT_ID_SEQ; --------------------------- API_LOG ----------------------- Loading
module/Application/config/module.config.php +2 −1 Changes for module/Application/config/module.config.php: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ use Application\Service\Notification\NotificationServiceFactory; use Application\Service\Role\RoleService; use Application\Service\ServiceAwareInitializer; use Application\Service\UserContextServiceAwareInitializer; use Application\Service\UserContextServiceFactory; use Application\View\Helper\EscapeTextHelper; use Application\View\Helper\QueryParamsHelperFactory; use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain; Loading Loading @@ -165,11 +166,11 @@ return array( 'invokables' => array( 'RouteMatchInjector' => RouteMatchInjector::class, 'UserRoleSelectedEventListener' => UserRoleSelectedEventListener::class, 'UnicaenAuth\Service\UserContext' => 'Application\Service\UserContextService', 'RoleService' => RoleService::class, ), 'factories' => array( 'navigation' => NavigationFactoryFactory::class, 'UnicaenAuth\Service\UserContext' => UserContextServiceFactory::class, 'UserAuthenticatedEventListener' => UserAuthenticatedEventListenerFactory::class, 'UnicaenApp\Service\Mailer' => MailerServiceFactory::class, 'NotificationService' => NotificationServiceFactory::class, Loading
module/Application/src/Application/Authentication/Storage/AppStorage.php +17 −27 Changes for module/Application/src/Application/Authentication/Storage/AppStorage.php: 17 added lines, 27 removed lines. Original line number Diff line number Diff line Loading @@ -2,16 +2,17 @@ namespace Application\Authentication\Storage; use Application\Entity\AuthUserWrapper; use Application\Entity\Db\Doctorant; use Application\Entity\Db\Etablissement; use Application\Entity\Db\Utilisateur; use Application\Service\Doctorant\DoctorantServiceAwareTrait; use Application\Service\Etablissement\EtablissementServiceAwareTrait; use Application\Service\Utilisateur\UtilisateurServiceAwareTrait; use Doctrine\ORM\NonUniqueResultException; use UnicaenApp\Entity\Ldap\People; use UnicaenApp\Exception\RuntimeException; use UnicaenAuth\Authentication\Storage\ChainableStorage; use UnicaenAuth\Authentication\Storage\ChainEvent; use UnicaenAuth\Entity\Shibboleth\ShibUser; use Zend\Authentication\Exception\ExceptionInterface; /** Loading @@ -27,24 +28,20 @@ class AppStorage implements ChainableStorage { use UtilisateurServiceAwareTrait; use DoctorantServiceAwareTrait; use EtablissementServiceAwareTrait; const KEY_DB_UTILSATEUR = 'db'; const KEY_DOCTORANT = 'doctorant'; /** * @var mixed * @var array */ private $contents; /** * @var People * @var AuthUserWrapper */ private $people; /** * @var ShibUser */ private $shibUser; private $userWrapper; /** * @var Doctorant Loading @@ -59,14 +56,12 @@ class AppStorage implements ChainableStorage { $this->contents = $e->getContents(); $this->people = $this->contents['ldap']; $this->shibUser = $this->contents['shib']; if (null === $this->people && null === $this->shibUser) { // throw new RuntimeException("Aucune donnée d'authentification LDAP ni Shibboleth disponible"); if (null === $this->contents['ldap'] && null === $this->contents['shib']) { return; } $this->userWrapper = AuthUserWrapper::inst($this->contents['ldap'] ?: $this->contents['shib']); /** * Recherche de l'utilisateur connecté dans la table Utilisateur. */ Loading Loading @@ -95,11 +90,7 @@ class AppStorage implements ChainableStorage */ private function fetchUtilisateur() { if (null !== $this->people) { $username = $this->people->getSupannAliasLogin(); } else { $username = $this->shibUser->getUsername(); } $username = $this->userWrapper->getUsername(); /** @var Utilisateur $utilisateur */ $utilisateur = $this->utilisateurService->getRepository()->findOneBy(['username' => $username]); Loading Loading @@ -130,13 +121,12 @@ class AppStorage implements ChainableStorage * - avec son numéro étudiant (Doctorant::sourceCode), * - avec son persopass (DoctorantCompl::persopass), seulement après qu'il l'a saisi sur la page d'identité de la thèse. */ if (null !== $this->people) { $username = $this->people->getSupannAliasLogin(); } else { $username = $this->shibUser->getUsername(); } // todo: solution provisoire! $etablissement = 'UCN'; $username = $this->userWrapper->getUsername(); $domaineEtab = $this->userWrapper->getDomainFromEppn(); /** @var Etablissement $etablissement */ $etablissement = $this->etablissementService->getRepository()->findOneByDomaine($domaineEtab); try { $this->doctorant = $this->doctorantService->getRepository()->findOneByUsernameAndEtab($username, $etablissement); } catch (NonUniqueResultException $e) { Loading