Skip to content
Snippets Groups Projects
Commit 796c5c09 authored by Jean-Baptiste Oellers's avatar Jean-Baptiste Oellers
Browse files

Ajout de la correspondance des rôles dans un fichier de configuration

parent fc426565
Branches 20250519-config-sync-db
No related tags found
1 merge request!35Ajout de la correspondance des rôles dans un fichier de configuration
Pipeline #38201 passed
......@@ -253,6 +253,25 @@ WHERE
UPDATE organizationperson SET origin = 'db' WHERE origin = 'rest';
```
Définir dans le fichier person_db.yml la correspondance entre les rôles lus en DB et les rôles internes à OSCAR, par exemple :
```yml
roles_correspondance:
D30: Directeur de composante
R00: Responsable
R40: Directeur de composante
P50: Directeur de composante
T87: Informaticien
T98: Gestionnaire de laboratoire
A009: Gestion financière
Gestionnaire financière des contrats de recherche: Gestion financière
Gestionnaire financiere des contrats de recherche: Gestion financière
Directrice: Directeur
Directeur adjoint: Directeur
Directrice adjointe: Directeur
Responsable administrative: Responsable administratif
```
Enfin, lancer la synchronisation des personnes :
```bash
......
......@@ -151,7 +151,7 @@ abstract class AbstractConnector implements IConnector
foreach ($paths as $path) {
if( !isset($config[$path]) ) {
if ( $default == null ){
if ( $default === null ){
throw new OscarException(sprintf(
"La clef '%s' absente dans le fichier de configuration '%s'.",
$key,
......
......@@ -15,6 +15,16 @@ use Oscar\Service\OrganizationService;
class ConnectorOrganizationDB extends AbstractConnector
{
private bool $editable = false;
public function setEditable($editable){
$this->editable = $editable;
}
public function isEditable(){
return $this->editable;
}
/**
* @param bool $force
* @return ConnectorRepport
......
......@@ -11,6 +11,16 @@ use Oscar\Exception\OscarException;
class ConnectorPersonDB extends AbstractConnector
{
private bool $editable = false;
public function setEditable($editable){
$this->editable = $editable;
}
public function isEditable(){
return $this->editable;
}
/** @var ConnectorPersonHydrator */
private $personHydrator = null;
......@@ -258,38 +268,15 @@ class ConnectorPersonDB extends AbstractConnector
}
$roles_json = $row['ROLES'];
$correspondances = $this->getParameter('roles_correspondance', []);
$oscar_roles = new \stdClass();
if ($roles_json != NULL) {
$roles = json_decode($roles_json);
foreach ($roles as $key => $values) {
$oscar_role_for_structure = [];
foreach ($values as $value) {
if ($value == 'D30') {
$oscar_role_for_structure[] = 'Directeur de composante';
} else if ($value == 'R00') {
$oscar_role_for_structure[] = 'Responsable';
} else if ($value == 'R40') {
$oscar_role_for_structure[] = 'Directeur de composante';
} else if ($value == 'P50') {
$oscar_role_for_structure[] = 'Directeur de composante';
} else if ($value == 'T87') {
$oscar_role_for_structure[] = 'Informaticien';
} else if ($value == 'T98') {
$oscar_role_for_structure[] = 'Gestionnaire de laboratoire';
} else if ($value == 'A009') {
$oscar_role_for_structure[] = 'Gestion financière';
} else if ($value == 'Gestionnaire financière des contrats de recherche') {
$oscar_role_for_structure[] = 'Gestion financière';
} else if ($value == 'Gestionnaire financiere des contrats de recherche') {
$oscar_role_for_structure[] = 'Gestion financière';
} else if ($value == 'Directrice') {
$oscar_role_for_structure[] = 'Directeur';
} else if ($value == 'Directeur adjoint') {
$oscar_role_for_structure[] = 'Directeur';
} else if ($value == 'Directrice adjointe') {
$oscar_role_for_structure[] = 'Directeur';
} else if ($value == 'Responsable administrative') {
$oscar_role_for_structure[] = 'Responsable administratif';
if (array_key_exists($value, $correspondances)) {
$oscar_role_for_structure[] = $correspondances[$value];
} else {
$oscar_role_for_structure[] = $value;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment