Projet

Général

Profil

Evolution #19598

Plugin CAS: La base des users ne contient pas de displayName

Ajouté par Christophe LEON il y a environ 7 ans. Mis à jour il y a presque 7 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
Début:
10/03/2017
Echéance:
% réalisé:

0%

Distribution:

Description

Lors d'une authentification CAS, la base de user de owncloud ne se met pas à jour avec le displayName de l'utilisateur

Proposition

1) envole_cas/envole_cas.php

$this->updateUserData = OCP\Config::getAppValue('user_cas', 'cas_update_user_data', true);
$this->displayNameMapping = OCP\Config::getAppValue('user_cas', 'cas_displayName_mapping', 'displayName');

2) Créer le filtre SSO

[utilisateur]
user=uid
displayName=displayName
email=mail

3) envole_cas/lib/hooks.php, récupérer les éléments

mettre

$cas_attributes = $cas_attributes["utilisateur"]; 
if (array_key_exists($casBackend->displayNameMapping, $cas_attributes))
$attributes['cas_name'] = $cas_attributes[$casBackend->displayNameMapping][0];

Christophe

Révisions associées

Révision 87130ce1 (diff)
Ajouté par Arnaud Fornerot il y a environ 7 ans

mise à jour des users en fonction des attributs cas displayname et email (ref #19598)

Révision 97811b05 (diff)
Ajouté par Arnaud Fornerot il y a environ 7 ans

ajout filtre owncloud pour displayname et email (ref #19598)

Révision 8b2aa2cb (diff)
Ajouté par Arnaud Fornerot il y a environ 7 ans

ajout paquet owncloud-sso (ref #19598)

Historique

#1 Mis à jour par Christophe LEON il y a environ 7 ans

MAJ DU mail:

dans envole_cas/envole_cas.php , mettre une valeur par défaut pour l'attribut mail

$this->mailMapping = OCP\Config::getAppValue('user_cas', 'cas_email_mapping', 'email');

dans apps/envole_cas/lib/hooks.php

idem que pour le displayName prendre le premier élément du tableau CAS

if (array_key_exists($casBackend->mailMapping, $cas_attributes))
$attributes['cas_email'] = $cas_attributes[$casBackend->mailMapping][0];

l'appel a update_mail provoque

 PHP Fatal error:  Class 'OC_Preferences' not found in /var/www/html/owncloud/apps/envole_cas/lib/hooks.php on line 157 

OC_Preferences n'est pas déclaré

je propose le code suivant

function update_mail($uid, $email) {
$ocConfig = \OC::$server->getConfig();
$ocConfig->setUserValue($uid, 'user_ldap', "email", $email);
}

et je propose que le displayName contienne le mail entre parenthèse pour que le mail apparaisse lors de la recherche d'un user

static public function update_user($uid, $attributes) {
$casBackend = OC_USER_CAS::getInstance();
$mail="";
if(isset($attributes['cas_email'])) {
update_mail($uid, $attributes['cas_email']);
$mail=" (" . $attributes['cas_email'] . ")";
}
if (isset($attributes['cas_name'])) {
update_name($uid, $attributes['cas_name'] . $mail);
}
if (isset($attributes['cas_groups'])) {
update_groups($uid, $attributes['cas_groups'], $casBackend->protectedGroups, false);
}
}

#2 Mis à jour par Arnaud FORNEROT il y a environ 7 ans

Alors quasi pareil
Je n'ai pas ajouté le mail dans le displayname par contre
J'ai modifié la fonction update_mail pour qu'elle fonctionne correctement
J'ai compilé un paquet de dev pour test.

#3 Mis à jour par Arnaud FORNEROT il y a environ 7 ans

  • Statut changé de Nouveau à Résolu
  • Version cible mis à Envole 5.5

#4 Mis à jour par Arnaud FORNEROT il y a presque 7 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF