#16 2012-07-03 08:54:22

22decembre
Membre
2012-06-21
62

Re: ldap

Ça c'est de la réponse !

Comment puis-je aider ? (parce que j'ai pas des compétences de dev' hyper developpées justement… j'ai quand même créée un logiciel web basique…)

Hors ligne

#17 2012-07-03 19:35:22

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
14673

Re: ldap

Je pense que ce serais bien d'essayer de faire un plugin avec ce que tu proposes

Pour faire un plugin le mieux c'est observer les plugins des autres !

Maintenant pour Piwigo tu peux participer dans plein de direction une petite page à lire ;-)

http://fr.piwigo.org/basics/contribute


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#18 2012-07-03 19:43:21

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3556

Re: ldap

22decembre a écrit:

Je sais que la vie est dure et que nous avons tous du boulot... (d'ailleurs, qu'est-ce que je fous là ?)... Mais est-ce que ça avance ?

j'ai pas eu le temps :(
et là je suis sur un truc chiant

Hors ligne

#19 2012-08-15 17:16:03

22decembre
Membre
2012-06-21
62

Re: ldap

Bonjour

Je reprends mon plugin, il y a eu du temps, mais déménagement oblige...

J'essaye aujourd'hui de creer un trigger perso à l'endroit ad_hoc...

fichier include/functions_user.inc.php

Code:

/**
 * Tries to login a user given username and password (must be MySql escaped)
 * return true on success
 */
function try_log_user($username, $password, $remember_me)
{
  // we force the session table to be clean
  pwg_session_gc();
  global $conf;

$success = trigger_event('try_login', $username, $password, $remember_me);

  // retrieving the encrypted password of the login submitted
suite du fichier...

mon main.inc.php (dans le dossier du plugin) :

Code:

<?php
/*
Plugin Name: Ldap_Login
Version: 0.1
Description: Permet de se logger via une authentification ldap
Plugin URI: http://www.22decembre.eu
*/
if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');

add_event_handler('try_login','ldap_login');

function ldap_login($success, $username, $password, $remember_me)
{
  // we force the session table to be clean
  pwg_session_gc();

  global $conf;

    // Vérification de l'authentification
    if (ldap_log($username,$password)) {
  log_user($row['id'], $remember_me);
    trigger_action('login_success', stripslashes($username));
    return true;
    }
    else
    {
    trigger_action('login_failure', stripslashes($username));
    return false;
    }
}

suite...

lorsque je teste, le systeme me dit qu'il lui manque les args 2, 3 et 4 de la fonction ldap_login (autrement dit, username et password) alors qu'il me semble bien avoir tout écrit correctement (le trigger dans la fonction native et dans mon main.inc.php).
Juste après, bien sûr, il me dit aussi que username et password ne sont pas définis (logique...  :rolleyes:  ).
J'ai quoi de faux ? Avez-vous des suggestions ?

Dernière modification par 22decembre (2012-08-15 17:18:43)

Hors ligne

#20 2012-08-24 18:29:44

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3556

Re: ldap

par defaut add_event_handler ne prend que 1 paramètres

il faut faire

Code:

add_event_handler('try_login', 'ldap_login', EVENT_HANDLER_PRIORITY_NEUTRAL, 3);

(EVENT_HANDLER_PRIORITY_NEUTRAL est définie dans include/functions_plugins.inc.php)

Hors ligne

#21 2012-08-24 18:58:11

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3556

Re: ldap

hmm j'ai compris ce que vous vouliez faire, voici une proposition de modif de Piwigo qui convient mieux je pense

Code:

function try_log_user($username, $password, $remember_me)
{
  return trigger_event('try_login', $username, $password, $remember_me, false);
}

add_event_handler('try_login', 'common_login', EVENT_HANDLER_PRIORITY_NEUTRAL, 4);

function common_login($username, $password, $remember_me, $success)
{
  if ($success)
  {
    return true;
  }
  
  // we force the session table to be clean
  pwg_session_gc();

  global $conf;
  // retrieving the encrypted password of the login submitted
  $query = '
SELECT '.$conf['user_fields']['id'].' AS id,
       '.$conf['user_fields']['password'].' AS password
  FROM '.USERS_TABLE.'
  WHERE '.$conf['user_fields']['username'].' = \''.pwg_db_real_escape_string($username).'\'
;';
  $row = pwg_db_fetch_assoc(pwg_query($query));
  if ($row['password'] == $conf['pass_convert']($password))
  {
    log_user($row['id'], $remember_me);
    trigger_action('login_success', stripslashes($username));
    return true;
  }
  trigger_action('login_failure', stripslashes($username));
  return false;
}

et dans votre plugin

Code:

add_event_handler('try_login','ldap_login', 0, 4);

function ldap_login($username, $password, $remember_me, $success)
{
  // we force the session table to be clean
  pwg_session_gc();

  global $conf;

  // Vérification de l'authentification
  if (ldap_log($username,$password))
  {
    log_user($row['id'], $remember_me);
    trigger_action('login_success', stripslashes($username));
    return true;
  }
  else
  {
    trigger_action('login_failure', stripslashes($username));
    return false;
  }
}

(absouement pas testé, mais ça montre comment utiliser les trigger_event)

Hors ligne

#22 2012-08-26 15:47:06

22decembre
Membre
2012-06-21
62

Re: ldap

En gros, ce que tu propose (si tu veux bien le tutoiement) c'est de clairement créer une fonction "login classique" dans le code core de PWG, ce qui permettrait d'utiliser des fonctions de login alternatives dans des plugins.

Ceci répondrait à mon problème actuel et permettrait d'ouvrir la voie à d'autres login (login ssh, openid...)

Ais-je bien compris ?

On pourrait aussi voir si cela ne crée pas trop de débauche de fonctions (une fonction qui en appelle une autre qui en appelle encore une autre, façon poupées russes).

J'aime la simplicité et l’efficacité, donc si l'équipe de dev' pense que c'est la meilleure chose, je prend.

En attendant la réponse, je vais voir ce que je peux faire avec ta proposition. :-)
Merci !

