{% extends 'layouts/authenticated.html.twig' %} {% block page_title %}{{ user.email }} - Détails Utilisateur{% endblock %} {% block content %} {# Header with user info #}
{{ user.firstName ? user.firstName|slice(0, 1)|upper : user.email|slice(0, 1)|upper }}{{ user.lastName ? user.lastName|slice(0, 1)|upper : '' }}

{{ user.firstName }} {{ user.lastName }}

{{ user.email }}

{{ user.isActive ? 'Actif' : 'Inactif' }} {% if user.emailVerified %} Email vérifié {% endif %} {% if user.is2faEnabled %} 2FA {% endif %}
{# Tabs Navigation #}
{# Tab Content #}
{% if current_tab == 'profile' %} {# Profile Tab #}

Informations Personnelles

Email
{{ user.email }}
Nom d'utilisateur
{{ user.username|default('N/A') }}
Prénom
{{ user.firstName|default('N/A') }}
Nom
{{ user.lastName|default('N/A') }}
Téléphone
{{ user.phone|default('N/A') }}
Langue
{{ user.preferredLanguage|default('fr') }}
Fuseau horaire
{{ user.timezone|default('Africa/Dakar') }}
Rôles
{% for role in user.roles %} {{ role }} {% endfor %}
Bio
{{ user.bio|default('Aucune biographie') }}
Date d'inscription
{{ user.createdAt|date('d/m/Y à H:i') }}
Dernière mise à jour
{{ user.updatedAt|date('d/m/Y à H:i') }}

Préférences

Notifications Email
{{ user.emailNotifications ? 'Activées' : 'Désactivées' }}
Notifications Sécurité
{{ user.securityNotifications ? 'Activées' : 'Désactivées' }}
Notifications Système
{{ user.systemNotifications ? 'Activées' : 'Désactivées' }}
{% elseif current_tab == 'security' %} {# Security Tab #}

Paramètres de Sécurité

Authentification

Double authentification (2FA)
{{ user.is2faEnabled ? 'Activé' : 'Désactivé' }}
Validation IP
{{ user.isIpValidationEnabled ? 'Activé' : 'Désactivé' }}
Alertes de connexion
{{ user.receiveLoginAlerts ? 'Activé' : 'Désactivé' }}

Mot de passe

Changement requis
{{ user.mustChangePassword ? 'Oui' : 'Non' }}
Dernier changement
{{ user.lastPasswordChangedAt ? user.lastPasswordChangedAt|date('d/m/Y à H:i') : 'Jamais' }}
{% if security_activities is defined and security_activities is not empty %}

Événements de Sécurité Récents

{% for activity in security_activities %} {% endfor %}
Type Description IP Date
{{ activity.activityType }} {{ activity.description|u.truncate(60, '...') }} {{ activity.ipAddress|default('N/A') }} {{ activity.createdAt|date('d/m/Y H:i') }}
{% endif %}
{% elseif current_tab == 'activities' %} {# Activities Tab #}

Historique des Activités

{% if activities is empty %}

Aucune activité enregistrée

{% else %}
{% for activity in activities %} {% endfor %}
Type Catégorie Description IP Date
{% if activity.isSuspicious %} {% endif %} {{ activity.activityType }} {{ activity.activityCategory }} {{ activity.description|default('')|u.truncate(50, '...') }} {{ activity.ipAddress|default('N/A') }} {{ activity.createdAt|date('d/m/Y H:i') }}
{# Pagination for activities #} {% if activities.pageCount > 1 %}
{{ knp_pagination_render(activities) }}
{% endif %} {% endif %}
{% elseif current_tab == 'devices' %} {# Devices Tab #}

Appareils Enregistrés

{% if devices is empty %}

Aucun appareil enregistré

{% else %}
{% for device in devices %}

{{ device.deviceName|default('Appareil inconnu') }}

{{ device.browser|default('N/A') }} - {{ device.os|default('N/A') }}

{% if device.isTrusted %} Vérifié {% endif %}
IP :
{{ device.lastIpAddress|default('N/A') }}
Première connexion :
{{ device.createdAt|date('d/m/Y H:i') }}
Dernière utilisation :
{{ device.lastSeenAt ? device.lastSeenAt|date('d/m/Y H:i') : 'N/A' }}
{% endfor %}
{% endif %}
{% elseif current_tab == 'http_logs' %} {# HTTP Logs Tab #}

Requêtes HTTP

{% if http_logs is empty %}

Aucune requête HTTP enregistrée

{% else %}
{% for log in http_logs %} {% endfor %}
Méthode URL Statut IP Date
{{ log.method }} {{ log.uri|u.truncate(40, '...') }} {{ log.statusCode }} {{ log.ipAddress|default('N/A') }} {{ log.createdAt|date('d/m/Y H:i') }}
{# Pagination for http_logs #} {% if http_logs.pageCount > 1 %}
{{ knp_pagination_render(http_logs) }}
{% endif %} {% endif %}
{% elseif current_tab == 'login_attempts' %} {# Login Attempts Tab #}

Tentatives de Connexion

{% if login_attempts is empty %}

Aucune tentative de connexion enregistrée

{% else %}
{% for attempt in login_attempts %} {% endfor %}
Statut Email utilisé IP Raison échec Date
{{ attempt.successful ? 'Succès' : 'Échec' }} {{ attempt.email }} {{ attempt.ipAddress|default('N/A') }} {{ attempt.failureReason|default('N/A') }} {{ attempt.attemptedAt|date('d/m/Y H:i') }}
{# Pagination for login_attempts #} {% if login_attempts.pageCount > 1 %}
{{ knp_pagination_render(login_attempts) }}
{% endif %} {% endif %}
{% endif %}
{% endblock %}