Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 04-03-2009 17:56:51

OlynK
Membre

Changement de mot de passe lors de la première connexion

Bonjour,

Je suis en train de me lancer dans FluxBB, et j'ai activé la validation du compte par mot de passe, cela dit, j'était ennuyé, car le mot de passe aléatoire, je ne trouve pas ça terrible (sur mon site j'ai un lien d'activation qui est envoyé par mail avec un code d'activation aléatoire et une variable active pour voir si l'utilisateur a activé son compte ou non).

La solution que j'ai trouvé pour corriger ce problème dans FluxBB est la suivante :
A la première connexion de l'utilisateur, on le redirige vers la page de changement de mot de passe pour qu'il saisisse directement le mot de passe qu'il souhaite.

J'ai procédé comme il suit dans le fichier login.php :
Remplacer :

// Update the status if this is the first time the user logged in
if ($group_id == PUN_UNVERIFIED)
        $db->query('UPDATE '.$db->prefix.'users SET group_id='.$pun_config['o_default_user_group'].' WHERE id='.$user_id) or error('Unable to update user status', __FILE__, __LINE__, $db->error());

par :

// Update the status if this is the first time the user logged in
    if ($group_id == PUN_UNVERIFIED){
        $db->query('UPDATE '.$db->prefix.'users SET group_id='.$pun_config['o_default_user_group'].' WHERE id='.$user_id) or error('Unable to update user status', __FILE__, __LINE__, $db->error());
        $redirect_to_change_password = TRUE;
    } else {
        $redirect_to_change_password = FALSE;
    }

Trouver :

redirect(htmlspecialchars($_POST['redirect_url']), $lang_login['Login redirect']);

Coller au dessus :

if ($redirect_to_change_password) {
        redirect(htmlspecialchars('profile.php?action=change_pass&id=' . $user_id), $lang_login['Login redirect']);
    }

Je voudrais tout d'abord savoir si cette méthode est plausible (genre écrire l'adresse en dur dans le redirect par exemple, et si elle l'est, la partager avec ceux qui ont le problème.

Ensuite, la solution est fonctionnelle, mais il y a un détail : lorsque l'utilisateur se loggue pour la première fois, si il cliques sur le bouton "retour" de la page change_password, il fait un go(-1) et donc revient à la page de login, si il se reconnecte avec son mot de passe temporaire, il est redirigé sur l'index (car son groupe n'est plus égal à "PUN_UNVERIFIED".
Avez-vous une solution pour ce détail ?

Merci !

Dernière modification par OlynK (04-03-2009 17:57:11)

Hors ligne

#2 04-03-2009 23:20:59

Lyconide
Membre

Re : Changement de mot de passe lors de la première connexion

Salut,

Disons que quoi que tu fasses, à partir du moment où tes utilisateurs se connectent une première fois, même s'ils n'ont pas changé de mot de passe, ils ne retourneront jamais sur la page de changement de mot de passe ensuite.
Donc à moins que tu veuilles obliger tes utilisateurs à changer leur mot de passe, tu ne pourras pas faire grand chose.

Éventuellement, tu pourrais dans ton cas supprimer ce lien "Retour" (mais ça n'empêchera pas un utilisateur de faire précédent sur son navigateur par exemple)

Dans profile.php, ligne 161 :
Trouves :

<p><input type="submit" name="update" value="<?php echo $lang_common['Submit'] ?>" /><a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></p>

Remplace par :

<p><input type="submit" name="update" value="<?php echo $lang_common['Submit'] ?>" />
<?php
$first = isset($_GET['first']) ? intval($_GET['id']) : 0;
if (!$first)
{
?>
<a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a>
<?php
}?>
</p>

Et dans ton lien de redirection :

if ($redirect_to_change_password) {
        redirect(htmlspecialchars('profile.php?action=change_pass&id=' . $user_id), $lang_login['Login redirect']);
    }

remplace par :

if ($redirect_to_change_password) {
        redirect(htmlspecialchars('profile.php?action=change_pass&id=' . $user_id.'&first=1'), $lang_login['Login redirect']);
    }

Le mieux à mon avis, c'est de revoir la partie inscription. Ajouter dans le formulaire d'inscription la partie mot de passe, et envoyer un mail avec lien de confirmation de l'inscription (comme ça se fait pour d'autres forum).

Hors ligne

Pied de page des forums