8.4 Description des rôles

Les rôles représentent les fonctions des utilisateurs dans l'organisation. Ils sont utilisés dans la définition des droits.

8.4.1 Caractéristiques des rôles

Les principaux attributs de la famille Rôle sont ::

Nom role_name
Dénomination du rôle.
Référence role_login

référence système.

Il doit être unique sur l'ensemble des comptes (utilisateurs, rôles et groupes).

Note : la référence doit toujours être en minuscules. Si elle comporte des majuscules elle seront transformées en minuscules lors de l'enregistrement.

Depuis l'interface du centre d'administration, cette référence ne peut pas être renseignée, elle est calculée automatiquement avec un identifiant unique (par exemple : role51949e892a469).

Identifiant système us_whatid

Identifiant numérique système unique.

Cet identifiant est donné par le système lors de l'enregistrement. Il sert d'identifiant pour l'objet système associé au document. Voir Account.

8.4.2 Création d'un rôle

Il est possible de créer manuellement un rôle en créant un document de la famille ROLE depuis l'interface, à condition de bénéficier des privilèges suffisants.

Par programmation il suffit de créer un document de la famille rôle ROLE.

$dr = createDoc("","ROLE");
if ($dr) {
     $dr->setValue("role_login","designer");
     $dr->setValue("role_name","Concepteurs");
 
     $err=$dr->store();
     if (!$err) {
         print "nouveau rôle n°".$dr->getValue("us_whatid"); // affichage de l'identifiant numérique système
     } else {
         print "erreur:$err";
     }
 }

La méthode _ROLE::getAccount() permet de récupérer l'objet système "Account". Voir le paragraphe Account.

8.4.3 Ajout d'un rôle à un utilisateur

L'ajout direct d'un groupe à un utilisateur se fait depuis le document Utilisateur.
C'est l'attribut us_roles qu'il faut modifier pour changer les associations de rôles aux utilisateurs.

$dr = new_doc("",2435); // Rôle à ajouter
$du = new_doc("",1073); // Utilisateur
if ($du->isAlive()) {
  $uRoles = $du->getMultipleRawValues("us_roles");
  printf("Ajout rôle %s pour %s\n",$dr->getTitle(),$du->getTitle());
  $uRoles[] = $dr->getProperty('initid');
  $uRoles = array_unique($uRoles); // éviter les doublons si déjà présent
  $err = $du->setValue("us_roles",$uRoles);
 
  if (!$err) {
    $err = $du->store();
  }
 
  if ($err) {
    print "Erreur: $err\n";
  } else {
    print "Nouvelle liste de rôles:\n";
    print_r($du->getAttributeValue("us_t_roles"));
  }
}
 

8.4.4 Association d'un rôle à un groupe

L'association va propager le rôles à l'ensemble des membres du groupes et des sous-groupes.
C'est l'attribut grp_roles qu'il faut modifier pour changer les associations de rôles aux groupes.

$dr = new_doc("",2435); // Rôle à ajouter
$dg = new_doc("",2434); // Groupe
if ($dg->isAlive()) {
    $gRoles = $dg->getMultipleRawValues("grp_roles");
    printf("Ajout rôle %s pour %s\n",$dr->getTitle(),$dg->getTitle());
    $gRoles[] = $dr->initid;
    $gRoles = array_unique($gRoles); // éviter les doublons si déjà présent
    $err=$dg->setValue("grp_roles",$gRoles);
    if (!$err) {
        $err = $dg->store();
    }
    if ($err) {
        print "Erreur: $err\n";
    } else {
        print "Nouvelle liste de rôles:\n";
        print_r($dg->getAttributeValue("grp_roles"));
    }
}
×