php createapp.php ../../auth1
==== Le fichier de configuration ====
Il faut activer le plugin de coordinateur "auth", et créer un fichier de configuration pour ce plugin, "auth.plugin.ini.php".
Pour ce faire, installer le module jauth
$ cd ../../auth1/
$ php cmd.php installmodule jauth
Dans le fichier ///jelix/auth1/var/config/defautconfig.ini.php// vous devriez avoir.
[plugins]
auth = "auth.plugin.ini.php"
Et dans le repertoire ///jelix/auth1/var/config///, vous devriez avoir //auth.plugin.ini.php//.
==== Configuration classique du plugin ====
Tel que décrit dans la section [[http://docs.jelix.org/fr/manuel-1.5/authentification/driver|driver db de jauth]], on va utiliser le driver "Db" pour l'authentification. C'est un driver qui utilise une table en base de données pour stocker les utilisateurs. Il repose sur l'utilisation d'un dao, que l'on indique au niveau du paramètre "dao". Ici on utilise le dao fourni par défaut avec jelix, mais vous pouvez fournir un autre dao, du moment qu'il contient au moins toutes les propriétés et méthodes de celui par défaut. Vous pouvez ainsi ajouter toutes les propriétés que vous souhaitez.
Pour utiliser ce driver, il faut
* configurer l'accès à la base de donnée
* installer le module "jauthdb"
Pour la base de donnée, ouvrez le fichier @@F@auth1/var/config/profiles.ini.php@@, et modifiez le pour indiquer les paramètres d'accès. Voici un exemple :
[jdb]
default = "auth1"
[jdb:auth1]
driver="mysql"
database="jelix"
host= "localhost"
user= "root"
password= unmotdepasse
persistent= on
Ensuite installez le module jauthdb :
php cmd.php installmodule jauthdb
L'installation du module va créé une table jlx_user en base de donnée :
CREATE TABLE IF NOT EXISTS `jlx_user` (
`usr_login` varchar(50) NOT NULL DEFAULT '',
`usr_password` varchar(120) NOT NULL DEFAULT '',
`usr_email` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`usr_login`)
) ENGINE=MyISAM ;
Un utilisateur a été créé :
- son login : admin
- son mot de passe : admin
Et l'installation va modifier le fichier //auth.plugin.ini.php//.
driver = Db
on_error_action = "jauth~login:out"
after_login = "auth1~default:index"
after_logout = "jauth~login:form"
on_error_sleep = 3
[Db]
dao = "jauthdb~jelixuser"
===== Le contrôleur =====
Nous arrivons à l’essentiel du tutoriel, le contrôleur, les actions ou si vous préférez les ressources. Remplacez le contenu du fichier ///jelix/auth1/modules/auth1/controllers/default.classic.php// avec le code suivant:
class defaultCtrl extends jController{
/*
* Définition des accès gérés par jAuth
*/
public $pluginParams = array(
'*' => array('auth.required' => false),
'affiche1' => array('auth.required' => true),
);
/*
* La page d'accueil et par défaut
*/
function index(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
$tpl = new jTpl();
$rep->body->assign('MAIN', 'Contenu de la page d\'accueil.
');
return $rep;
}
/*
* Cette action ne peut être exécutée que si vous être connecté
*/
function affiche1(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
$tpl = new jTpl();
$rep->body->assign('MAIN', $tpl->fetch('auth1~affichage1'));
return $rep;
}
/*
* Cette action accepte l'affichage du template affichage2
* que si personne n'est connecté
*/
function affiche2(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
// utilisation de jAuth::isConnected pour savoir si l'utilisateur
// est actuellement identifié ou pas
if(!jAuth::isConnected()){
$tpl = new jTpl();
$rep->body->assign('MAIN', $tpl->fetch('auth1~affichage2'));
}else{
$rep->body->assign('MAIN', 'L\'accès à cette page est refusé!! (si vous êtes connecté)');
}
return $rep;
}
/*
* Change le mot de passe d'un user
*/
function changePwd(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
jAuth::changePassword('user10','jelix');
$rep->body->assign('MAIN', 'Le mot de passe du "user10" à été modifié');
return $rep;
}
/*
* Affiche tous les users
*/
function listusers(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
$content = 'Les users enregistrés sont:
';
$users = jAuth::getUserList();
foreach($users as $user){
$content .= $user->login . '
';
}
$rep->body->assign('MAIN', $content);
return $rep;
}
/*
* Affiche le user courrant de la session
*/
function getCurrentUser(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
try{
$user = jAuth::getUserSession();
$rep->body->assign('MAIN', "Le user courant est ".$user->login);
}catch(Exception $e){
$rep->body->assign('MAIN', 'Il n\'y a plus de user de connecté!');
}
return $rep;
}
/*
* Récupère un user
*/
function getUser(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
try{
$user = jAuth::getUser('user100');
if($user){
$rep->body->assign('MAIN', '"user100" à été trouvé.');
}else{
$rep->body->assign('MAIN', '"user100" est introuvable.');
}
}catch(Exception $e){
$rep->body->assign('MAIN', 'Le user user100 n\a pus être trouvé!');
}
return $rep;
}
/*
* Vérifie le password d'un user
* Peut être utilisé lors d'un login
* Dans cet exemple le retour sera toujours un password non valide
* parce que l'appel à cette action n'a aucun paramètre...
*/
function verifiePwd(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
$r = jAuth::verifyPassword('user100', $this->param('password'));
if(!$r){
$rep->body->assign('MAIN', 'Le pwd du user100 est non valide.');
}else{
$rep->body->assign('MAIN', 'Le pwd du user100 est valide.');
}
return $rep;
}
/*
* Crée un user en session et en DB
*/
function createUser(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
// creation d'un user avec le login tempuser et le mot de passe pwtempuser
$newUser = jAuth::createUserObject('tempuser','pwtempuser');
$newUser->email = 'tempuser@cie.com';
try{
$user = jAuth::saveNewUser($newUser);
$rep->body->assign('MAIN', 'Le user : '. $user->login .' vient d\'être créé!');
}catch(Exception $e){
$rep->body->assign('MAIN', 'Impossible d\'ajouter ce nouvel utilisateur!');
}
return $rep;
}
/*
* Met à jour un user existant
*/
function updateUser(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
$updUser = jAuth::getUser('tempuser');
if($updUser){
$updUser->email = 'jelix@cie.com';
try{
jAuth::updateUser($updUser);
// Pour vérifier visuelement la modification
$user = jAuth::getUser('tempuser');
$rep->body->assign('MAIN', 'Le nouveau courriel du user tempuser : '. $user->email);
}catch(Exception $e){
$rep->body->assign('MAIN', 'La mise à jour du user tempuser à échoué! ');
}
}else{
$rep->body->assign('MAIN', 'Le user tempuser n\'existe pas!');
}
return $rep;
}
/*
* Efface un user de la session et de la DB
*/
function deleteUser(){
$rep = $this->getResponse('html');
$rep->bodyTpl = 'main';
if(jAuth::getUser('tempuser')){
if(jAuth::removeUser('tempuser')){
$rep->body->assign('MAIN', 'Le user tempuser a été effacé!');
}else{
$rep->body->assign('MAIN', 'Le user tempuser n\'a pas été effacé!');
}
}else{
$rep->body->assign('MAIN', 'Le user tempuser n\'existe pas!');
}
return $rep;
}
}
===== Le template main =====
Créez le fichier qui servira de template principal. Il est nommé main.tpl et doit être créé dans le répertoire /jelix/auth1/modules/auth1/templates/.
Tutoriel pour la jAuth
Liste des users dans la DB
user10/user10 ou user10/jelix
user20/user20
user100/user100
{$MAIN}
===== Le template affichage1 =====
Créez le fichier template qui nécessite une authentification. Il est nommé affichage1.tpl et doit être créé dans le répertoire /jelix/auth1/modules/auth1/templates/.
Contenu pour l'affichage 1 (avec authentification....)
===== Le template affichage2 =====
Créez le fichier template qui ne nécessite __aucune__ authentification. Il est nommé affichage2.tpl et doit être créé dans le répertoire /jelix/auth1/modules/auth1/templates/.
Contenu pour l'affichage 2
Cette page s'affiche uniquement si vous n'êtes pas connecté
----
* [[fr:tutoriels:|Retour au sommaire des tutoriels]]