From 9e43c3719403e361e7a9af1a757e3ca80240cf0b Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet <emmanuel.viennet@gmail.com> Date: Fri, 3 Mar 2023 17:17:14 +0100 Subject: [PATCH] Import config utilisateurs CAS: permet de changer statut active --- app/auth/cas.py | 5 +++++ app/decorators.py | 4 ++++ app/templates/auth/cas_users_import_config.j2 | 17 ++++++++++------- app/views/users.py | 3 +++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/auth/cas.py b/app/auth/cas.py index 01b6c10f9..e031a231a 100644 --- a/app/auth/cas.py +++ b/app/auth/cas.py @@ -169,6 +169,7 @@ def cas_users_import_excel_file(datafile) -> int: """ Import users CAS configuration from Excel file. May change cas_id, cas_allow_login, cas_allow_scodoc_login + and active. :param datafile: stream to be imported :return: nb de comptes utilisateurs modifiés """ @@ -214,6 +215,10 @@ def cas_users_import_data(users_infos: list[dict]) -> int: if val != user.cas_allow_scodoc_login: user.cas_allow_scodoc_login = val modif = True + val = scu.to_bool(info["active"]) + if val != (user.active or False): + user.active = val + modif = True if modif: nb_modif += 1 # Record modifications diff --git a/app/decorators.py b/app/decorators.py index 8ececa72f..08aea4f73 100644 --- a/app/decorators.py +++ b/app/decorators.py @@ -118,6 +118,10 @@ def permission_required_compat_scodoc7(permission): # XXX TODO A SUPPRIMER else: abort(405) # method not allowed if user_name and user_password: + # Ancienne API: va être supprimée courant mars 2023 + current_app.logger.warning( + "using DEPRECATED ScoDoc7 authentication method !" + ) u = User.query.filter_by(user_name=user_name).first() if u and u.check_password(user_password): auth_ok = True diff --git a/app/templates/auth/cas_users_import_config.j2 b/app/templates/auth/cas_users_import_config.j2 index 4bcd8e0d8..382908a43 100644 --- a/app/templates/auth/cas_users_import_config.j2 +++ b/app/templates/auth/cas_users_import_config.j2 @@ -4,27 +4,30 @@ {% block app_content %} <h1>Chargement des configurations CAS des utilisateurs</h1> -<div class="help" style="max-width: 600px;"> +<div style="max-width: 800px;"> <p style="color: red">A utiliser pour modifier le paramétrage CAS de <b>comptes utilisateurs existants</b> </p> <p>L'opération se déroule en plusieurs étapes: </p> <ol> - <li> Dans un premier temps, vous téléchargez une feuille Excel pré-remplie + <li style="margin-bottom:8px;"> Dans un premier temps, vous téléchargez une feuille Excel pré-remplie avec la liste des tous les utilisateurs. </li> - <li>Vous modifiez cette feuille avec votre logiciel préféré. + <li style="margin-bottom:8px;">Vous modifiez cette feuille avec votre logiciel préféré. Vous pouvez supprimer des lignes, mais pas en ajouter. <br> - Il faut remplir ou modifier le contenu des colonnes <tt>cas_id</tt>, - <tt>cas_allow_login</tt> et <tt>cas_allow_scodoc_login</tt>. + On peut remplir ou modifier le contenu des colonnes <tt>active</tt>, + </tt><tt>cas_id</tt>, <tt>cas_allow_login</tt> et <tt>cas_allow_scodoc_login</tt>. <br> Les autres colonnes sont là pour information et seront ignorées à l'import, sauf évidemment <tt>user_name</tt> qui sert à repérer l'utilisateur. + <br> + (Note: <tt>active</tt> active ou désactive le compte, sans lien avec CAS, mais il + est commode de réviser la liste des utilisateurs actifs à l'occasion de la configuration CAS) </li> - <li>Revenez sur cette page et chargez le fichier dans ScoDoc. + <li style="margin-bottom:32px;">Revenez sur cette page et chargez le fichier dans ScoDoc. </li> </ol> @@ -34,7 +37,7 @@ }}">Obtenir la feuille excel à remplir</a>, avec la liste complète des utilisateurs. </li> - <li style="margin-top: 8px;"><b>Étape 2:</b> + <li style="margin-top: 16px;"><b>Étape 2:</b> <div class="row"> <div class="col-md-8"> {{ wtf.quick_form(form) }} diff --git a/app/views/users.py b/app/views/users.py index eab8bb1e8..8e88a87e9 100644 --- a/app/views/users.py +++ b/app/views/users.py @@ -1056,5 +1056,8 @@ def toggle_active_user(user_name: str = None): u.active = not u.active db.session.add(u) db.session.commit() + flash( + f"Compte utilisateur {u.user_name} {'activé' if u.active else 'désactivé'}" + ) return redirect(url_for("users.index_html", scodoc_dept=g.scodoc_dept)) return render_template("auth/toogle_active_user.j2", form=form, u=u)