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)