Ajout rôles et permissions pour Entreprises

This commit is contained in:
Emmanuel Viennet 2022-01-31 14:17:09 +01:00
parent 411533ae79
commit 0e02baccb0
3 changed files with 42 additions and 3 deletions

View File

@ -37,6 +37,16 @@ _SCO_PERMISSIONS = (
(1 << 21, "ScoEditPVJury", "Éditer les PV de jury"), (1 << 21, "ScoEditPVJury", "Éditer les PV de jury"),
# ajouter maquettes Apogee (=> chef dept et secr): # ajouter maquettes Apogee (=> chef dept et secr):
(1 << 22, "ScoEditApo", "Ajouter des maquettes Apogées"), (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"),
) )

View File

@ -58,8 +58,31 @@ SCO_ROLES_DEFAULTS = {
# il peut ajouter des tags sur les formations: # il peut ajouter des tags sur les formations:
# (doit avoir un rôle Ens en plus !) # (doit avoir un rôle Ens en plus !)
"RespPe": (p.ScoEditFormationTags,), "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 # Super Admin est un root: création/suppression de départements
# _tous_ les droits # _tous_ les droits
# Afin d'avoir tous les droits, il ne doit pas être asscoié à un département # Afin d'avoir tous les droits, il ne doit pas être asscoié à un département
"SuperAdmin": p.ALL_PERMISSIONS, "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",
)

View File

@ -62,7 +62,7 @@ from app.decorators import (
permission_required, 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_users
from app.scodoc import sco_utils as scu from app.scodoc import sco_utils as scu
from app.scodoc import sco_xml from app.scodoc import sco_xml
@ -150,9 +150,10 @@ def user_info(user_name, format="json"):
@permission_required(Permission.ScoUsersAdmin) @permission_required(Permission.ScoUsersAdmin)
@scodoc7func @scodoc7func
def create_user_form(user_name=None, edit=0, all_roles=1): 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 ! if user_name is not None: # scodoc7func converti en int !
user_name = str(user_name) user_name = str(user_name)
Role.insert_roles() # assure la mise à jour des rôles en base
auth_dept = current_user.dept auth_dept = current_user.dept
from_mail = current_app.config["SCODOC_MAIL_FROM"] # current_user.email from_mail = current_app.config["SCODOC_MAIL_FROM"] # current_user.email
initvalues = {} initvalues = {}
@ -191,7 +192,7 @@ def create_user_form(user_name=None, edit=0, all_roles=1):
else: else:
# Les rôles standards créés à l'initialisation de ScoDoc: # Les rôles standards créés à l'initialisation de ScoDoc:
standard_roles = [ 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: # Départements auxquels ont peut associer des rôles via ce dialogue:
# si SuperAdmin, tous les rôles standards dans tous les départements # 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 = { editable_roles_set = {
(r, dept) for r in standard_roles for dept in administrable_dept_acronyms (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: if not edit:
submitlabel = "Créer utilisateur" submitlabel = "Créer utilisateur"