Forcer la modification du mot de passe après la connexion

Bonjour,

Je migre un forum vers Discourse. J’utilise la même approche que le plugin discourse-migratepassword pour permettre aux utilisateurs de se connecter avec leur mot de passe actuel, mais ces mots de passe peuvent être peu sécurisés.

Je souhaite permettre aux utilisateurs de se connecter, mais les obliger à changer leur mot de passe après la connexion s’il ne respecte pas les paramètres de mot de passe de Discourse.

Existe-t-il un moyen de le faire actuellement ? Sinon, où devrais-je regarder pour implémenter cela sous forme de plugin ?

Merci !

Sounds like it would be useful as an option on the discourse-migratepassword plugin. Slightly surprised it isn’t already.

Yeah, we can use that in the plugin too, happy to contribute that back if I implement it.

I was thinking in adding a custom_field to the user and render an alert until the user changes their password, but forcing them to change it sounds like a better option (not sure where to look to achieve this)

Well, I’m not forcing users to change their password, but we are rendering an alert on every login until they do so.

I’m setting a user.custom_fields['migratepassword_policy'] = true if the password doesn’t comply with Discourse settings and using that to conditionally render the modal, and we also send a password reset email once after they log in for the first time (with the insecure password)

What do you guys think?

I think it was enabled without an option in the past - if your password was too short, you were required to do a password reset instead.

The policy was flipped because this was locking people out of their accounts (dead email accounts).

Yeah, in this case we allow users to get into the platform with their current password, but we will render that modal until they change it (they can click OK or click outside the modal and it will close)

Maybe adding a “contact support if you don’t have access to your email anymore” message will do in case of dead email accounts

Salut, exactement la même chose dont nous avons besoin : nous allons créer des utilisateurs via l’API avec un mot de passe par défaut… après la première connexion, l’utilisateur devra changer son mot de passe…

Comment avez-vous fait cela ?

Merci !

Au lieu de créer un utilisateur avec un mot de passe par défaut, vous devriez créer l’utilisateur avec un mot de passe aléatoire et ne jamais le lui envoyer. Ensuite, il pourra utiliser le lien « Mot de passe oublié » sur la page de connexion pour réinitialiser son mot de passe avant de se connecter.

99 % de nos utilisateurs n’ont pas d’adresse e-mail ^^ et nous ne voulons pas ajouter autant d’e-mails uniquement pour les « e-mails de réinitialisation de mot de passe ». Y a-t-il une autre solution que d’utiliser de vraies adresses e-mail ?

Ce sera un gros problème car l’e-mail est considéré comme une identité dans Discourse…

Si vous souhaitez avoir un contrôle total sur le processus de connexion afin de respecter vos normes, je vous recommande d’utiliser la solution officielle de connexion unique (SSO) pour Discourse.

Discourse prend désormais en charge la possibilité native d’expirer les mots de passe.

Pour ce faire, vous devrez exécuter :

user = User.find_by_username(username)
UserPasswordExpirer.expire_user_password(user)

Cela peut être fait soit par le personnel de Discourse pour les clients hébergés, soit en entrant dans votre conteneur, en exécutant une console Rails et en exécutant ceci sur les utilisateurs particuliers.