Project

General

Profile

Development #35774

import csv, gestion du mot de passe

Added by Marie Kuntz 3 months ago. Updated 21 days ago.

Status:
Solution proposée
Priority:
Normal
Category:
-
Target version:
-
Start date:
03 Sep 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Lors de l'import d'utilisateurs en csv, donner la possibilité d'envoyer un mail aux utilisateurs pour les avertir qu'un compte a été créé :
  • donner un lien pour finaliser l'inscription
  • ou indiquer un mot de passe à modifier à la 1e connexion

0002-csv_import-allow-setting-user-password-and-sending-m.patch View (4.85 KB) Valentin Deniaud, 16 Oct 2019 12:30 PM

0001-utils-allow-per-ou-template-in-send_password_reset_m.patch View (1.14 KB) Valentin Deniaud, 16 Oct 2019 12:30 PM

0001-utils-handle-per-ou-template-in-send_templated_mail-.patch View (3.56 KB) Valentin Deniaud, 31 Oct 2019 10:48 AM

0001-utils-handle-per-ou-template-in-send_templated_mail-.patch View (6.97 KB) Valentin Deniaud, 07 Nov 2019 02:52 PM

0001-utils-handle-per-ou-template-in-send_templated_mail-.patch View (6.97 KB) Valentin Deniaud, 07 Nov 2019 05:21 PM

0001-utils-handle-per-ou-template-in-send_templated_mail-.patch View (7.59 KB) Valentin Deniaud, 07 Nov 2019 05:58 PM

0001-utils-handle-per-ou-template-in-send_templated_mail-.patch View (12.2 KB) Valentin Deniaud, 13 Nov 2019 03:35 PM

0001-utils-handle-per-ou-template-in-send_templated_mail-.patch View (12.5 KB) Valentin Deniaud, 14 Nov 2019 02:08 PM

0002-csv_import-allow-setting-user-password-and-sending-m.patch View (6.16 KB) Valentin Deniaud, 25 Nov 2019 02:57 PM

0002-csv_import-allow-setting-user-password-and-sending-m.patch View (4.63 KB) Valentin Deniaud, 25 Nov 2019 04:14 PM


Related issues

Blocked by Authentic 2 - Development #35773: import csv, ajout d'un rôle Solution déployée 03 Sep 2019

History

#1 Updated by Benjamin Dauvergne 3 months ago

À faire, gérer une colonne booléenne send_registration_mail, permettre la surcharge du template concerné sur 3 niveaux :
  • utiliser le template de base
  • utiliser le template de base pour l'OU de l'utilisateur (via le slug)
  • utiliser un template spécifique pour l'import CSV
  • utiliser un template spécifique pour l'import CSV et l'OU de l'utilisateur (via le slug)

#2 Updated by Benjamin Dauvergne 3 months ago

Pour les mots de passe : send_reset_password_reset_email(), qui sera utilisé, fera un set_password(random) donc pas de souci de ce coté là, par contre ce serait utile d'avoir un mode set_random_password simple si on veut par ailleurs géré le mailing autrement.

Donc une colonne '@registration' avec deux valeurs possibles : send-email ou set-random-password.

#3 Updated by Valentin Deniaud 2 months ago

  • Assignee set to Valentin Deniaud

#4 Updated by Valentin Deniaud 2 months ago

Benjamin Dauvergne a écrit :

ce serait utile d'avoir un mode set_random_password simple si on veut par ailleurs géré le mailing autrement.

Je comprends pas cette deuxième option, ça sert à quoi de mettre un mot de passe aléatoire par rapport à ne pas en mettre ? Quel serait le cas d'usage concret ?

#5 Updated by Benjamin Dauvergne 2 months ago

Si un utilisateur n'a pas de mot de passe, le lien de récupération de mot de passe ne fonctionne pas donc a minima faut en mettre un même random et inconnu de tout le monde si tu veux pouvoir faire un mailing aux gens en disant : allez sur la page de login et faite une récupération de mot de passe.

#6 Updated by Valentin Deniaud 2 months ago

Compris, je ne savais pas.

Deuxième interrogation, je comprends pas tout à la mécanique de templates que tu imagines. J'ai pigé pour OU/pas OU (merci Paul), mais dans quel cas tu imagines un recours au template par défaut ? Je trouverais pas ça clair de recevoir un mail disant en substance « bonjour vous avez demandé une réinitialisation de votre mot de passe » si on vient de créer mon compte, donc pour moi template spécifique => always.

#7 Updated by Valentin Deniaud 2 months ago

En fait il y a déjà templates/authentic2/api_user_create_registration_email qui se rapproche plus de ce qu'on voudrait envoyer, à voir si le « À votre demande » est problématique ou pas.

#8 Updated by Valentin Deniaud 2 months ago

Voilà ce que ça donne pour l'instant, sans trop se préoccuper de la tête du mail.

#9 Updated by Valentin Deniaud 2 months ago

#10 Updated by Benjamin Dauvergne about 2 months ago

  • Status changed from Solution proposée to En cours

Valentin Deniaud a écrit :

Voilà ce que ça donne pour l'instant, sans trop se préoccuper de la tête du mail.

Pour le 0001: si on suppose que template_names = ['specific.html', 'generic.html'] les versions avec slug d'ou devrait être intercalées (comme dans mon premier commentaire) et non pas mise en premier, i.e. [f'specific-{ou.slug}.html', 'specific.html', f'generic-{ou.slug}.html', 'generic.html']. Aussi j'ajouterai plutôt cette fonctionnalité à send_templated_mail() pour qu'on la retrouve progressivement partout.

Pour le 0002: ok.

#11 Updated by Valentin Deniaud about 2 months ago

Revoilà un patch 1 avec le boulot dans send_templated_mail.

#12 Updated by Valentin Deniaud about 2 months ago

Avec le patch c'est mieux.

#13 Updated by Benjamin Dauvergne about 2 months ago

Valentin Deniaud a écrit :

Avec le patch c'est mieux.

Je note tout de suite que ce serait bien d'avoir un test unitaire sur send_templated_mail aussi.

#15 Updated by Valentin Deniaud about 1 month ago

Le test ne passait pas parce que la modification du setting TEMPLATES n'était pas prise en compte, django instanciant une seule fois les objets qui chargent les templates. Donc en local quand je le lançais avec -k ça passait, mais en lançant tous les tests non. Je me demande quand même si je suis pas en train de réinventer la roue...

#17 Updated by Benjamin Dauvergne about 1 month ago

Désolé de t'avoir laissé patauger, je pense qu'encore plus simple tu pourrais poser une configuration des templates en dur dans tests/settings.py pointant vers tests/templates/ et y mettre les différents templates dont tu as besoin.

#19 Updated by Valentin Deniaud about 1 month ago

tests rouges à cause de #37390

Ils l'étaient aussi pour une autre raison, pour ajouter le répertoire tests/templates/ j'avais tenté un from authentic2.settings import TEMPLATES, puis TEMPLATES[0]['DIRS'].append(...), ça semblait marcher mais les tests rbac plantaient pour une raison étrange. Plus qu'à copier coller la config des templates depuis les settings vers les tests settings, en ajoutant le nouveau répertoire. Anyway, c'est vert.

#20 Updated by Benjamin Dauvergne about 1 month ago

Valentin Deniaud a écrit :

tests rouges à cause de #37390

Ils l'étaient aussi pour une autre raison, pour ajouter le répertoire tests/templates/ j'avais tenté un from authentic2.settings import TEMPLATES, puis TEMPLATES[0]['DIRS'].append(...), ça semblait marcher mais les tests rbac plantaient pour une raison étrange. Plus qu'à copier coller la config des templates depuis les settings vers les tests settings, en ajoutant le nouveau répertoire. Anyway, c'est vert.

Ni besoin de recopier ou d'importer, TEMPLATES est déjà dans le scope (tests/settings.py est déclaré comme variable d'environnement AUTHENTIC2_SETTINGS_FILE qui sert à faire un execfile() dans le contexte de authentic2.settings tout à la fin).

#21 Updated by Valentin Deniaud about 1 month ago

Merci pour l'explication, qui en bonus me permet de comprendre pourquoi les tests rbac sont affectés, et d'y remédier.

#22 Updated by Benjamin Dauvergne about 1 month ago

  • Status changed from Solution proposée to Solution validée

Valentin Deniaud a écrit :

Merci pour l'explication, qui en bonus me permet de comprendre pourquoi les tests rbac sont affectés, et d'y remédier.

Dernière remarque je pense maintenant que je me remet à lire la partie concernant strictement ce ticket, il faudrait qu'en cas de création si rien de particulier n'est demandé on pose systématiquement un mot de passe aléatoire faute de mieux.

#23 Updated by Valentin Deniaud 28 days ago

Tout à fait d'accord. Donc c'est reparti pour un renommage de @registration en @send-email, qui devient alors une colonne booléenne ?

#24 Updated by Benjamin Dauvergne 26 days ago

  • Status changed from Solution validée to En cours

Valentin Deniaud a écrit :

Tout à fait d'accord. Donc c'est reparti pour un renommage de @registration en @send-email, qui devient alors une colonne booléenne ?

À ce stade je pensais plus à du code adhoc pour repérer qu'on est hors des clous plutôt que de tout changer.

#25 Updated by Valentin Deniaud 21 days ago

J'ai relu le texte du ticket et je me suis aperçu que le deuxième point de Marie avait été mis de côté, alors en même temps que je mettais un mot de passe à tous les utilisateurs créés par défaut, j'ai remplacé l'option qui permettait de le faire par une autre qui correspond à ce point 2.

#26 Updated by Benjamin Dauvergne 21 days ago

Valentin Deniaud a écrit :

J'ai relu le texte du ticket et je me suis aperçu que le deuxième point de Marie avait été mis de côté, alors en même temps que je mettais un mot de passe à tous les utilisateurs créés par défaut, j'ai remplacé l'option qui permettait de le faire par une autre qui correspond à ce point 2.

C'est vraiment pas une bonne idée de proposer ça, je suis pour ignorer cette demande, il y a clairement un "ou" dans ses propositions pour moi il est exclusif.

#27 Updated by Marie Kuntz 21 days ago

Non, il n'était pas exclusif, mais je vais clarifier ma demande : ce serait bien d'avoir la possibilité de faire soit l'un, soit l'autre, et que ce choix soit possible par import.

#28 Updated by Benjamin Dauvergne 21 days ago

Marie Kuntz a écrit :

Non, il n'était pas exclusif, mais je vais clarifier ma demande : ce serait bien d'avoir la possibilité de faire soit l'un, soit l'autre, et que ce choix soit possible par import.

Et donc je dis que le deuxième est interdit, on n'envoie pas des mots de passe dans des mails qui pourront peut-être y rester et ne jamais changer.

#29 Updated by Marie Kuntz 21 days ago

ok, ça me va

#30 Updated by Valentin Deniaud 21 days ago

Ça me va aussi, je ne m'étais pas posé plus de question vu qu'il est possible de le faire via l'interface web.
Hop, disparu.

Also available in: Atom PDF