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")); } }