Projet

Général

Profil

Anomalie #24144

En cas de changement d'utilisateur sur un même poste, on voit les ressources de l'utilisateur précédent

Ajouté par Renaud Dussol il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
06/06/2018
Echéance:
% réalisé:

100%

Distribution:

Description

Les bonnes ressources sont chargées si on clique sur le bouton refresh

Cela semble venir du eStorage

J'ai augmenté les logs dans AppsBehavior, et quand le cas se présente, je vois qu'il va chercher dans le cacheRessources du eStorage

Nous avons communiqué aux quelques personnes du Rectorat qui utilisent des comptes de test et qui nous avaient signalé le problème, mais ce qui m'embête un peu c'est pour les postes partagés (salle des profs d'établissement, etc...)

Je ne saisis pas encore totalement le mécanisme du eStorage

Le ressources.php renvoie bien les bonnes applis

J'ai eu un cas également ou les ressources poshprofils étaient bonnes et les ressources Arena non (et dans le log, les premières étaient noté WEB (pas de cache), les autres CACHE

Je continue d'investiguer (peut-être c'est un mauvais paramètre chez nous...)

Révisions associées

Révision facd0cfc (diff)
Ajouté par Renaud Dussol il y a presque 6 ans

Fixes #24144 : le hash est identique pour tous les users en cas d'absence de FederationKey

Historique

#1 Mis à jour par Renaud Dussol il y a presque 6 ans

Après discussion avec C. Léon, il apparaît que le pb vient du fait que nous ne disposons pas de l'attribut CAS "FederationKey" (qui vient de l'annuaire SCRIBE, que nous n'avons pas)

Pour résoudre le pb rapidement, 2 solutions :

dans ng/Entity/Profil.php, fonction getIntid(), l. 80 :
remplacer :
if (!$intid) $intid = $this->getAttribute("FederationKey");
par :
if (!$intid) $intid = $this->getAttribute("user");

ou bien :

Sur le serveur CAS (eolesso), dans le fichier dispatcher.ini dans /usr/share/sso/app_filters :
ajouter FederationKey=mail

Je laisse la demande ouverte car il faudrait que l'une des 2 solutions soit mises en oeuvre au niveau de la distrib (ou une autre si ces solutions posent pb dans le cadre d'un ENT)
En effet c'est problèmatique pour les académies qui n'ont pas d'annuaire Scribe, mais juste un LDAP académique

Je te laisse juger de la plus pertinente

#2 Mis à jour par Renaud Dussol il y a presque 6 ans

  • % réalisé changé de 0 à 60

Voici ce que je propose :
Dans Entity/Profil.php :

public function getIntid()
  {
     $intid = $this->getAttribute("intid");
     if (!$intid) {
         if ($this->getAttribute("FederationKey")) {
//             echo "On utilise FedrationKey".$this->getAttribute("FederationKey");
            $intid = $this->getAttribute("FederationKey");
        }
        elseif ($this->getAttribute("mail")) {
//            echo "On utilise mail".$this->getAttribute("mail");
             $intid = $this->getAttribute("mail");

        } else {
//            echo "On utilise user".$this->getAttribute("user");
            $intid = $this->getAttribute("user");
        }
     }
//     echo $intid; die();
     return $intid ;
  }

On fait un test sur FederationKey, si non un test sur mail, enfin un test sur user (parce qu'on est certain que celui-ci sera toujours là)

Sinon il y aurait une autre possibilité : s'arrêter à mail et si le getHash retourne "d41d8cd98f00b204e9800998ecf8427e" (résultat du md5 quand la chaîne d'entrée est vide), utiliser dans les fonctions le hashuser qui, lui provient directement du user

en gros, à chaque fois qu'on utilise $token->hash
if ($token->hash === "d41d8cd98f00b204e9800998ecf8427e") {
... on utilise $token->hashuser

ou alors dans le defaultController, modifier l'initialisation du token :

$token=\R::dispense( 'hubtoken' );
        $token->hash      = $profil->getHash();
        $token->hashuser  = $profil->getHashWithUser();
        if ($token->hash === "d41d8cd98f00b204e9800998ecf8427e") {
            $token->hash  = $token->hashuser; // ou = $profil->getHashWithUser();
        }

#3 Mis à jour par Renaud Dussol il y a presque 6 ans

Je te laisse choisir la solution, tu me dis et je commite

#4 Mis à jour par Renaud Dussol il y a presque 6 ans

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

#5 Mis à jour par Arnaud FORNEROT il y a plus de 5 ans

  • Version cible mis à Envole 5.10

#6 Mis à jour par Arnaud FORNEROT il y a plus de 5 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF