refactor(security): improve logging format and argument handling

This commit is contained in:
Fanilo-Nantenaina 2026-01-21 12:12:35 +03:00
parent 92597a1143
commit 8a22e285df

View file

@ -100,25 +100,25 @@ async def list_swagger_users():
logger.info("🔭 Aucun utilisateur Swagger") logger.info("🔭 Aucun utilisateur Swagger")
return return
logger.info(f"👥 {len(users)} utilisateur(s) Swagger:\n") logger.info("👥 {} utilisateur(s) Swagger:\n".format(len(users)))
for user in users: for user in users:
status = "ACTIF" if user.is_active else "NON ACTIF" status = "ACTIF" if user.is_active else "NON ACTIF"
logger.info(f" {status} {user.username}") logger.info(" {} {}".format(status, user.username))
logger.info(f" Nom: {user.full_name}") logger.info("Nom: {}".format(user.full_name))
logger.info(f" Créé: {user.created_at}") logger.info("Créé: {}".format(user.created_at))
logger.info(f" Dernière connexion: {user.last_login or 'Jamais'}") logger.info(" Dernière connexion: {}".format(user.last_login or "Jamais"))
if user.allowed_tags: if user.allowed_tags:
try: try:
tags = json.loads(user.allowed_tags) tags = json.loads(user.allowed_tags)
if tags: if tags:
logger.info(f" Tags autorisés: {', '.join(tags)}") logger.info("Tags autorisés: {}".format(", ".join(tags)))
else: else:
logger.info(" Tags autorisés: Tous (admin)") logger.info("Tags autorisés: Tous (admin)")
except json.JSONDecodeError: except json.JSONDecodeError:
logger.info(" Tags: Erreur format") logger.info("Tags: Erreur format")
else: else:
logger.info(" Tags autorisés: Tous (admin)") logger.info("Tags autorisés: Tous (admin)")
logger.info("") logger.info("")
@ -198,7 +198,7 @@ async def list_api_keys():
logger.info("🔭 Aucune clé API") logger.info("🔭 Aucune clé API")
return return
logger.info(f"🔑 {len(keys)} clé(s) API:\n") logger.info("🔑 {} clé(s) API:\n".format(len(keys)))
for key in keys: for key in keys:
is_valid = key.is_active and ( is_valid = key.is_active and (
@ -207,11 +207,11 @@ async def list_api_keys():
status = "" if is_valid else "" status = "" if is_valid else ""
logger.info(f" {status} {key.name:<30} ({key.key_prefix}...)") logger.info(f" {status} {key.name:<30} ({key.key_prefix}...)")
logger.info(f" ID: {key.id}") logger.info(f" ID: {key.id}")
logger.info(f" Rate limit: {key.rate_limit_per_minute} req/min") logger.info(f" Rate limit: {key.rate_limit_per_minute} req/min")
logger.info(f" Requêtes: {key.total_requests}") logger.info(f" Requêtes: {key.total_requests}")
logger.info(f" Expire: {key.expires_at or 'Jamais'}") logger.info(f" Expire: {key.expires_at or 'Jamais'}")
logger.info(f" Dernière utilisation: {key.last_used_at or 'Jamais'}") logger.info(f" Dernière utilisation: {key.last_used_at or 'Jamais'}")
if key.allowed_endpoints: if key.allowed_endpoints:
import json import json
@ -221,11 +221,11 @@ async def list_api_keys():
display = ", ".join(endpoints[:4]) display = ", ".join(endpoints[:4])
if len(endpoints) > 4: if len(endpoints) > 4:
display += f"... (+{len(endpoints) - 4})" display += f"... (+{len(endpoints) - 4})"
logger.info(f" Endpoints: {display}") logger.info(f" Endpoints: {display}")
except Exception: except Exception:
pass pass
else: else:
logger.info(" Endpoints: Tous") logger.info("Endpoints: Tous")
logger.info("") logger.info("")
@ -303,11 +303,12 @@ Exemples:
add_p = swagger_sub.add_parser("add", help="Ajouter utilisateur") add_p = swagger_sub.add_parser("add", help="Ajouter utilisateur")
add_p.add_argument("username", help="Nom d'utilisateur") add_p.add_argument("username", help="Nom d'utilisateur")
add_p.add_argument("password", help="Mot de passe") 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( add_p.add_argument(
"--tags", "--tags",
nargs="*", nargs="+", # Au moins 1 tag requis SI spécifié
help="Tags OpenAPI autorisés (ex. Clients Devis Authentication)", help="Tags OpenAPI autorisés (ex: Clients Devis). Vide = admin complet",
default=None,
) )
swagger_sub.add_parser("list", help="Lister utilisateurs") swagger_sub.add_parser("list", help="Lister utilisateurs")
@ -341,13 +342,13 @@ Exemples:
if args.command == "swagger": if args.command == "swagger":
if args.swagger_command == "add": if args.swagger_command == "add":
await add_swagger_user( tags = args.tags if args.tags is not None else None
args.username, args.password, args.full_name, args.tags await add_swagger_user(args.username, args.password, args.full_name, tags)
)
elif args.swagger_command == "list": elif args.swagger_command == "list":
await list_swagger_users() await list_swagger_users()
elif args.swagger_command == "delete": 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: else:
swagger_parser.print_help() swagger_parser.print_help()