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")
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()