BCard - Documentation technique

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

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 page et limit).

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.


        
On this page

Search results