From 0e02baccb01d2e580c2d719c23ec59281affd2f3 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Mon, 31 Jan 2022 14:17:09 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20r=C3=B4les=20et=20permissions=20pour=20?= =?UTF-8?q?Entreprises?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_permissions.py | 10 ++++++++++ app/scodoc/sco_roles_default.py | 23 +++++++++++++++++++++++ app/views/users.py | 12 +++++++++--- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/scodoc/sco_permissions.py b/app/scodoc/sco_permissions.py index a1a06aba..c72b3ff5 100644 --- a/app/scodoc/sco_permissions.py +++ b/app/scodoc/sco_permissions.py @@ -37,6 +37,16 @@ _SCO_PERMISSIONS = ( (1 << 21, "ScoEditPVJury", "Éditer les PV de jury"), # ajouter maquettes Apogee (=> chef dept et secr): (1 << 22, "ScoEditApo", "Ajouter des maquettes Apogées"), + # Application relations entreprises + (1 << 23, "RelationsEntreprisesView", "Voir l'application relations entreprises"), + (1 << 24, "RelationsEntreprisesChange", "Modifier les entreprises"), + ( + 1 << 25, + "RelationsEntreprisesExport", + "Exporter les données de l'application relations entreprises", + ), + (1 << 25, "RelationsEntreprisesSend", "Envoyer des offres"), + (1 << 26, "RelationsEntreprisesValidate", "Valide les entreprises"), ) diff --git a/app/scodoc/sco_roles_default.py b/app/scodoc/sco_roles_default.py index 6f8d79ee..9529b031 100644 --- a/app/scodoc/sco_roles_default.py +++ b/app/scodoc/sco_roles_default.py @@ -58,8 +58,31 @@ SCO_ROLES_DEFAULTS = { # il peut ajouter des tags sur les formations: # (doit avoir un rôle Ens en plus !) "RespPe": (p.ScoEditFormationTags,), + # Rôles pour l'application relations entreprises + # ObservateurEntreprise est un observateur de l'application entreprise + "ObservateurEntreprise": (p.RelationsEntreprisesView,), + # UtilisateurEntreprise est un utilisateur de l'application entreprise (droit de modification) + "UtilisateurEntreprise": (p.RelationsEntreprisesView, p.RelationsEntreprisesChange), + # AdminEntreprise est un admin de l'application entreprise (toutes les actions possibles de l'application) + "AdminEntreprise": ( + p.RelationsEntreprisesView, + p.RelationsEntreprisesChange, + p.RelationsEntreprisesExport, + p.RelationsEntreprisesSend, + p.RelationsEntreprisesValidate, + ), # Super Admin est un root: création/suppression de départements # _tous_ les droits # Afin d'avoir tous les droits, il ne doit pas être asscoié à un département "SuperAdmin": p.ALL_PERMISSIONS, } + +# Les rôles accessibles via la page d'admin utilisateurs +# - associés à un département: +ROLES_ATTRIBUABLES_DEPT = ("Ens", "Secr", "Admin", "RespPe") +# - globaux: (ne peuvent être attribués que par un SuperAdmin) +ROLES_ATTRIBUABLES_SCODOC = ( + "ObservateurEntreprise", + "UtilisateurEntreprise", + "AdminEntreprise", +) diff --git a/app/views/users.py b/app/views/users.py index 59175344..0655da50 100644 --- a/app/views/users.py +++ b/app/views/users.py @@ -62,7 +62,7 @@ from app.decorators import ( permission_required, ) -from app.scodoc import html_sco_header, sco_import_users, sco_excel +from app.scodoc import html_sco_header, sco_import_users, sco_excel, sco_roles_default from app.scodoc import sco_users from app.scodoc import sco_utils as scu from app.scodoc import sco_xml @@ -150,9 +150,10 @@ def user_info(user_name, format="json"): @permission_required(Permission.ScoUsersAdmin) @scodoc7func def create_user_form(user_name=None, edit=0, all_roles=1): - "form. création ou edition utilisateur" + "form. création ou édition utilisateur" if user_name is not None: # scodoc7func converti en int ! user_name = str(user_name) + Role.insert_roles() # assure la mise à jour des rôles en base auth_dept = current_user.dept from_mail = current_app.config["SCODOC_MAIL_FROM"] # current_user.email initvalues = {} @@ -191,7 +192,7 @@ def create_user_form(user_name=None, edit=0, all_roles=1): else: # Les rôles standards créés à l'initialisation de ScoDoc: standard_roles = [ - Role.get_named_role(r) for r in ("Ens", "Secr", "Admin", "RespPe") + Role.get_named_role(r) for r in sco_roles_default.ROLES_ATTRIBUABLES_DEPT ] # Départements auxquels ont peut associer des rôles via ce dialogue: # si SuperAdmin, tous les rôles standards dans tous les départements @@ -215,6 +216,11 @@ def create_user_form(user_name=None, edit=0, all_roles=1): editable_roles_set = { (r, dept) for r in standard_roles for dept in administrable_dept_acronyms } + if current_user.is_administrator(): + editable_roles_set |= { + (Role.get_named_role(r), "") + for r in sco_roles_default.ROLES_ATTRIBUABLES_SCODOC + } # if not edit: submitlabel = "Créer utilisateur"