Hors ligne

#23 2012-08-26 16:00:20

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3556

Re: ldap

on a ce type de structure à au moins deux endroits déjà, la fonction qui parse la variable $PICTURE_CONTENT dans picture.php et la fonction d'antispam basique dans insert_user_comment

Hors ligne

#24 2012-08-26 17:00:16

22decembre
Membre
2012-06-21
62

Re: ldap

Je crois que l'admin des plugins a changé par rapport à la doc...

Pour l'instant je peux rien faire car l'ébauche de mon plugin fait planter l'admin générale (impossible de se logger, et quand je suis loggé, impossible d'administrer les plugins, le mini menu d'administration individuelle disparait).

Donc voili voulou ... :-)

Hors ligne

#25 2012-10-02 23:44:42

22decembre
Membre
2012-06-21
62

Re: ldap

Ça y est, ça marche !

J'ai le trigger qui marche dans le functions_user.inc.php.

Le plugin m'authentifie bien sur le serveur ldap.

Par contre, le système n'aime pas avoir deux auth concurrents.

Je peux soit m'authentifier soit sur ldap, soit sur la base de piwigo, mais pas les deux à la fois. Et donc je dois soit commenter :


add_event_handler('try_login', 'common_login', EVENT_HANDLER_PRIORITY_NEUTRAL, 4); => dans functions_user.inc.php

soit
add_event_handler('try_login','ldap_login', 0, 4); => dans mon plugin.

Sinon, l'admin du plugin est moche. Et je ne sais pas si elle fonctionne.
Autrement dit, se serait cool de pouvoir faire du debbuggage avec un volontaire !

Hors ligne

#26 2012-10-03 18:10:04

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3556

Re: ldap

sur ma base de travail j'ai modifié mon approche alors difficile de vous aider :)

quoi qu'il en soit j'espère bien rendre disponible la fonction pour la version 2.5

edit : quand je parle de fonction c'est tous les types d'authentification externe, pas seulement LDAP

Hors ligne

#27 2012-10-03 18:18:04

Eric
Équipe Piwigo
VALENCE (FR)
2005-03-25
4579

Re: ldap

22decembre a écrit:

Sinon, l'admin du plugin est moche. Et je ne sais pas si elle fonctionne.
Autrement dit, se serait cool de pouvoir faire du debbuggage avec un volontaire !

Au boulot, j'ai un annuaire Active Directory. Si les requêtes LDAP sont compatibles, je veux bien essayer l'essayer. Mais il faudra être patient ;-)

Hors ligne

#28 2012-10-03 21:35:36

22decembre
Membre
2012-06-21
62

Re: ldap

Le plugin est disponible ici :

http://www.22decembre.eu/downloads/ldap_login.zip

Je pense que c'est justement un bon moyen, une bonne occasion pour concevoir une authentification globale.

Hors ligne

#29 2012-11-05 20:50:45

22decembre
Membre
2012-06-21
62

Re: ldap

Hello

Quelqu'un a testé le plugin ?

J'ai déjà quelques petites choses à ajouter, entre autre une option de test dans la page d'administration.

Mais sinon ? Des remarques ?

Je pense que le plugin n'est pas mur pour être intégré aux extensions du site fr.piwigo.org. Mais est-ce qu'il y a un truc à faire pour tout ça (intégration correcte du plugin...).

Hors ligne

#30 2012-11-05 22:40:31

Gotcha
Equipe Piwigo
Pierrelatte (26)
2007-03-14
13324

Re: ldap

Eric est le plus apte à tester. Je le notifie.

Tu es là le Valenciennois ?!


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter facebook newsletter Faire un don Piwigo.org © 2002-2019 · Contact