Commit b5bc2977 authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Doc filtrage int/ext + maj changelog + tbl mis à jour

parent 1309c117
......@@ -8,21 +8,17 @@ Objectif : Connecteur Export OSE => Logiciel RH
* Ajout d'un privilège pour afficher / masquer l'adresse, email pro, email perso, téléphone (RGPD) sur la fiche intervenant
* Ajout d'un nouveau privilège pour dissocier le droit d'exporter en PDF les états de paiement et les mises en paiement (#35845)
* Ajout des volumes horaires par type d'intervention (CM,TP,TD) et du nombre de groupes par élément pédagogique dans l'extraction de l'offre de formation (#36625)
* Amélioration UX dans l'écran gestion agrément par lot, visualisation de la fiche intervenant dans un nouvel onglet au lieu d'une modal box trop petite qui provoquait notamment un dysfonctionnement de l'affichage des PJ (#37269)
* Amélioration ergonomique dans l'écran de gestion des agréments par lot: visualisation de la fiche intervenant dans un nouvel onglet au lieu d'une fenêtre modale trop petite qui provoquait notamment un dysfonctionnement de l'affichage des PJ (#37269)
* Les heures payées en année antérieure / année en cours (AA/AC) peuvent être réparties de manière personnalisée, autrement qu'en 4/6 - 6/10
* Formules de calcul de Paris, Artois, Lille
* Formule de calcul de Poitiers mise à jour
## Corrections
* Correction bug listing fichier d'une pièce jointe dans le scénario suivant : devalidation de la piece jointe, suppression du fichier, upload du nouveau fichier.
## Corrections de bugs
* Correction d'un bug de rafraichissement des pièces jointes dans le scénario suivant : dévalidation de la pièce jointe, suppression du fichier, téléversement du nouveau fichier.
## Notes de mise à jour
Il est nécessaire d'éditer votre fichier config.local.php et de modifier la ligne du paramétre 'inEtablissement' (si vous l'avez car c'est un paramétre optionnel) comme ci :
`
$hostLocalization = \Application::$container->get(\UnicaenApp\HostLocalization\HostLocalization::class);
`
La class \UnicaenApp\HostLocalization\HostLocalizationUnicaen a été renommé par \UnicaenApp\HostLocalization\HostLocalization):
Si vous voulez activer le filtrage dans/hors établissement (recommandé), une nouvelle documentation est disponible : [Documentation](doc/detection-etablissement-ou-extérieur.md)
# OSE 15 (12/03/21)
......@@ -127,11 +123,16 @@ Pour alimenter la table employeur de OSE, vous avez deux possiblités :
* soit importer votre propre liste d'employeurs via une vue source [SRC_EMPLOYEUR](doc/Connecteurs-Import/Création-tables/EMPLOYEUR.md) dédiée, à l'instar des autres connecteurs et ainsi alimenter la table employeur en la synchronisant avec votre vue source.
* soit utiliser le référentiel sirene officiel de [data.gouv.fr](https://www.data.gouv.fr/fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/) que nous vous préparons et mettons à disposition avec une mise à jour régulière. Pour cela vous devez utiliser la commande `./bin/ose update-employeur` qui se chargera de remplir la table employeur avec ces données. Cette commande devra être exécutée de manière régulière, une fois par mois environ si vous voulez que votre référentiel d'employeurs soit à jour.
# OSE 14.18 (à venir)
## Nouveautés
* Formule de calcul de Paris et Artois
* Formules de calcul de Paris, Artois, Lille
* Formule de calcul de Poitiers mise à jour
* Création d'un nouveau privilèges pour dissocier le droit sur l'export pdf des états de paiement et l'export pdf des mises en paiement (#35845)
# OSE 14.17 (11/03/21)
......
......@@ -17,26 +17,17 @@ return [
'locale' => 'fr_FR',
/* Fonction qui détermine si le client est situé dans le réseau de l'établissement ou non *
* Si la fonction retourne true, alors on n'est topujours considéré comme connecté depuis le réseau de l'établissement
* Si la fonction retourne true, alors on n'est considéré comme connecté depuis le réseau de l'établissement
* Si la fonction retourne false, alors on est considéré comme accédant à OSE depuis l'extérieur de l'établissement
*
* Il vous revient d'écrire votre propre règle.
* Un exemple vous est fourni ici : https://git.unicaen.fr/open-source/OSE/-/blob/master/doc/detection-etablissement-ou-extérieur.md
*/
'inEtablissement' => function () {
$hostLocalization = \Application::$container->get(\UnicaenApp\HostLocalization\HostLocalization::class);
return $hostLocalization->inEtablissement();
// a vous d'écrire votre propre test.
return true;
},
'activated' => false,
'masque-ip' => ''
'proxies' => [
//xxx.xx.xxx.xx
],
'reverse-proxies' => [
//xxx.xx.xxx.xx
],
],
/* Configuration du mode maintenance */
......
......@@ -9,16 +9,6 @@ if (file_exists($versionFile)) {
return [
'unicaen-app' => [
/**
* Information pour la gestion du filtrage d'accés hors établissement de l'application
*/
'hostlocalization' => [
'activated' => AppConfig::get('global', 'activated', false),
'proxies' => AppConfig::get('global', 'proxies', []),
'reverse-proxies' => AppConfig::get('global', 'reverse-proxies', []),
'masque-ip' => AppConfig::get('global', 'masque-ip', ''),
],
/**
* Informations concernant cette application
*/
......
......@@ -1211,7 +1211,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id) total_heures,
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id) * pea.pourc_exercice_aa total_heures_aa,
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id ORDER BY mep.id) cumul_heures,
CASE WHEN p2.valeur = ''prorata'' THEN mep.heures * pea.pourc_exercice_aa ELSE ose_divers.CALC_HEURES_AA(
CASE WHEN p2.valeur = ''prorata'' THEN COALESCE(mep.heures,0) * pea.pourc_exercice_aa ELSE ose_divers.CALC_HEURES_AA(
COALESCE(mep.heures,0), -- heures
pea.pourc_exercice_aa, -- pourc_exercice_aa
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id), -- total_heures
......@@ -1273,7 +1273,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id) total_heures,
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id) * pea.pourc_exercice_aa total_heures_aa,
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id ORDER BY mep.id) cumul_heures,
CASE WHEN p2.valeur = ''prorata'' THEN mep.heures * pea.pourc_exercice_aa ELSE ose_divers.CALC_HEURES_AA(
CASE WHEN p2.valeur = ''prorata'' THEN COALESCE(mep.heures,0) * pea.pourc_exercice_aa ELSE ose_divers.CALC_HEURES_AA(
COALESCE(mep.heures,0), -- heures
pea.pourc_exercice_aa, -- pourc_exercice_aa
SUM(COALESCE(mep.heures,0)) OVER (partition BY frs.id), -- total_heures
......@@ -1332,8 +1332,8 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
AND t.INTERVENANT_ID = v.INTERVENANT_ID
AND t.STRUCTURE_ID = v.STRUCTURE_ID
AND COALESCE(t.MISE_EN_PAIEMENT_ID,0) = COALESCE(v.MISE_EN_PAIEMENT_ID,0)
AND COALESCE(t.DOMAINE_FONCTIONNEL_ID,0) = COALESCE(v.DOMAINE_FONCTIONNEL_ID,0)
AND COALESCE(t.PERIODE_PAIEMENT_ID,0) = COALESCE(v.PERIODE_PAIEMENT_ID,0)
AND COALESCE(t.DOMAINE_FONCTIONNEL_ID,0) = COALESCE(v.DOMAINE_FONCTIONNEL_ID,0)
AND t.HEURES_A_PAYER = v.HEURES_A_PAYER
AND t.HEURES_A_PAYER_POND = v.HEURES_A_PAYER_POND
AND t.HEURES_DEMANDEES = v.HEURES_DEMANDEES
......@@ -1351,8 +1351,8 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
v.INTERVENANT_ID,
v.STRUCTURE_ID,
v.MISE_EN_PAIEMENT_ID,
v.DOMAINE_FONCTIONNEL_ID,
v.PERIODE_PAIEMENT_ID,
v.DOMAINE_FONCTIONNEL_ID,
v.HEURES_A_PAYER,
v.HEURES_A_PAYER_POND,
v.HEURES_DEMANDEES,
......
# Detecter si on est connecté depuis l'établissement ou bien depuis l'extérieur
## Introduction
Certaines fonctionnalités de OSE peuvent donner accès à des informations sensibles.
Pour des raisons de sécurité, il est recommandé d'éviter à certains rôles (administrateur, etc.) d'avoir accès à l'application depuis l'extérieur de votre établissement.
## Paramétrage au niveau des rôles
![Admin rôles](detection-etablissement-ou-extérieur.png)
La gestion des rôles se fait dans Administration / Droits d'accès / Rôles.
Dans la fenêtre de création/modification d'un rôle, il vous suffit de cocher ou non "Utilisable hors du réseau informatique de l'établissement".
## Paramétrage de la fonction de détection
Ensuite, pour que le filtrage fonctionne, il faut écrire votre propre règle de détection.
Cela se passe dans votre fichier de configuration `config.local.php`.
Le paramètre global "inEtablissement" est une fonction qu'il vous revient de personnaliser.
Renvoyer :
* `true` signifie qu'on est considéré comme "dans l'établissement";
* `false` signifie qu'on est considéré comme "hors de l'établissement".
A titre d'exemple, à Caen nous réalisons des tests pour savoir :
* si notre IP est locale ou non
* si nous passons par le proxy ou le reverse proxy ou non
Voici un aperçu de notre fonction de filtrage :
```php
'inEtablissement' => function () {
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
$forwarded = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
$ipInterne = '10.';
$proxies = [
// IPs fictives
'10.1.2.3',
'10.1.2.4',
'10.1.2.5',
];
$reverseProxies = [
// IPs fictives
'193.1.2.3',
'193.1.2.4,
];
// Si on est en direct et en interne sans passer par le proxy (pas de redirection)
if (0 === strpos($ip,$ipInterne) && $forwarded === '') return true;
// Si on est en interne, que l'on sort puis on re-rentre en passant par le reverse proxy
if (in_array($ip,$reverseProxies) && 0 === strpos($forwarded,$ipInterne)) return true;
// Si on est en interne, que l'on passe par le proxy en interne
if (in_array($ip,$proxies) && 0 === strpos($forwarded,$ipInterne)) return true;
// Sinon, on vient de l'extérieur
return false;
},
```
A vous de reprendre et personnaliser cette fonction ou bien d'opter pour une autre stratégie.
A défaut, OSE considère que vous êtes toujours "dans l'établissement", donc le filtrage n'est pas opérant.
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment