From dc77cdcc6814acc9e548ea9756b78ce8485f2c94 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Mon, 5 Jul 2021 21:56:28 +0200 Subject: [PATCH] creation super admin en ligne de commande --- README.md | 5 ++++- app/scodoc/sco_roles_default.py | 3 ++- scodoc.py | 10 ++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 18206a95..a5998e16 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,10 @@ ou mieux, importer les utilisateurs de ScoDoc7 avec: flask user-db-import-scodoc7 (la base `SCOUSERS` de ScoDoc7 n'est pas affectée, ScoDoc8 utilise une base séparée, nommée `SCO8USERS`). - + +Pour créer un utilisateur "super admin", c'est à dire admin dans tous les départements: + + flask user-create admin1 SuperAdmin @all ### Bidouilles temporaires diff --git a/app/scodoc/sco_roles_default.py b/app/scodoc/sco_roles_default.py index 30c5bbb1..505c95e7 100644 --- a/app/scodoc/sco_roles_default.py +++ b/app/scodoc/sco_roles_default.py @@ -30,7 +30,7 @@ SCO_ROLES_DEFAULTS = { p.ScoEtudChangeAdr, ), # Admin est le chef du département, pas le "super admin" - # on dit donc lister toutes ses permissions: + # on doit donc lister toutes ses permissions: "Admin": ( p.ScoObservateur, p.ScoView, @@ -54,5 +54,6 @@ SCO_ROLES_DEFAULTS = { ), # 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, } diff --git a/scodoc.py b/scodoc.py index 440cf7d0..fb2951ae 100755 --- a/scodoc.py +++ b/scodoc.py @@ -85,16 +85,18 @@ def _clear_users_db(): @click.argument("username") @click.argument("role") @click.argument("dept") -def user_create(username, role, dept): +def user_create(username, role, dept): # user-create "Create a new user" r = Role.get_named_role(role) if not r: - sys.stderr.write("user_create: role {r} does not exists".format(r=r)) + sys.stderr.write("user_create: role {r} does not exists\n".format(r=role)) return 1 u = User.query.filter_by(user_name=username).first() if u: - sys.stderr.write("user_create: user {u} already exists".format(u=u)) + sys.stderr.write("user_create: user {u} already exists\n".format(u=u)) return 2 + if dept == "@all": + dept = None u = User(user_name=username, dept=dept) u.add_role(r, dept) db.session.add(u) @@ -109,7 +111,7 @@ def user_create(username, role, dept): @app.cli.command() @click.argument("username") @click.password_option() -def user_password(username, password=None): +def user_password(username, password=None): # user-password "Set (or change) user's password" if not password: sys.stderr.write("user_password: missing password")