Wikini

RendreModulaireLaGestionDesUtilisateurs

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-54-226-126-38.compute-1.amazonaws.com

Besoin

Le besoin serait de pouvoir choisir le système d'identification de WikiNi. WikiNi serait livré avec son propre système d'identification par défaut, mais il pourrait, sous certaines conditions, utiliser d'autres systèmes d'identification. Les applications sont les suivantes :


Ailleurs



Discussions

Je reproduit ci-dessous les besoins formulés initialement par JeanYves et EddyFayet?. -- CharlesNepote

Rendre modulaire la gestion des utilisateurs

Dans le même esprit, pour faciliter l'intégration avec d'autres softs, exemple une classe de gestion d'utilisateur dans un fichier include qui serait remplaçable.
--JeanYves

Si vous pouviez prendre un exemple pour les deux solutions parce que je ne comprends pas tout là... -- CharlesNepote
C'est plus clair comme ca ?
--GarfieldFr

Gestion des comptes utilisateurs par LDAP

Une identification des utilisateurs par un annuaire LDAP serait très intéressant.
idem pour moi, j'ai utilisé wikini dans mon intranet d'entreprise (basé sur l'ad de windows 2000) et j'aimerai bien que l'identification se fasse également via le protocole ldap. J'ai regardé vite fait mais cho cho :/ -- EddyFayet?

Le code actuel concerné

Rappelons ici le code gérant les utilisateurs.
<?php

    
// USERS
    
function LoadUser($name$password 0) { return $this->LoadSingle("select * from ".$this->config["table_prefix"]."users where name = '".mysql_escape_string($name)."' ".($password === "" "and password = '".mysql_escape_string($password)."'")." limit 1"); }
    function 
LoadUsers() { return $this->LoadAll("select * from ".$this->config["table_prefix"]."users order by name"); }
    function 
GetUserName() { if ($user $this->GetUser()) $name $user["name"]; else if (!$name gethostbyaddr($_SERVER["REMOTE_ADDR"])) $name $_SERVER["REMOTE_ADDR"]; return $name; }
    function 
UserName() { /* deprecated! */ return $this->GetUserName(); }
    function 
GetUser() { return (isset($_SESSION["user"]) ? $_SESSION["user"] : '');}
    function 
SetUser($user$remember=0) { $_SESSION["user"] = $user$this->SetPersistentCookie("name"$user["name"], $remember); $this->SetPersistentCookie("password"$user["password"], $remember); $this->SetPersistentCookie("remember"$remember$remember); }
    function 
LogoutUser() { $_SESSION["user"] = ""$this->DeleteCookie("name"); $this->DeleteCookie("password"); }
    function 
UserWantsComments() { if (!$user $this->GetUser()) return false; return ($user["show_comments"] == "Y"); }
    function 
GetParameter($parameter) { return (isset($this->parameter[$parameter]) ? $this->parameter[$parameter] :''); }

?>


Authentifier les utilisateurs à partir d'une BD MySQL externe


Une solution est proposée à l'URL http://contrib.africacomputing.org/wakka.php?wiki=AuthentificationExterneWikini
Elle consiste à :
-- PhilippeDrouot




Première tentative


J'ai commencé à regarder de près à ce problème car il m'intéresse (pour remettre au propre la contrib Spikini).
J'ai opté pour les points suivants :
- une classe User contenant les méthodes getUser, getName, loadUser ... mais aussi les setCookie and co qui ne sont utilisés que par les méthodes précédentes.
- une classe Bdd qui rassemble toutes les méthodes d'accès à la bdd (query, loadSingle mais aussi connect, fetch_assoc ...). C'est plus pratique car la classe User «par défaut» à besoin d'accéder à la bdd mais n'a pas besoin de la classe Wiki, c'est donc plus propre d'externaliser ce point. De plus, ça permettrait de passer en autre chose assez facilement, ou simplement de choisir facilement entre connect et pconnect selon l'hébergement.
- tous les appels aux $wiki->LoadUser et autres deviennent des $wiki->user->loadUser().

J'ai maintenant une version assez stabilisée, mais qui demande à être testée.
Comme j'ai tiré de fil de pas mal de trucs, j'arrive à une modif assez profonde du code.
Le résultat est visible ici, et les modifs sont détaillées .
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]