Projet

Général

Profil

Actions

Anomalie #75

fermé

Problèmes de cohérence dans les assignations de rôles

Ajouté par Grégory MARIGOT - TEICEE il y a environ 14 ans. Mis à jour il y a environ 14 ans.

Statut:
Fermé
Priorité:
Normal
Version cible:
Début:
30/11/2010
Echéance:
% réalisé:

100%

Temps estimé:
Version ProxyEPN:
1.0

Description

La BDD EpnAdmin stocke les rôles des contacts dans 3 tables :

  • sf_guard_user_group_structure_group : pour les liens anim/directeur sur un GEPN
  • sf_guard_user_group_structure : pour les liens anim/directeur sur un EPN
  • sf_guard_user_group : pour le lien générique anim/directeur d'un contact

2 problèmes apparaissent dans la version d'origine d'EpnAdmin :

  • Les deux tables enregistrant les triplets contact/groupe/structure ne définissent pas de clé primaire sur ce triplet. En conséquence, des doublons sont possibles : un même contact peut être assigné plusieurs fois sur la même structure avec le même rôle.
    Rien de vraiment génant, à part le fait que ce n'est pas très propre et un peu déstabilisant de pouvoir avoir plusieurs fois le même nom dans la liste des animateurs ou directeurs d'un EPN/GEPN.
  • La dernière table est utilisée essentiellement pour déterminer le profil type d'un contact. Dès que celui-ci est déclaré animateur ou directeur d'un EPN/GEPN, le contact se trouve inscrit dans le groupe correspondant. Mais en cas de suppression d'un rôle sur une structure, ce lien est supprimé alors qu'il n'est pas forcément obsolète !
    Par exemple, un contact est animateur sur 2 EPN, il a bien le profil animateur. Mais si on supprime son rôle sur un seul des deux EPN, son profil devient simple utilisateur alors qu'il devrait rester animateur.

Mis à jour par Grégory MARIGOT - TEICEE il y a environ 14 ans

  • Statut changé de Nouveau à Résolu
  • % réalisé changé de 0 à 100

Modifications publiées sur le svn (r300) :

  • Pour éviter les doublons en BDD dans les assignations de rôles, la structure des tables doivent être modifiées comme suit pour leur attribuer des clés primaires. A noter que si des doublons sont présents, il devront être manuellement nettoyer des tables avant de pouvoir appliquer cette modification.
    Modification à apporter sur la base de données :
    ALTER TABLE `sf_guard_user_group_structure` ADD PRIMARY KEY ( `user_id` , `group_id` , `structure_id` ) ;
    ALTER TABLE `sf_guard_user_group_structure_group` ADD PRIMARY KEY ( `user_id` , `group_id` , `structure_group_id` ) ;
  • Un contrôle avant suppression d'un lien user-group a été ajouté, afin de vérifier qu'aucun rôle du genre ne subsiste entre le contact et une structure (EPN ou GEPN). Ainsi le profil type d'un contact est mis à jour correctement.

Au passage, les méthodes retrieveByUser() sur sfGuardUserGroupStructurePeer et sfGuardUserGroupStructureGroupPeer sont modifiées pour ne retourner que le 1er résultat, puisqu'il existe des méthodes retrieveAllByUser() pour retourner la liste.

Le template pour l'affichage des rôles sur les fiches contacts a été corrigé en conséquence, de plus il gère aussi une liste pour les rôles sur GEPN même si ce cas n'arrive pas en tant normal.

Mis à jour par Grégory MARIGOT - TEICEE il y a environ 14 ans

  • Statut changé de Résolu à Fermé
Actions

Formats disponibles : Atom PDF