Project

General

Profile

Anomalie #24144

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

Added by Renaud Dussol about 5 years ago. Updated almost 5 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Target version:
Start date:
06/06/2018
Due date:
% Done:

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...)

Associated revisions

Revision facd0cfc (diff)
Added by Renaud Dussol about 5 years ago

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

History

#1 Updated by Renaud Dussol about 5 years ago

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 Updated by Renaud Dussol about 5 years ago

  • % Done changed from 0 to 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 Updated by Renaud Dussol about 5 years ago

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

#4 Updated by Renaud Dussol about 5 years ago

  • Status changed from Nouveau to Résolu
  • % Done changed from 60 to 100

#5 Updated by Arnaud FORNEROT almost 5 years ago

  • Target version set to Envole 5.10

#6 Updated by Arnaud FORNEROT almost 5 years ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF