Améliore mail création de compte utilisateur si CAS forcé. Fix #801

This commit is contained in:
Emmanuel Viennet 2023-12-17 22:30:53 +01:00
parent 20407be7ee
commit c316a5ee35
4 changed files with 42 additions and 20 deletions

View File

@ -3,8 +3,14 @@
Votre accès à ScoDoc vient d'être validé. Votre accès à ScoDoc vient d'être validé.
</p> </p>
<p> <p>
Votre identifiant de connexion est: <b>{{ user.user_name }}</b> Votre identifiant ScoDoc est: <b>{{ user.user_name }}</b>
</p> </p>
{% if cas_force %}
<p>
Pour vous connecter, vous devrez utiliser votre identifiant universitaire
sur le système d'authentification de votre établissement (CAS, ENT).
</p>
{% endif %}
{% if token %} {% if token %}
<p>Pour initialiser votre mot de passe ScoDoc, <p>Pour initialiser votre mot de passe ScoDoc,
<a href="{{ url_for('auth.reset_password', token=token, _external=True) }}"> <a href="{{ url_for('auth.reset_password', token=token, _external=True) }}">

View File

@ -1,7 +1,14 @@
Bienvenue {{ user.prenom }} {{ user.nom }}, Bienvenue {{ user.prenom }} {{ user.nom }},
Votre accès à ScoDoc vient d'être validé. Votre accès à ScoDoc vient d'être validé.
Votre identifiant de connexion est: {{ user.user_name }} Votre identifiant ScoDoc est: {{ user.user_name }}
{% if cas_force %}
<p>
Pour vous connecter, vous devrez utiliser votre identifiant universitaire
sur le système d'authentification de votre établissement (CAS, ENT).
</p>
{% endif %}
{% if token %} {% if token %}
Pour initialiser votre mot de passe ScoDoc, suivre le lien: Pour initialiser votre mot de passe ScoDoc, suivre le lien:

View File

@ -125,9 +125,10 @@ class ChangePasswordForm(FlaskForm):
class Mode(IntEnum): class Mode(IntEnum):
WELCOME_AND_CHANGE_PASSWORD = auto() "Mode d'envoi de mail lors de création d'utilisateur"
WELCOME_ONLY = auto() WELCOME_AND_CHANGE_PASSWORD = auto() # mail indiquant de changer mdp
SILENT = auto() WELCOME_ONLY = auto() # mail d'accueil simple
SILENT = auto() # pas de mail
@bp.route("/") @bp.route("/")
@ -467,23 +468,19 @@ def create_user_form(user_name=None, edit=0, all_roles=True):
"welcome", "welcome",
{ {
"title": "Message d'accueil", "title": "Message d'accueil",
"input_type": "checkbox", "input_type": "boolcheckbox",
"explanation": "Envoie un mail d'accueil à l'utilisateur.", "explanation": "Envoie un mail d'accueil à l'utilisateur.",
"labels": ("",), "default": 1,
"allowed_values": ("1",),
"default": "1",
}, },
), ),
( (
"reset_password", "reset_password",
{ {
"title": "", "title": "",
"input_type": "checkbox", "input_type": "boolcheckbox",
"explanation": "indiquer par mail de changer le mot de passe initial", "explanation": """indiquer par mail de changer le mot
"labels": ("",), de passe initial (sauf si CAS forcé)""",
"allowed_values": ("1",), "default": 1,
"default": "1",
# "attributes": ["style='margin-left:20pt'"],
}, },
), ),
] ]
@ -727,8 +724,12 @@ def create_user_form(user_name=None, edit=0, all_roles=True):
# A: envoi de welcome + procedure de reset # A: envoi de welcome + procedure de reset
# B: envoi de welcome seulement (mot de passe saisie dans le formulaire) # B: envoi de welcome seulement (mot de passe saisie dans le formulaire)
# C: Aucun envoi (mot de passe saisi dans le formulaire) # C: Aucun envoi (mot de passe saisi dans le formulaire)
if vals["welcome"] != "1": if vals["welcome"]: # "Envoie un mail d'accueil" coché
if vals["reset_password"] != "1": if vals["reset_password"] and (
(not ScoDocSiteConfig.get("cas_force"))
or vals.get("cas_allow_scodoc_login", False)
):
# nb: si login scodoc non autorisé car CAS seul, n'envoie pas le mot de passe.
mode = Mode.WELCOME_AND_CHANGE_PASSWORD mode = Mode.WELCOME_AND_CHANGE_PASSWORD
else: else:
mode = Mode.WELCOME_ONLY mode = Mode.WELCOME_ONLY
@ -771,18 +772,26 @@ def create_user_form(user_name=None, edit=0, all_roles=True):
token = the_user.get_reset_password_token() token = the_user.get_reset_password_token()
else: else:
token = None token = None
cas_force = ScoDocSiteConfig.get("cas_force")
# Le from doit utiliser la préférence du département de l'utilisateur # Le from doit utiliser la préférence du département de l'utilisateur
email.send_email( email.send_email(
"[ScoDoc] Création de votre compte", "[ScoDoc] Création de votre compte",
sender=email.get_from_addr(), sender=email.get_from_addr(),
recipients=[the_user.email], recipients=[the_user.email],
text_body=render_template( text_body=render_template(
"email/welcome.txt", user=the_user, token=token "email/welcome.txt",
user=the_user,
token=token,
cas_force=cas_force,
), ),
html_body=render_template( html_body=render_template(
"email/welcome.j2", user=the_user, token=token "email/welcome.j2",
user=the_user,
token=token,
cas_force=cas_force,
), ),
) )
flash(f"Mail accueil envoyé à {the_user.email}")
flash("Nouvel utilisateur créé") flash("Nouvel utilisateur créé")
return flask.redirect( return flask.redirect(

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "9.6.71" SCOVERSION = "9.6.72"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"