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
Loading
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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,
+10 −0
Original line number Diff line number Diff line
@@ -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
+13 −26
Original line number Diff line number Diff line
@@ -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;
                    }