forked from ScoDoc/ScoDoc
User: autorise SuperAdmin a affecter à tout dept. + modif. user par admin sous CAS
This commit is contained in:
parent
dd7d05c87e
commit
f98fbd1443
@ -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 @@
|
|||||||
<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):
|
|||||||
"""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):
|
|||||||
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):
|
|||||||
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):
|
|||||||
"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):
|
|||||||
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:
|
||||||
|
if vals["dept"] not in selectable_dept_values:
|
||||||
del vals["dept"] # ne change pas de dept
|
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", ... }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user