Configure Maven repository for unionflow-server-api dependency
This commit is contained in:
241
target/classes/META-INF/resources/pages/secure/profile.xhtml
Normal file
241
target/classes/META-INF/resources/pages/secure/profile.xhtml
Normal file
@@ -0,0 +1,241 @@
|
||||
<!DOCTYPE html>
|
||||
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
||||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||
xmlns:p="http://primefaces.org/ui"
|
||||
template="/templates/main-template.xhtml">
|
||||
|
||||
<ui:define name="title">Mon Profil - UnionFlow</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<!-- En-tête du profil -->
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<div class="flex align-items-center">
|
||||
<div class="bg-primary text-white border-round flex align-items-center justify-content-center mr-4"
|
||||
style="width: 5rem; height: 5rem; font-size: 2rem; font-weight: bold;">
|
||||
#{userSession.currentUser.initiales}
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="mb-2">#{userSession.currentUser.nomComplet}</h2>
|
||||
<div class="flex align-items-center gap-2 mb-2">
|
||||
<p:tag value="#{userSession.typeCompte}"
|
||||
severity="#{userSession.isSuperAdmin() ? 'danger' : (userSession.isAdmin() ? 'warning' : 'info')}" />
|
||||
<span class="text-600">•</span>
|
||||
<span class="text-600">#{userSession.currentUser.email}</span>
|
||||
</div>
|
||||
<div class="text-600">
|
||||
<i class="pi pi-building mr-1"></i>
|
||||
#{userSession.entite.description}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p:commandButton value="Modifier le profil"
|
||||
icon="pi pi-pencil"
|
||||
styleClass="ui-button-outlined"
|
||||
onclick="PF('dlgEditProfile').show();" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Informations détaillées -->
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>📋 Informations Personnelles</h5>
|
||||
<div class="field-group">
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Nom complet</label>
|
||||
<div class="text-600">#{userSession.currentUser.nomComplet}</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Nom d'utilisateur</label>
|
||||
<div class="text-600">#{userSession.currentUser.username}</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Adresse email</label>
|
||||
<div class="text-600">#{userSession.currentUser.email}</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Type de compte</label>
|
||||
<div>
|
||||
<p:tag value="#{userSession.typeCompte}"
|
||||
severity="#{userSession.isSuperAdmin() ? 'danger' : (userSession.isAdmin() ? 'warning' : 'info')}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>🏢 Informations de l'Entité</h5>
|
||||
<div class="field-group">
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Nom de l'entité</label>
|
||||
<div class="text-600">#{userSession.entite.nom}</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Type d'entité</label>
|
||||
<div class="text-600">#{userSession.entite.type}</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Localisation</label>
|
||||
<div class="text-600">
|
||||
<i class="pi pi-map-marker mr-1"></i>
|
||||
#{userSession.entite.ville}, #{userSession.entite.pays}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rôles et permissions -->
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>🔐 Rôles et Permissions</h5>
|
||||
<div class="field-group">
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Rôles assignés</label>
|
||||
<div class="flex gap-2 flex-wrap">
|
||||
<ui:repeat value="#{userSession.roles}" var="role">
|
||||
<p:tag value="#{role}"
|
||||
severity="#{role == 'SUPER_ADMIN' ? 'danger' : (role == 'ADMIN_ENTITE' ? 'warning' : 'info')}" />
|
||||
</ui:repeat>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field" rendered="#{userSession.permissions != null}">
|
||||
<label class="font-medium text-900">Permissions spéciales</label>
|
||||
<div class="flex gap-1 flex-wrap">
|
||||
<ui:repeat value="#{userSession.permissions}" var="permission">
|
||||
<p:tag value="#{permission}" severity="secondary" />
|
||||
</ui:repeat>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>🔒 Sécurité de la Session</h5>
|
||||
<div class="field-group">
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Statut de connexion</label>
|
||||
<div>
|
||||
<p:tag value="Connecté" severity="success" />
|
||||
<span class="text-600 ml-2">Session active</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Temps restant</label>
|
||||
<div class="text-600">
|
||||
<i class="pi pi-clock mr-1"></i>
|
||||
#{jwtTokenManager.timeUntilExpiration / 60} minutes
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="font-medium text-900">Actions sécurisées</label>
|
||||
<div class="flex gap-2">
|
||||
<p:commandButton value="Changer mot de passe"
|
||||
icon="pi pi-key"
|
||||
styleClass="ui-button-outlined ui-button-warning ui-button-sm"
|
||||
onclick="PF('dlgChangePassword').show();" />
|
||||
<p:commandButton value="Déconnecter autres sessions"
|
||||
icon="pi pi-sign-out"
|
||||
styleClass="ui-button-outlined ui-button-danger ui-button-sm" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Dialog pour modifier le profil -->
|
||||
<p:dialog header="Modifier le Profil" widgetVar="dlgEditProfile" modal="true" width="500">
|
||||
<h:form id="formEditProfile">
|
||||
<div class="ui-fluid">
|
||||
<div class="field">
|
||||
<p:outputLabel for="editNom" value="Nom" />
|
||||
<p:inputText id="editNom" value="#{userSession.currentUser.nom}" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="editPrenom" value="Prénom" />
|
||||
<p:inputText id="editPrenom" value="#{userSession.currentUser.prenom}" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="editEmail" value="Email" />
|
||||
<p:inputText id="editEmail" value="#{userSession.currentUser.email}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-2 mt-3">
|
||||
<p:commandButton value="Enregistrer"
|
||||
icon="pi pi-check"
|
||||
styleClass="ui-button-success"
|
||||
update="@form"
|
||||
oncomplete="if(!args.validationFailed) PF('dlgEditProfile').hide();" />
|
||||
<p:commandButton value="Annuler"
|
||||
icon="pi pi-times"
|
||||
styleClass="ui-button-secondary"
|
||||
onclick="PF('dlgEditProfile').hide();"
|
||||
type="button" />
|
||||
</div>
|
||||
</h:form>
|
||||
</p:dialog>
|
||||
|
||||
<!-- Dialog pour changer le mot de passe -->
|
||||
<p:dialog header="Changer le Mot de Passe" widgetVar="dlgChangePassword" modal="true" width="400">
|
||||
<h:form id="formChangePassword">
|
||||
<div class="ui-fluid">
|
||||
<div class="field">
|
||||
<p:outputLabel for="currentPassword" value="Mot de passe actuel" />
|
||||
<p:password id="currentPassword" required="true" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="newPassword" value="Nouveau mot de passe" />
|
||||
<p:password id="newPassword" required="true" toggleMask="true" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="confirmPassword" value="Confirmer le mot de passe" />
|
||||
<p:password id="confirmPassword" required="true" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-2 mt-3">
|
||||
<p:commandButton value="Changer"
|
||||
icon="pi pi-check"
|
||||
styleClass="ui-button-warning"
|
||||
update="@form"
|
||||
oncomplete="if(!args.validationFailed) PF('dlgChangePassword').hide();" />
|
||||
<p:commandButton value="Annuler"
|
||||
icon="pi pi-times"
|
||||
styleClass="ui-button-secondary"
|
||||
onclick="PF('dlgChangePassword').hide();"
|
||||
type="button" />
|
||||
</div>
|
||||
</h:form>
|
||||
</p:dialog>
|
||||
</ui:define>
|
||||
|
||||
</ui:composition>
|
||||
Reference in New Issue
Block a user