Project

General

Profile

Evolution #19598

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

Added by Christophe LEON over 5 years ago. Updated over 5 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
-
Target version:
Start date:
03/10/2017
Due date:
% Done:

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

Associated revisions

Revision 87130ce1 (diff)
Added by Arnaud Fornerot over 5 years ago

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

Revision 97811b05 (diff)
Added by Arnaud Fornerot over 5 years ago

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

Revision 8b2aa2cb (diff)
Added by Arnaud Fornerot over 5 years ago

ajout paquet owncloud-sso (ref #19598)

History

#1 Updated by Christophe LEON over 5 years ago

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 Updated by Arnaud FORNEROT over 5 years ago

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 Updated by Arnaud FORNEROT over 5 years ago

  • Status changed from Nouveau to Résolu
  • Target version set to Envole 5.5

#4 Updated by Arnaud FORNEROT over 5 years ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF