Commit b1b5b1dc authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'release-1.0.6'

parents 1de2d41f 48bd1e0e
Loading
Loading
Loading
Loading
Loading

config/autoload/local.php.dist

100644 → 100755
+42 −70
Original line number Diff line number Diff line
<?php

use Zend\Mail\Transport\Smtp;
/**
 * Fichier de config locale, SANS INFORMATIONS SENSIBLES.
 */

return [
    'import-api' => [
        'etablissements' => [
            // code établissement => [config]
            'UNILIM' => [
                'url'      => 'https://sygal-import-ws:443', // https://{nom du service docker-compose}:443
                'proxy'    => false, // indispensable pour docker-compose run/exec
                'verify'   => false, // si true : cURL error 60: SSL certificate problem: self signed certificate
                'user'     => 'sygal-app',
                'password' => 'xxxxxxxxxxx',
            ],
        ],
        // cf. secret.local.php
    ],

    'doctrine' => [
        'connection' => [
            'orm_default' => [
                'params' => [
                    'host'     => 'host.domain.fr',
                    'dbname'   => 'DBNAME',
                    'port'     => '1523',
                    'user'     => $user = 'sygal_test',
                    'password' => 'xxxxxxxxxxx',
                    'charset'  => 'AL32UTF8',
                    'CURRENT_SCHEMA' => $user,
                ],
            ],
        ],
        // cf. secret.local.php
    ],

    'fichier' => [
        'root_dir_path' => '/var/www/sygal/upload',
    ],
    'navigation'      => [
        'information' => [
            'accueil' => [
                'pages' => [
                    'doctorat' => [
                        'label' => 'Le doctorat en Normandie',
                        'title' => "Informations sur le doctorat et sa gestion en Normandie"
                    ],
                    'ecoles-doctorales' => [
                        'label' => 'Les Ecoles Doctorales normandes',
                        'title' => "Informations sur les Ecoles Doctorales et le Collège des Ecoles doctorales"
                    ],
                    'guide-these' => [
                        'label' => 'Guide de la thèse',
                        'title' => "Informations sur le déroulement de la thèse et formulaires administratifs à l’intention du doctorant et de ses encadrants"
                    ],
                ],
            ],
        ],
    ],

    'cli_config' => [
        'scheme' => 'http',
        'domain' => 'localhost:8000',
        // cf. secret.local.php
    ],

    'public_files' => [
        'cache_enabled' => false,
    ],

    'unicaen-app' => [
        'mail' => [
            'transport' => Smtp::class,
            'transport_options' => [
                'host' => 'smtp.domain.fr',
                'port' => 25,
            ],
            'from' => 'ne_pas_repondre@domain.fr',
            'redirect_to' => [/*'mail@domain.fr'*/],
            // cf. secret.local.php
            'do_not_send' => false,
        ],
        'ldap' => [
            'connection' => [
                'default' => [
                    'params' => $ldapParams = [
                    'params' => [
                        // pas de LDAP
                    ]
                ]
            ]
@@ -82,22 +41,32 @@ return [
        'maintenance' => [
            // activation (true: activé, false: désactivé)
            'enable' => false,
            // message à afficher
            'message' => "SyGAL est indisponible pour des raisons de maintenance, veuillez nous excuser pour la gêne occasionnée.",
            // le mode console est-il aussi concerné (TRUE: oui, FALSE: non)
            'include_cli' => false,
            // liste blanche des adresses IP clientes non concernées
            'white_list' => [
                //['127.0.0.1'],   // localhost
                // cf. secret.local.php
            ],
        ],
    ],
    'unicaen-ldap' => $ldapParams,

    'unicaen-ldap' => [
        // pas de LDAP
    ],

    'unicaen-auth' => [
        'local' => [
            'enabled' => true,
        ],
        'ldap' => [
            'enabled' => false,
        ],
        'shibboleth' => [
            'enable' => true,
            'simulate' => [
                'eppn'        => 'id@domain.fr',
                'supannEmpId' => 'xxxxxx',
                // cf. secret.local.php
            ],
            'aliases' => [
                'eppn'                   => 'HTTP_EPPN',
@@ -108,25 +77,28 @@ return [
                'supannCivilite'         => 'HTTP_SUPANNCIVILITE',
                'displayName'            => 'HTTP_DISPLAYNAME',
                'sn'                     => 'HTTP_SN',
                'surname'                => 'HTTP_SURNAME',
                'givenName'              => 'HTTP_GIVENNAME',
            ],
            'required_attributes' => [
                'eppn',
                'mail',
                'eduPersonPrincipalName',
                'supannCivilite',
                'displayName',
                'sn|surname', // i.e. 'sn' ou 'surname'
                'givenName',
                'supannEtuId|supannEmpId',
            ],
        ],
        'cas' => [
//            'connection' => [
//                'default' => [
//                    'params' => [
//                        'hostname' => 'host.domain.fr',
//                        'port' => 443,
//                        'version' => "2.0",
//                        'uri' => "",
//                        'debug' => false,
//                    ],
//                ],
//            ],
            // pas de CAS
        ],
        'usurpation_allowed_usernames' => [
            // cf. secret.local.php
        ],
    ],

    'zenddevelopertools' => [
        /**
         * General Profiler settings
+81 −0
Original line number Diff line number Diff line
<?php
/**
 * Fichier de config locale, AVEC INFORMATIONS SENSIBLES.
 */

use Zend\Mail\Transport\Smtp;

return [

    'import-api' => [
        'etablissements' => [
            // code établissement => [config]
            'UNILIM' => [
                'url'      => 'https://sygal-import-ws:443', // https://{nom du service docker-compose}:443
                'proxy'    => false, // indispensable pour docker-compose run/exec
                'verify'   => false, // si true : cURL error 60: SSL certificate problem: self signed certificate
                'user'     => 'sygal-app',
                'password' => 'xxxxxxxxxxx',
            ],
        ],
    ],

    'doctrine' => [
        'connection' => [
            'orm_default' => [
                'params' => [
                    'host'     => 'host.domain.fr',
                    'dbname'   => 'DBNAME',
                    'port'     => '1523',
                    'user'     => $user = 'sygal',
                    'password' => 'xxxxxxxxxxx',
                    'charset'  => 'AL32UTF8',
                    'CURRENT_SCHEMA' => $user,
                ],
            ],
        ],
    ],

    'fichier' => [
        'root_dir_path' => '/var/www/sygal/upload',
    ],

    'cli_config' => [
        'scheme' => 'http',
        'domain' => 'localhost:8000',
    ],

    'unicaen-app' => [
        'mail' => [
            'transport' => Smtp::class,
            'transport_options' => [
                'host' => 'smtp.unicaen.fr',
                'port' => 25,
            ],
            'from' => 'ne_pas_repondre@domain.fr',
            'redirect_to' => [
                //'e.mail@domain.fr',
            ],
        ],
        'maintenance' => [
            // liste blanche des adresses IP clientes non concernées
            'white_list' => [
                //['172.17.0.1'], // docker container ip
                //['195.123.456.789', '194.123.456.789'],
            ],
        ],
    ],

    'unicaen-auth' => [
        'shibboleth' => [
            'simulate' => [
                //'eppn'        => 'username@domain.fr',
                //'supannEmpId' => '12345',
            ],
        ],
        'usurpation_allowed_usernames' => [
            'username',
            'username@domain.fr',
        ],
    ],
];
+3 −3
Original line number Diff line number Diff line
@@ -2,9 +2,9 @@
return [
    'unicaen-app' => [
        'app_infos' => [
            'version' => '1.0.5',
            'date' => '31/01/2019',
            'version' => '1.0.6',
            'date' => '01/02/2019',
        ],
    ],
    'comment' => 'Fichier généré le 31/01/2019 à 14:14:46 avec /home/gauthierb/workspace/sygal/bump-version',
    'comment' => 'Fichier généré le 01/02/2019 à 11:02:57 avec /home/gauthierb/workspace/sygal/bump-version',
];
+27 −10
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@ namespace Import\Service;
use DateTime;
use Doctrine\DBAL\ConnectionException;
use Doctrine\DBAL\DBALException;
use Doctrine\ORM\OptimisticLockException;
use Import\Model\SynchroLog;
use UnicaenApp\Exception\LogicException;
use UnicaenApp\Exception\RuntimeException;
@@ -54,11 +53,13 @@ class SynchroService
            throw new LogicException("Aucun service à synchroniser");
        }

        // ajout en premier des appels de procédures permettant d'enregistrer certains changements durant la synchro
        $calls = $this->getProcedureCallsForStoringObservImportResults();

        // détermination des appels de procédures de synchro à faire
        $calls = [];
        foreach ($this->services as $service => $params) {
            $sqlFilter = isset($params['sql_filter']) ? $params['sql_filter'] : [];
            $calls = array_merge($calls, $this->getImportProcedureCallsForService($service, $sqlFilter));
            $calls = array_merge($calls, $this->getProcedureCallsForImportingService($service, $sqlFilter));
        }
        // suppression des appels en double EN CONSERVANT LE DERNIER appel et non le premier
        $calls = array_reverse(array_unique(array_reverse($calls)));
@@ -80,23 +81,39 @@ class SynchroService
        try {
            $connection->executeQuery($plsql);
            $connection->commit();
            $status = 'SUCCESS';
            $success = true;
            $message = null;
        } catch (DBALException $e) {
            $status = 'FAILURE';
            $message = "Erreur rencontrée lors de l'exécution des procédures de synchro (import) : " . PHP_EOL .
                $e->getTraceAsString();
            $success = false;
            $message = "Erreur rencontrée lors de l'exécution des procédures de synchro (import) : " . PHP_EOL . $e->getMessage();
            try {
                $connection->rollBack();
            } catch (ConnectionException $e) {
                $message .= PHP_EOL . "Et en plus le rollback a échoué!";
            }
        }

        } finally {
            $finishDate = date_create();
            $status = $success ? 'SUCCESS' : 'FAILURE';
            $this->log($startDate, $finishDate, $plsql, $status, $message);
        }

        if (! $success) {
            throw new RuntimeException($message);
        }
    }

    /**
     * Retourne les appels de procédures permettant d'enregistrer certains changements durant la synchro.
     *
     * @return string[]
     */
    private function getProcedureCallsForStoringObservImportResults()
    {
        return [
            'APP_IMPORT.STORE_OBSERV_RESULTS();',
        ];
    }

    /**
     * Retourne, pour un service donné, les appels ORDONNÉS de procédures de synchronisation à lancer.
     *
@@ -104,7 +121,7 @@ class SynchroService
     * @param string $sqlFilter
     * @return string[]
     */
    private function getImportProcedureCallsForService($serviceName, $sqlFilter = null)
    private function getProcedureCallsForImportingService($serviceName, $sqlFilter = null)
    {
        $sqlFilterSnippet = $sqlFilter ? "'WHERE " . str_replace("'", "''", $sqlFilter) . "'" : '';