Annonce

Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

Eric
2010-08-18 13:47:38

LucMorizur a écrit:

Je pense qu'il n'y a pas trop le choix ; à moins d'utiliser un autre trigger mieux placé :-/ ... , il faut remplacer les fonctions is_admin() et is_generic() dans RedirectToProfile() par des tests sur <pwg>_user_infos :-( ...

Déjà testé la table #_user_infos: Pas mieux... Pourtant çà devrait fonctionner pour des utilisateurs déjà inscrits, qu'ils soient ou pas admin. J'ai dû faire une boulette quelque part. Je reprendrai çà ce soir et je tâcherai de tracer ce qu'il se passe à ce moment pour l'admin.

LucMorizur
2010-08-17 23:23:04

Au fait, merci beaucoup d'inclure cette fonctionnalité dans UAM :-) !

LucMorizur
2010-08-17 23:22:03

Eric a écrit:

Salut Luc,

Juste une remarque sur le code que tu présentes: L'exclusion des administrateurs ne fonctionne pas sur la fonction RedirectToProfile(). A priori (j'espère me tromper...), le trigger 'login_success' ne permet pas de différencier le statut de l'utilisateur qui se connecte à la galerie.

Comme tu le sais, je tente une adaptation de ton astuce dans mon plugin UAM et je n'ai pas encore trouvé de solution pour que les admins ne soient pas redirigés. A suivre...

Ah désolé c'est pas moi, c'est le trigger 'login_success' qui est au mauvais endroit..............

Non, bon, je pense pas que ça marche comme argument...

Effectivement le plus probable c'est qu'à ce moment-là du script, le statut du compte tout juste validé, ne soit pas encore établi, et donc pas consultable par la fonction is_admin(). Et c'est bien embêtant. Et bien évidemment, le bug est présent aussi pour les utilisateurs génériques.

Je pense qu'il n'y a pas trop le choix ; à moins d'utiliser un autre trigger mieux placé :-/ ... , il faut remplacer les fonctions is_admin() et is_generic() dans RedirectToProfile() par des tests sur <pwg>_user_infos :-( ...

Eric
2010-08-17 21:56:41

Salut Luc,

Juste une remarque sur le code que tu présentes: L'exclusion des administrateurs ne fonctionne pas sur la fonction RedirectToProfile(). A priori (j'espère me tromper...), le trigger 'login_success' ne permet pas de différencier le statut de l'utilisateur qui se connecte à la galerie.

Comme tu le sais, je tente une adaptation de ton astuce dans mon plugin UAM et je n'ai pas encore trouvé de solution pour que les admins ne soient pas redirigés. A suivre...

LucMorizur
2010-06-07 01:12:12

Bon, j'ai eu un peu de mal |-( ... mais la version ci-dessous permet de ne forcer les utilisateurs vers leur page de personnalisation que lors de leur première identification

Code:

// check_consult
// checks if a user id is registered as having already
// visited his profile.php page.
// @uid        : the user id
// @user_idsOK : (returned) array of all users ids having already visited
//               their profile.php pages
//
// @returns    : true or false whether the users has already visited his
//               profile.php page or not
function check_consult($uid, &$user_idsOK) {
  $t = array(); $v = false;
  if ($v = (
    ($t = mysql_fetch_row(pwg_query("
      SELECT `value`
      FROM `".CONFIG_TABLE."`
      WHERE `param` = 'redir_profile';
    "))) !== false)
  ) {
    $user_idsOK = explode(',', $t[0]);
    $v = (in_array($uid, $user_idsOK));
  }
  return $v;
}

// RedirectToProfile
// redirects a visitor (not generic (forbidden) neither admin) to his
// profile.php page
//
// no variable, no return
add_event_handler('login_success', 'RedirectToProfile');

function RedirectToProfile() {
  global $user;
  
  if (!is_generic() and !is_admin()) {
    $user_idsOK = array();
    if (!check_consult($user['id'], $user_idsOK))
     redirect(PHPWG_ROOT_PATH.'profile.php');
  }
}

// RegisterProfileConsult
// registers a user id when a visitor visits his profile.php page.
// Checks if the value "redir_profile" of table <pwg>_config exists or not,
// and creates it if needed.
//
// no variable, no return
add_event_handler('loc_begin_profile', 'RegisterProfileConsult');

function RegisterProfileConsult() {
  global $user, $template, $errors;
  
  $user_idsOK = array();
  if (!check_consult($user['id'], $user_idsOK)) {
    $user_idsOK[] = $user['id'];
    if (!mysql_fetch_row(pwg_query("
      SELECT `value`
      FROM `".CONFIG_TABLE."`
      WHERE `param` = 'redir_profile';
    "))) {
      $v = (pwg_query("
        INSERT INTO `".CONFIG_TABLE."` (`param`,`value`,`comment`)
        VALUES ('redir_profile', \"".implode(',', $user_idsOK)."\" ,'Ids of users having checked their profile page at least once');
      ") === false);
    }
    else {
      $v = (pwg_query("
        UPDATE `".CONFIG_TABLE."`
        SET `value` = \"".implode(',', $user_idsOK)."\"
        WHERE `param` = 'redir_profile';
      ") === false);
    }
    if ($v) {
      $errors[]='Unable to register user id '.$user['id'].' in redir_profile';
      $template->assign('errors', $errors);
    }
  }
}

A priori, NE FONCTIONNE PAS avec une "entrée" pour "visiteur" (généralement ce sont des "génériques") de extension:326.

LucMorizur
2010-06-06 18:16:12

Bonjour ;

suite à une proposition de Patricia (post:145245), l'addition des lignes ci-dessous dans le plugin personnel permet de rediriger systématiquement (ce qui n'est peut-être pas forcément le plus pratique) les visiteurs vers la page "Personnalisation" après qu'ils se sont identifiés :

Code:

add_event_handler('login_success', 'RedirectToProfile');

function RedirectToProfile()
{
  redirect(PHPWG_ROOT_PATH.'profile.php');
}

Bon, c'est du vite fait, je n'ai testé cela qu'une seule fois :-/ ...

Pied de page des forums

Propulsé par FluxBB

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