Skip to content
Snippets Groups Projects
Commit f98fbd14 authored by Emmanuel Viennet's avatar Emmanuel Viennet
Browse files

User: autorise SuperAdmin a affecter à tout dept. + modif. user par admin sous CAS

parent dd7d05c8
No related branches found
No related tags found
No related merge requests found
...@@ -34,8 +34,10 @@ ...@@ -34,8 +34,10 @@
<table class="tf"> <table class="tf">
<tbody> <tbody>
{% if current_user.cas_allow_scodoc_login %}
{{ render_field(form.old_password, size=14, auth_name=auth_username, {{ render_field(form.old_password, size=14, auth_name=auth_username,
style="padding:1px; margin-left: 1em; margin-top: 4px;") }} style="padding:1px; margin-left: 1em; margin-top: 4px;") }}
{% endif %}
<tr> <tr>
<td colspan="2">Vous pouvez changer le mot de passe et/ou l'adresse email.</td> <td colspan="2">Vous pouvez changer le mot de passe et/ou l'adresse email.</td>
</tr> </tr>
......
...@@ -10,14 +10,14 @@ ...@@ -10,14 +10,14 @@
<b>Login :</b> {{user.user_name}} <b>Login :</b> {{user.user_name}}
{% if ScoDocSiteConfig.is_cas_enabled() %} {% if ScoDocSiteConfig.is_cas_enabled() %}
(connexion via ce login ScoDoc (connexion via ce login ScoDoc
{% if user.cas_allow_scodoc_login %}autorisée{% else %}<span class="fontred">interdite</span> {% if user.can_login_using_scodoc() %}autorisée{% else %}<span class="fontred">interdite</span>
{% endif %}) {% endif %})
{% endif -%} {% endif -%}
<br> <br>
<b>CAS id:</b> {{user.cas_id or "(aucun)"}} <b>CAS id:</b> {{user.cas_id or "(aucun)"}}
{% if ScoDocSiteConfig.is_cas_enabled() %} {% if ScoDocSiteConfig.is_cas_enabled() %}
(CAS {{'autorisé' if user.cas_allow_login else 'interdit'}} pour cet utilisateur) (CAS {{'autorisé' if user.cas_allow_login else 'interdit'}} pour cet utilisateur)
{% if user.cas_allow_scodoc_login %} {% if user.can_login_using_scodoc() %}
(connexion sans CAS autorisée) (connexion sans CAS autorisée)
{% endif %} {% endif %}
{% endif %} {% endif %}
......
...@@ -91,7 +91,7 @@ class ChangePasswordForm(FlaskForm): ...@@ -91,7 +91,7 @@ class ChangePasswordForm(FlaskForm):
"""formulaire changement mot de passe et mail""" """formulaire changement mot de passe et mail"""
user_name = HiddenField() user_name = HiddenField()
old_password = PasswordField(_l("Mot de passe actuel")) old_password = PasswordField(_l("Votre mot de passe"))
new_password = PasswordField(_l("Nouveau mot de passe de l'utilisateur")) new_password = PasswordField(_l("Nouveau mot de passe de l'utilisateur"))
bis_password = PasswordField( bis_password = PasswordField(
_l("Répéter"), _l("Répéter"),
...@@ -126,9 +126,13 @@ class ChangePasswordForm(FlaskForm): ...@@ -126,9 +126,13 @@ class ChangePasswordForm(FlaskForm):
raise ValidationError("Mot de passe trop simple, recommencez") raise ValidationError("Mot de passe trop simple, recommencez")
def validate_old_password(self, old_password): def validate_old_password(self, old_password):
"vérifie password actuel" """vérifie password de l'utilisateur qui effectue la manip.
(sauf si CAS obligatoire)
"""
if not getattr(current_user, "cas_allow_scodoc_login", True):
return # admin local sans mot de passe
if not current_user.check_password(old_password.data): if not current_user.check_password(old_password.data):
raise ValidationError("Mot de passe actuel incorrect, ré-essayez") raise ValidationError("Votre mot de passe est incorrect, ré-essayez")
class Mode(IntEnum): class Mode(IntEnum):
...@@ -538,7 +542,11 @@ def create_user_form(user_name=None, edit=0, all_roles=True): ...@@ -538,7 +542,11 @@ def create_user_form(user_name=None, edit=0, all_roles=True):
else (auth_dept or "") else (auth_dept or "")
) )
if len(selectable_dept_acronyms) > 0: if len(selectable_dept_acronyms) > 0:
selectable_dept_acronyms = sorted(list(selectable_dept_acronyms)) selectable_dept_labels = sorted(list(selectable_dept_acronyms))
selectable_dept_values = selectable_dept_labels[:]
if edit and (current_user.is_administrator() or the_user.dept is None):
selectable_dept_labels.append("*Tous*")
selectable_dept_values.append("")
descr.append( descr.append(
( (
"dept", "dept",
...@@ -546,8 +554,8 @@ def create_user_form(user_name=None, edit=0, all_roles=True): ...@@ -546,8 +554,8 @@ def create_user_form(user_name=None, edit=0, all_roles=True):
"title": "Département", "title": "Département",
"input_type": "menu", "input_type": "menu",
"explanation": """département de rattachement de l'utilisateur""", "explanation": """département de rattachement de l'utilisateur""",
"labels": selectable_dept_acronyms, "labels": selectable_dept_labels,
"allowed_values": selectable_dept_acronyms, "allowed_values": selectable_dept_values,
"default": default_dept, "default": default_dept,
}, },
) )
...@@ -753,8 +761,17 @@ def create_user_form(user_name=None, edit=0, all_roles=True): ...@@ -753,8 +761,17 @@ def create_user_form(user_name=None, edit=0, all_roles=True):
if "status" in vals: if "status" in vals:
vals["active"] = vals["status"] == "" vals["active"] = vals["status"] == ""
# Département: # Département:
if ("dept" in vals) and (vals["dept"] not in selectable_dept_acronyms): if "dept" in vals:
del vals["dept"] # ne change pas de dept if vals["dept"] not in selectable_dept_values:
del vals["dept"] # ne change pas de dept
else:
vals["dept"] = vals["dept"] or None
if (
vals["dept"] is None
and the_user.dept is not None
and not current_user.is_administrator()
):
del vals["dept"] # seul super admin peut affecter à tous
# Traitement des roles: ne doit pas affecter les rôles # Traitement des roles: ne doit pas affecter les rôles
# que l'on en contrôle pas: # que l'on en contrôle pas:
for role in orig_roles_strings: # { "Ens_RT", "Secr_CJ", ... } for role in orig_roles_strings: # { "Ens_RT", "Secr_CJ", ... }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment