SubscriberController
extends AbstractController
in package
Consulte les abonnés de la plateforme depuis le back-office, segmentés par offre.
Fournit deux listings filtrables (offre Free et offre Pro) construits à partir de
UserRepository::createSubscriberListFilterQueryBuilder(), ainsi qu'une fiche de détail par
abonné. Les filtres exposés couvrent la recherche libre, le statut du compte, le pays,
l'activité, le statut d'abonnement et le cycle de facturation.
Préfixe de route : /admin/subscriber. Authentification complète requise au niveau de la classe ;
chaque action exige en plus l'un des rôles ROLE_ADMIN, ROLE_MANAGER, ROLE_OPERATOR ou ROLE_SUPPORT.
Attributes
- #[IsGranted]
- 'IS_AUTHENTICATED_FULLY'
- #[Route]
- '/admin/subscriber'
Table of Contents
Properties
- $entityManager : EntityManagerInterface
- $paginator : PaginatorInterface
- $userRepository : UserRepository
Methods
- __construct() : mixed
- freeSubscribers() : Response
- Liste les abonnés de l'offre gratuite (« Free »).
- proSubscribers() : Response
- Liste les abonnés de l'offre « Pro ».
- view() : Response
- Affiche la fiche détaillée d'un abonné et répare au passage les hash publics de ses cartes.
- buildCountriesList() : array<string, string>
- Construit la liste des pays destinée aux filtres, avec les pays prioritaires en tête.
Properties
$entityManager read-only
private
EntityManagerInterface
$entityManager
$paginator read-only
private
PaginatorInterface
$paginator
$userRepository read-only
private
UserRepository
$userRepository
Methods
__construct()
public
__construct(UserRepository $userRepository, PaginatorInterface $paginator, EntityManagerInterface $entityManager) : mixed
Parameters
- $userRepository : UserRepository
-
Dépôt des utilisateurs, fournit le query builder de filtrage des abonnés.
- $paginator : PaginatorInterface
-
Service de pagination KnpPaginator.
- $entityManager : EntityManagerInterface
-
Gestionnaire d'entités, utilisé pour flusher les hash publics recalculés.
freeSubscribers()
Liste les abonnés de l'offre gratuite (« Free »).
public
freeSubscribers(Request $request) : Response
L'accès est refusé si l'utilisateur ne possède aucun des rôles ROLE_ADMIN, ROLE_MANAGER,
ROLE_OPERATOR ou ROLE_SUPPORT. Les filtres proviennent de la query string (q,
account_status, country, activity) ; trois contraintes sont imposées en dur : statut
d'abonnement ACTIVE, particuliers uniquement (only_individuals) et prise en compte du
dernier abonnement seulement (latest_subscription_only). Résultats paginés par 10.
Route : /admin/subscriber/free-subscriber (GET), nom app_free_subscriber.
Requiert ROLE_ADMIN, ROLE_MANAGER, ROLE_OPERATOR ou ROLE_SUPPORT.
Parameters
- $request : Request
-
Requête HTTP courante portant les filtres et le numéro de page.
Attributes
- #[Route]
- '/free-subscriber'
- $name: 'app_free_subscriber'
- $methods: ['GET']
Return values
Response —Rendu du template admin/subscriber/freeSubscribers.html.twig avec les
utilisateurs paginés et la liste des pays issue de
SubscriberController::buildCountriesList().
proSubscribers()
Liste les abonnés de l'offre « Pro ».
public
proSubscribers(Request $request) : Response
Même contrôle de rôles que SubscriberController::freeSubscribers(). À la différence du
listing Free, le statut d'abonnement est ici pilotable par la query string
(subscription_status, valeur par défaut ACTIVE), le cycle de facturation
(billing_cycle) est exposé comme filtre supplémentaire, et aucune restriction
« particuliers uniquement » n'est appliquée. Résultats paginés par 10.
Route : /admin/subscriber/pro-subscriber (GET), nom app_pro_subscriber.
Requiert ROLE_ADMIN, ROLE_MANAGER, ROLE_OPERATOR ou ROLE_SUPPORT.
Parameters
- $request : Request
-
Requête HTTP courante portant les filtres et le numéro de page.
Attributes
- #[Route]
- '/pro-subscriber'
- $name: 'app_pro_subscriber'
- $methods: ['GET']
Return values
Response —Rendu du template admin/subscriber/proSubscribers.html.twig avec les
utilisateurs paginés et la liste des pays.
view()
Affiche la fiche détaillée d'un abonné et répare au passage les hash publics de ses cartes.
public
view(User $user) : Response
Après le contrôle de rôles, parcourt toutes les cartes BusinessCardAize de
l'utilisateur et régénère le publicHash de celles qui n'en ont pas ou dont la valeur ne
correspond pas au format attendu (64 caractères hexadécimaux). Le hash est calculé par
hash_hmac('sha256', id, APP_SECRET) ; les cartes sans identifiant ou le cas où APP_SECRET
est vide sont ignorés. Un unique flush n'est déclenché que si au moins une carte a été
modifiée — effet de bord en écriture sur une route GET.
Route : /admin/subscriber/{id} (GET), nom app_admin_subscriber_view.
Requiert ROLE_ADMIN, ROLE_MANAGER, ROLE_OPERATOR ou ROLE_SUPPORT.
Parameters
- $user : User
-
Abonné résolu automatiquement depuis l'identifiant de l'URL.
Attributes
- #[Route]
- '/{id}'
- $name: 'app_admin_subscriber_view'
- $methods: ['GET']
Return values
Response —Rendu du template admin/subscriber/view.html.twig.
buildCountriesList()
Construit la liste des pays destinée aux filtres, avec les pays prioritaires en tête.
private
buildCountriesList() : array<string, string>
Part des noms de pays fournis par Symfony\Component\Intl\Countries, place en premier les
codes GN, BE, FR et CA (dans cet ordre de déclaration), puis ajoute les autres pays
triés alphabétiquement selon la locale (SORT_LOCALE_STRING).
Return values
array<string, string> —Tableau associatif code ISO du pays => nom du pays.