From 8a22e285df4ec09208d9a60715d50239a3b5dab6 Mon Sep 17 00:00:00 2001 From: Fanilo-Nantenaina Date: Wed, 21 Jan 2026 12:12:35 +0300 Subject: [PATCH] refactor(security): improve logging format and argument handling --- scripts/manage_security.py | 49 +++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/scripts/manage_security.py b/scripts/manage_security.py index c814dc1..94cd00d 100644 --- a/scripts/manage_security.py +++ b/scripts/manage_security.py @@ -100,25 +100,25 @@ async def list_swagger_users(): logger.info("🔭 Aucun utilisateur Swagger") return - logger.info(f"👥 {len(users)} utilisateur(s) Swagger:\n") + logger.info("👥 {} utilisateur(s) Swagger:\n".format(len(users))) for user in users: status = "ACTIF" if user.is_active else "NON ACTIF" - logger.info(f" {status} {user.username}") - logger.info(f" Nom: {user.full_name}") - logger.info(f" Créé: {user.created_at}") - logger.info(f" Dernière connexion: {user.last_login or 'Jamais'}") + logger.info(" {} {}".format(status, user.username)) + logger.info("Nom: {}".format(user.full_name)) + logger.info("Créé: {}".format(user.created_at)) + logger.info(" Dernière connexion: {}".format(user.last_login or "Jamais")) if user.allowed_tags: try: tags = json.loads(user.allowed_tags) if tags: - logger.info(f" Tags autorisés: {', '.join(tags)}") + logger.info("Tags autorisés: {}".format(", ".join(tags))) else: - logger.info(" Tags autorisés: Tous (admin)") + logger.info("Tags autorisés: Tous (admin)") except json.JSONDecodeError: - logger.info(" Tags: Erreur format") + logger.info("Tags: Erreur format") else: - logger.info(" Tags autorisés: Tous (admin)") + logger.info("Tags autorisés: Tous (admin)") logger.info("") @@ -198,7 +198,7 @@ async def list_api_keys(): logger.info("🔭 Aucune clé API") return - logger.info(f"🔑 {len(keys)} clé(s) API:\n") + logger.info("🔑 {} clé(s) API:\n".format(len(keys))) for key in keys: is_valid = key.is_active and ( @@ -207,11 +207,11 @@ async def list_api_keys(): status = "" if is_valid else "" logger.info(f" {status} {key.name:<30} ({key.key_prefix}...)") - logger.info(f" ID: {key.id}") - logger.info(f" Rate limit: {key.rate_limit_per_minute} req/min") - logger.info(f" Requêtes: {key.total_requests}") - logger.info(f" Expire: {key.expires_at or 'Jamais'}") - logger.info(f" Dernière utilisation: {key.last_used_at or 'Jamais'}") + logger.info(f" ID: {key.id}") + logger.info(f" Rate limit: {key.rate_limit_per_minute} req/min") + logger.info(f" Requêtes: {key.total_requests}") + logger.info(f" Expire: {key.expires_at or 'Jamais'}") + logger.info(f" Dernière utilisation: {key.last_used_at or 'Jamais'}") if key.allowed_endpoints: import json @@ -221,11 +221,11 @@ async def list_api_keys(): display = ", ".join(endpoints[:4]) if len(endpoints) > 4: display += f"... (+{len(endpoints) - 4})" - logger.info(f" Endpoints: {display}") + logger.info(f" Endpoints: {display}") except Exception: pass else: - logger.info(" Endpoints: Tous") + logger.info("Endpoints: Tous") logger.info("") @@ -303,11 +303,12 @@ Exemples: add_p = swagger_sub.add_parser("add", help="Ajouter utilisateur") add_p.add_argument("username", help="Nom d'utilisateur") add_p.add_argument("password", help="Mot de passe") - add_p.add_argument("--full-name", help="Nom complet") + add_p.add_argument("--full-name", help="Nom complet", default=None) add_p.add_argument( "--tags", - nargs="*", - help="Tags OpenAPI autorisés (ex. Clients Devis Authentication)", + nargs="+", # Au moins 1 tag requis SI spécifié + help="Tags OpenAPI autorisés (ex: Clients Devis). Vide = admin complet", + default=None, ) swagger_sub.add_parser("list", help="Lister utilisateurs") @@ -341,13 +342,13 @@ Exemples: if args.command == "swagger": if args.swagger_command == "add": - await add_swagger_user( - args.username, args.password, args.full_name, args.tags - ) + tags = args.tags if args.tags is not None else None + await add_swagger_user(args.username, args.password, args.full_name, tags) elif args.swagger_command == "list": await list_swagger_users() elif args.swagger_command == "delete": - await delete_swagger_user(args.username, args.tags) + tags = args.tags if args.tags is not None else None + await delete_swagger_user(args.username, tags) else: swagger_parser.print_help()