Skip to content

Ban system : Ajout du système de bannissement - #46

Merged
raynaldlao merged 1 commit into
masterfrom
ban-system
Jul 20, 2026
Merged

Ban system : Ajout du système de bannissement#46
raynaldlao merged 1 commit into
masterfrom
ban-system

Conversation

@raynaldlao

Copy link
Copy Markdown
Owner

Contexte

Ajout d'un système complet de bannissement/levée de bannissement. Les comptes acquièrent les champs is_banned et ban_reason. Les services, ports et adaptateurs gèrent le bannissement et bloquent la connexion des utilisateurs bannis. Le frontend ajoute un dialogue de bannissement global avec champ raison et compteur de caractères. Couverture de test complète (domaine, adaptateurs, services, intégration).

Backend

  • Migration V13 : colonnes is_banned (BOOLEAN) et ban_reason (VARCHAR(500)) ajoutées à accounts
  • Domaine : champs is_banned et ban_reason dans l'entité Account
  • Ports : nouveau port d'entrée BanAccountManagementPort, nouvelle méthode update_ban_status() dans le port de sortie
  • Service login_service.py : implémente ban_account(), unban_account(), get_banned_accounts() avec validation (existence du compte, pas d'auto-bannissement, pas de bannissement d'un admin)
  • Service login_service.pyauthenticate() : bloque la connexion si is_banned=True
  • Services article/comment : retournent None si l'auteur est banni
  • Adaptateur Flask : routes POST /admin/ban et /admin/unban avec vérification des droits admin
  • Page login : affiche la raison du bannissement si l'utilisateur est banni

Frontend

  • Dialogue global : modal de bannissement avec champ raison et compteur de caractères (500 max), chargé via base.html
  • Liste utilisateurs admin : colonne statut (Active/Banned) + boutons Ban/Unban avec ouverture du dialogue
  • Profil : bannissement retiré du profil (géré uniquement depuis l'interface admin)
  • CSS : styles du dialogue de bannissement, .btn-danger, .btn-danger-outline, compteur de caractères avec état visuel de dépassement

Tests (30 fichiers, ~672 lignes)

  • Bannissement/levée de bannissement réussi, auto-bannissement interdit, bannissement d'un admin interdit, bannissement d'un utilisateur inexistant, connexion bloquée si banni, raison de bannissement affichée sur la page login, tests DTO (banni/non banni), tests in-memory et SQLAlchemy, tests d'intégration (flux complet)

…counter. Accounts gain is_banned and ban_reason fields; services, ports and adapters handle ban/unban and block banned users. Frontend adds a site‑wide ban dialog, reason field and counter, updates user list and profile buttons, and cleans old ban code. Full test coverage validates domain, adapters, services and integration
@raynaldlao
raynaldlao requested a review from hlargitte July 20, 2026 14:43
@raynaldlao raynaldlao self-assigned this Jul 20, 2026

@hlargitte hlargitte left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@raynaldlao
raynaldlao merged commit 53888a6 into master Jul 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants