EmployeeController
extends AbstractController
in package
Gère le répertoire des employés d'une entreprise cliente dans le back-office.
Chaque action est cloisonnée à l'entreprise (Company) de l'utilisateur connecté : un compte sans
entreprise rattachée est refusé, et toute manipulation d'un employé appartenant à une autre
entreprise lève une exception d'accès refusé. L'unicité de l'email est vérifiée au sein de
l'entreprise lors de la création et de la modification. La « suppression » n'efface jamais
l'employé : elle se contente de le désactiver (active = false).
Préfixe de route : /admin/employees. Authentification complète requise
(IS_AUTHENTICATED_FULLY) ; aucun rôle spécifique n'est exigé au niveau de la classe, le
cloisonnement se faisant par l'entreprise du compte connecté.
Attributes
- #[IsGranted]
- 'IS_AUTHENTICATED_FULLY'
- #[Route]
- '/admin/employees'
Table of Contents
Properties
- $employeeRepository : EmployeeRepository
- $entityManager : EntityManagerInterface
Methods
- __construct() : mixed
- activate() : Response
- Réactive un employé précédemment désactivé.
- deactivated() : Response
- Désactive un employé sans passer par le formulaire de suppression.
- delete() : Response
- Désactive un employé (suppression logique).
- edit() : Response
- Modifie les informations d'un employé de l'entreprise connectée.
- index() : Response
- Affiche la liste paginée des employés de l'entreprise connectée.
- new() : Response
- Crée un nouvel employé rattaché à l'entreprise de l'utilisateur connecté.
- show() : Response
- Affiche le détail d'un employé.
Properties
$employeeRepository read-only
private
EmployeeRepository
$employeeRepository
$entityManager read-only
private
EntityManagerInterface
$entityManager
Methods
__construct()
public
__construct(EntityManagerInterface $entityManager, EmployeeRepository $employeeRepository) : mixed
Parameters
- $entityManager : EntityManagerInterface
-
Gestionnaire d'entités utilisé pour persister et flusher les employés.
- $employeeRepository : EmployeeRepository
-
Dépôt des employés (recherche par entreprise, par email, comptage des actifs).
activate()
Réactive un employé précédemment désactivé.
public
activate(Employee $employee) : Response
Vérifie l'appartenance de l'employé à l'entreprise de l'utilisateur connecté, puis positionne
active à true et flushe. Aucune protection CSRF n'est appliquée sur cette action et aucune
méthode HTTP n'est restreinte dans l'attribut #[Route].
Route : /admin/employees/{id}/activate (toutes méthodes), nom admin_employee_activate.
Parameters
- $employee : Employee
-
Employé résolu automatiquement depuis l'identifiant de l'URL.
Attributes
- #[Route]
- '/{id}/activate'
- $name: 'admin_employee_activate'
Return values
Response —Redirection vers admin_employee_index avec un message flash de succès.
deactivated()
Désactive un employé sans passer par le formulaire de suppression.
public
deactivated(Request $request, Employee $employee) : Response
Variante non protégée par CSRF de EmployeeController::delete() : après vérification de
l'appartenance à l'entreprise, positionne active à false et flushe. Le paramètre
$request est injecté mais n'est pas exploité dans le corps de la méthode.
Route : /admin/employees/{id}/deactivated (toutes méthodes), nom admin_employee_deactivated.
Parameters
- $request : Request
-
Requête HTTP courante (non utilisée).
- $employee : Employee
-
Employé résolu automatiquement depuis l'identifiant de l'URL.
Attributes
- #[Route]
- '/{id}/deactivated'
- $name: 'admin_employee_deactivated'
Return values
Response —Redirection vers admin_employee_index avec un message flash de succès.
delete()
Désactive un employé (suppression logique).
public
delete(Request $request, Employee $employee) : Response
Malgré son nom, cette action ne supprime pas l'entité : après validation du jeton CSRF
delete<id>, elle positionne simplement active à false puis flushe. Si le jeton CSRF est
invalide, aucune modification n'est effectuée et aucun message n'est affiché ; l'utilisateur
est redirigé vers la liste dans tous les cas.
Route : /admin/employees/{id}/delete (POST), nom admin_employee_delete.
Parameters
- $request : Request
-
Requête HTTP courante, contenant le jeton CSRF
_token. - $employee : Employee
-
Employé résolu automatiquement depuis l'identifiant de l'URL.
Attributes
- #[Route]
- '/{id}/delete'
- $name: 'admin_employee_delete'
- $methods: ['POST']
Return values
Response —Redirection vers admin_employee_index.
edit()
Modifie les informations d'un employé de l'entreprise connectée.
public
edit(Request $request, Employee $employee) : Response
Vérifie d'abord l'appartenance de l'employé à l'entreprise de l'utilisateur. À la soumission, contrôle qu'aucun autre employé de l'entreprise n'utilise déjà l'email saisi (comparaison des identifiants pour exclure l'employé en cours d'édition) ; en cas de conflit, un flash d'erreur est ajouté et le formulaire est réaffiché sans flush.
Route : /admin/employees/{id}/edit (GET, POST), nom admin_employee_edit.
Parameters
- $request : Request
-
Requête HTTP courante, utilisée pour traiter le formulaire.
- $employee : Employee
-
Employé résolu automatiquement depuis l'identifiant de l'URL.
Attributes
- #[Route]
- '/{id}/edit'
- $name: 'admin_employee_edit'
- $methods: ['GET', 'POST']
Return values
Response —Rendu du template admin/employee/edit.html.twig, ou redirection vers
admin_employee_index après modification réussie.
index()
Affiche la liste paginée des employés de l'entreprise connectée.
public
index(PaginatorInterface $paginator, Request $request) : Response
Refuse l'accès si l'utilisateur n'est pas une instance de User ou n'a pas d'entreprise
rattachée. Récupère tous les employés de l'entreprise puis le nombre d'employés actifs
(countActiveByCompany) affiché à part. La pagination lit les paramètres de requête page
(défaut 1) et limit (défaut 10).
Route : /admin/employees/ (GET), nom admin_employee_index.
Parameters
- $paginator : PaginatorInterface
-
Service de pagination KnpPaginator.
- $request : Request
-
Requête HTTP courante (paramètres
pageetlimit).
Attributes
- #[Route]
- '/'
- $name: 'admin_employee_index'
- $methods: ['GET']
Return values
Response —Rendu du template admin/employee/index.html.twig avec les employés paginés,
le nombre d'employés actifs et l'utilisateur/entreprise courant.
new()
Crée un nouvel employé rattaché à l'entreprise de l'utilisateur connecté.
public
new(Request $request) : Response
Refuse l'accès si le compte connecté n'a pas d'entreprise. Le nouvel employé est
automatiquement associé à cette entreprise avant traitement du formulaire. À la soumission,
un contrôle d'unicité est effectué via findByEmailAndCompany() : si un employé porte déjà
cet email dans l'entreprise, un message flash d'erreur est ajouté et le formulaire est
réaffiché sans persistance.
Route : /admin/employees/new (GET, POST), nom admin_employee_new.
Parameters
- $request : Request
-
Requête HTTP courante, utilisée pour traiter le formulaire.
Attributes
- #[Route]
- '/new'
- $name: 'admin_employee_new'
- $methods: ['GET', 'POST']
Return values
Response —Rendu du template admin/employee/new.html.twig (formulaire initial, erreurs
de validation ou email déjà utilisé), ou redirection vers
admin_employee_index après création réussie.
show()
Affiche le détail d'un employé.
public
show(Employee $employee) : Response
Vérifie que l'employé demandé appartient bien à l'entreprise de l'utilisateur connecté ; dans le cas contraire, une exception d'accès refusé est levée avec le message « Vous ne pouvez voir que vos propres employés. ».
Route : /admin/employees/{id} (GET), nom admin_employee_show.
Parameters
- $employee : Employee
-
Employé résolu automatiquement depuis l'identifiant de l'URL.
Attributes
- #[Route]
- '/{id}'
- $name: 'admin_employee_show'
- $methods: ['GET']
Return values
Response —Rendu du template admin/employee/show.html.twig.