Update - Lions User Manager - Client (Quarkus PrimeFaces Freya)
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
<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"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
|
||||
|
||||
<!--
|
||||
Composant réutilisable: Attribution de Rôles (WOU/DRY Pattern)
|
||||
|
||||
Auteur: Lions User Manager
|
||||
Version: 1.0.0
|
||||
Description: Interface pour attribuer/révoquer des rôles à un utilisateur
|
||||
|
||||
Paramètres:
|
||||
- user: UserDTO (requis) - L'utilisateur concerné
|
||||
- availableRoles: List<RoleDTO> (requis) - Liste des rôles disponibles
|
||||
- userRoles: List<RoleDTO> (requis) - Liste des rôles de l'utilisateur
|
||||
- roleBean: String (optionnel) - Nom du bean pour les actions (défaut: "roleGestionBean")
|
||||
- update: String (défaut: "@form") - Composants à mettre à jour
|
||||
- showRealmRoles: Boolean (défaut: true) - Afficher les rôles Realm
|
||||
- showClientRoles: Boolean (défaut: true) - Afficher les rôles Client
|
||||
- formId: String (défaut: "roleAssignmentForm") - ID du formulaire
|
||||
|
||||
Exemples d'utilisation:
|
||||
|
||||
1. Attribution simple:
|
||||
<ui:include src="/templates/components/role-management/role-assignment.xhtml">
|
||||
<ui:param name="user" value="#{userBean.selectedUser}" />
|
||||
<ui:param name="availableRoles" value="#{roleBean.availableRoles}" />
|
||||
<ui:param name="userRoles" value="#{userBean.userRoles}" />
|
||||
<ui:param name="assignAction" value="#{roleBean.assignRole}" />
|
||||
<ui:param name="revokeAction" value="#{roleBean.revokeRole}" />
|
||||
</ui:include>
|
||||
-->
|
||||
|
||||
<c:set var="formId" value="#{empty formId ? 'roleAssignmentForm' : formId}" />
|
||||
<c:set var="update" value="#{empty update ? '@form' : update}" />
|
||||
<c:set var="showRealmRoles" value="#{empty showRealmRoles ? true : showRealmRoles}" />
|
||||
<c:set var="showClientRoles" value="#{empty showClientRoles ? true : showClientRoles}" />
|
||||
<c:set var="roleBeanName" value="#{empty roleBean ? 'roleGestionBean' : roleBean}" />
|
||||
|
||||
<h:form id="#{formId}">
|
||||
<p:panel header="Attribution de rôles - #{user.username}" styleClass="w-full">
|
||||
|
||||
<!-- Rôles actuels de l'utilisateur -->
|
||||
<h3>Rôles actuels</h3>
|
||||
<div class="flex flex-wrap gap-2 mb-4">
|
||||
<c:forEach var="userRole" items="#{userRoles}">
|
||||
<p:tag
|
||||
value="#{userRole.name}"
|
||||
severity="info"
|
||||
icon="pi pi-shield">
|
||||
<p:commandButton
|
||||
icon="pi pi-times"
|
||||
styleClass="p-button-text p-button-sm p-button-danger ml-2"
|
||||
action="#{roleGestionBean.revokeRoleFromParams}"
|
||||
update="#{update}"
|
||||
title="Révoquer le rôle">
|
||||
<f:param name="userId" value="#{user.id}" />
|
||||
<f:param name="roleName" value="#{userRole.name}" />
|
||||
</p:commandButton>
|
||||
</p:tag>
|
||||
</c:forEach>
|
||||
<c:if test="#{empty userRoles}">
|
||||
<span class="text-color-secondary">Aucun rôle attribué</span>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<p:separator />
|
||||
|
||||
<!-- Rôles disponibles -->
|
||||
<h3>Rôles disponibles</h3>
|
||||
|
||||
<!-- Rôles Realm -->
|
||||
<c:if test="#{showRealmRoles}">
|
||||
<p:panel header="Rôles Realm" styleClass="mb-3">
|
||||
<div class="flex flex-wrap gap-2">
|
||||
<c:forEach var="role" items="#{availableRoles}">
|
||||
<c:if test="#{role.typeRole == 'REALM_ROLE'}">
|
||||
<c:set var="isAssigned" value="false" />
|
||||
<c:forEach var="userRole" items="#{userRoles}">
|
||||
<c:if test="#{userRole.id == role.id}">
|
||||
<c:set var="isAssigned" value="true" />
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="#{isAssigned}">
|
||||
<p:tag
|
||||
value="#{role.name}"
|
||||
severity="success"
|
||||
icon="pi pi-check" />
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p:tag
|
||||
value="#{role.name}"
|
||||
severity="info"
|
||||
icon="pi pi-shield">
|
||||
<p:commandButton
|
||||
icon="pi pi-plus"
|
||||
styleClass="p-button-text p-button-sm p-button-success ml-2"
|
||||
action="#{roleGestionBean.assignRoleFromParams}"
|
||||
update="#{update}"
|
||||
title="Attribuer le rôle">
|
||||
<f:param name="userId" value="#{user.id}" />
|
||||
<f:param name="roleName" value="#{role.name}" />
|
||||
</p:commandButton>
|
||||
</p:tag>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</p:panel>
|
||||
</c:if>
|
||||
|
||||
<!-- Rôles Client -->
|
||||
<c:if test="#{showClientRoles}">
|
||||
<p:panel header="Rôles Client" styleClass="mb-3">
|
||||
<div class="flex flex-wrap gap-2">
|
||||
<c:forEach var="role" items="#{availableRoles}">
|
||||
<c:if test="#{role.typeRole == 'CLIENT_ROLE'}">
|
||||
<c:set var="isAssigned" value="false" />
|
||||
<c:forEach var="userRole" items="#{userRoles}">
|
||||
<c:if test="#{userRole.id == role.id}">
|
||||
<c:set var="isAssigned" value="true" />
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="#{isAssigned}">
|
||||
<p:tag
|
||||
value="#{role.name}"
|
||||
severity="success"
|
||||
icon="pi pi-check" />
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p:tag
|
||||
value="#{role.name}"
|
||||
severity="info"
|
||||
icon="pi pi-shield">
|
||||
<p:commandButton
|
||||
icon="pi pi-plus"
|
||||
styleClass="p-button-text p-button-sm p-button-success ml-2"
|
||||
action="#{roleGestionBean.assignRoleFromParams}"
|
||||
update="#{update}"
|
||||
title="Attribuer le rôle">
|
||||
<f:param name="userId" value="#{user.id}" />
|
||||
<f:param name="roleName" value="#{role.name}" />
|
||||
</p:commandButton>
|
||||
</p:tag>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</p:panel>
|
||||
</c:if>
|
||||
|
||||
<!-- Recherche de rôles -->
|
||||
<p:separator />
|
||||
<h3>Rechercher un rôle</h3>
|
||||
<div class="flex gap-2 mb-3">
|
||||
<p:inputText
|
||||
value="#{roleGestionBean.roleSearchText}"
|
||||
placeholder="Rechercher un rôle..."
|
||||
styleClass="flex-1">
|
||||
<p:ajax event="keyup"
|
||||
delay="300"
|
||||
update="@parent" />
|
||||
</p:inputText>
|
||||
</div>
|
||||
|
||||
<div id="roleSearchResults" class="flex flex-wrap gap-2">
|
||||
<!-- Résultats de recherche -->
|
||||
</div>
|
||||
|
||||
</p:panel>
|
||||
</h:form>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
<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"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||
xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions">
|
||||
|
||||
<!--
|
||||
Composant réutilisable: Carte Rôle (WOU/DRY Pattern)
|
||||
|
||||
Auteur: Lions User Manager
|
||||
Version: 1.0.0
|
||||
Description: Affiche une carte rôle avec informations principales et actions
|
||||
|
||||
Paramètres:
|
||||
- role: RoleDTO (requis) - Le rôle à afficher
|
||||
- showActions: Boolean (défaut: true) - Afficher les boutons d'action
|
||||
- showDescription: Boolean (défaut: true) - Afficher la description
|
||||
- showCompositeInfo: Boolean (défaut: true) - Afficher les infos de rôle composite
|
||||
- clickable: Boolean (défaut: true) - Rendre la carte cliquable
|
||||
- outcome: String (optionnel) - Page de destination au clic
|
||||
- styleClass: String (optionnel) - Classes CSS supplémentaires
|
||||
|
||||
Exemples d'utilisation:
|
||||
|
||||
1. Carte simple:
|
||||
<ui:include src="/templates/components/role-management/role-card.xhtml">
|
||||
<ui:param name="role" value="#{roleBean.selectedRole}" />
|
||||
</ui:include>
|
||||
|
||||
2. Carte avec actions:
|
||||
<ui:include src="/templates/components/role-management/role-card.xhtml">
|
||||
<ui:param name="role" value="#{roleBean.selectedRole}" />
|
||||
<ui:param name="showActions" value="true" />
|
||||
<ui:param name="outcome" value="/pages/user-manager/roles/details" />
|
||||
</ui:include>
|
||||
-->
|
||||
|
||||
<c:set var="showActions" value="#{empty showActions ? true : showActions}" />
|
||||
<c:set var="showDescription" value="#{empty showDescription ? true : showDescription}" />
|
||||
<c:set var="showCompositeInfo" value="#{empty showCompositeInfo ? true : showCompositeInfo}" />
|
||||
<c:set var="clickable" value="#{empty clickable ? true : clickable}" />
|
||||
|
||||
<p:card styleClass="role-card #{styleClass}" rendered="#{not empty role}">
|
||||
<f:facet name="header">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<div class="flex align-items-center gap-2">
|
||||
<i class="pi pi-shield text-2xl text-primary"></i>
|
||||
<div class="flex flex-column">
|
||||
<h3 class="m-0">#{role.name}</h3>
|
||||
<span class="text-color-secondary text-sm">
|
||||
<c:choose>
|
||||
<c:when test="#{role.typeRole == 'REALM_ROLE'}">Rôle Realm</c:when>
|
||||
<c:when test="#{role.typeRole == 'CLIENT_ROLE'}">Rôle Client</c:when>
|
||||
<c:when test="#{role.typeRole == 'COMPOSITE_ROLE'}">Rôle Composite</c:when>
|
||||
<c:otherwise>Rôle</c:otherwise>
|
||||
</c:choose>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<p:tag
|
||||
value="#{role.typeRole != null ? role.typeRole : 'ROLE'}"
|
||||
severity="#{role.typeRole == 'REALM_ROLE' ? 'success' : role.typeRole == 'CLIENT_ROLE' ? 'info' : 'warning'}" />
|
||||
</div>
|
||||
</f:facet>
|
||||
|
||||
<div class="role-card-content">
|
||||
<!-- Description -->
|
||||
<c:if test="#{showDescription and not empty role.description}">
|
||||
<p class="text-color-secondary mb-3">#{role.description}</p>
|
||||
</c:if>
|
||||
|
||||
<!-- Informations -->
|
||||
<div class="flex flex-column gap-2 mb-3">
|
||||
<c:if test="#{not empty role.realmName}">
|
||||
<div class="flex align-items-center gap-2">
|
||||
<i class="pi pi-globe text-color-secondary"></i>
|
||||
<span>Realm: <strong>#{role.realmName}</strong></span>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<c:if test="#{not empty role.clientId}">
|
||||
<div class="flex align-items-center gap-2">
|
||||
<i class="pi pi-desktop text-color-secondary"></i>
|
||||
<span>Client: <strong>#{role.clientId}</strong></span>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<!-- Rôle composite -->
|
||||
<c:if test="#{showCompositeInfo and role.composite}">
|
||||
<div class="flex align-items-center gap-2">
|
||||
<i class="pi pi-sitemap text-color-secondary"></i>
|
||||
<span class="text-warning">Rôle composite</span>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<f:facet name="footer">
|
||||
<c:if test="#{showActions}">
|
||||
<div class="flex gap-2 justify-content-end">
|
||||
<p:commandButton
|
||||
icon="pi pi-eye"
|
||||
title="Voir les détails"
|
||||
styleClass="p-button-text p-button-sm"
|
||||
outcome="#{not empty outcome ? outcome : '/pages/user-manager/roles/details'}"
|
||||
rendered="#{clickable}">
|
||||
<f:param name="roleId" value="#{role.id}" />
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton
|
||||
icon="pi pi-pencil"
|
||||
title="Modifier"
|
||||
styleClass="p-button-text p-button-sm p-button-warning"
|
||||
outcome="/pages/user-manager/roles/edit">
|
||||
<f:param name="roleId" value="#{role.id}" />
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton
|
||||
icon="pi pi-trash"
|
||||
title="Supprimer"
|
||||
styleClass="p-button-text p-button-sm p-button-danger"
|
||||
onclick="PF('confirmDeleteRoleDialog_#{fn:replace(fn:replace(role.id != null ? role.id : role.name, '-', '_'), ':', '_')}').show()" />
|
||||
</div>
|
||||
</c:if>
|
||||
</f:facet>
|
||||
</p:card>
|
||||
|
||||
<!-- Dialog de confirmation de suppression avec ID unique basé sur l'ID ou le nom du rôle -->
|
||||
<c:if test="#{not empty role.name}">
|
||||
<c:set var="dialogId" value="confirmDeleteRoleDialog_#{fn:replace(fn:replace(role.id != null ? role.id : role.name, '-', '_'), ':', '_')}" />
|
||||
<p:confirmDialog
|
||||
id="#{dialogId}"
|
||||
widgetVar="#{dialogId}"
|
||||
message="Êtes-vous sûr de vouloir supprimer le rôle #{role.name} ?"
|
||||
header="Confirmation de suppression"
|
||||
severity="warn">
|
||||
<p:commandButton
|
||||
value="Oui"
|
||||
icon="pi pi-check"
|
||||
styleClass="p-button-danger"
|
||||
action="#{roleGestionBean.deleteRealmRole(role.name)}"
|
||||
update="@form"
|
||||
oncomplete="PF('#{dialogId}').hide()" />
|
||||
<p:commandButton
|
||||
value="Non"
|
||||
icon="pi pi-times"
|
||||
styleClass="p-button-secondary"
|
||||
onclick="PF('#{dialogId}').hide()" />
|
||||
</p:confirmDialog>
|
||||
</c:if>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
<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"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
|
||||
|
||||
<p:panel header="#{mode == 'create' ? 'Nouveau Rôle' : 'Modifier Rôle'}"
|
||||
styleClass="w-full">
|
||||
|
||||
<p:panelGrid columns="2" styleClass="w-full" columnClasses="col-12 md:col-6">
|
||||
|
||||
<!-- Nom du rôle -->
|
||||
<p:outputLabel for="roleName" value="Nom du rôle *" />
|
||||
<p:inputText id="roleName"
|
||||
value="#{role.name}"
|
||||
required="true"
|
||||
readonly="#{readonly}"
|
||||
placeholder="ADMIN, USER, MODERATOR..."
|
||||
styleClass="w-full">
|
||||
<f:validateLength minimum="2" maximum="100" />
|
||||
<f:validateRegex pattern="^[A-Z_]+$" />
|
||||
</p:inputText>
|
||||
|
||||
<!-- Description -->
|
||||
<p:outputLabel for="description" value="Description" />
|
||||
<p:inputTextarea id="description"
|
||||
value="#{role.description}"
|
||||
readonly="#{readonly}"
|
||||
placeholder="Description du rôle..."
|
||||
rows="3"
|
||||
styleClass="w-full" />
|
||||
|
||||
<!-- Type de rôle -->
|
||||
<p:outputLabel for="typeRole" value="Type de rôle *" />
|
||||
<p:selectOneMenu id="typeRole"
|
||||
value="#{role.typeRole}"
|
||||
required="true"
|
||||
readonly="#{readonly or mode == 'edit'}"
|
||||
styleClass="w-full">
|
||||
<f:selectItem itemLabel="Sélectionner..." itemValue="" />
|
||||
<f:selectItem itemLabel="Rôle Realm" itemValue="REALM_ROLE" />
|
||||
<f:selectItem itemLabel="Rôle Client" itemValue="CLIENT_ROLE" />
|
||||
<f:selectItem itemLabel="Rôle Composite" itemValue="COMPOSITE_ROLE" />
|
||||
</p:selectOneMenu>
|
||||
|
||||
<!-- Realm (si affiché) -->
|
||||
<c:if test="#{showRealmSelector}">
|
||||
<p:outputLabel for="realmName" value="Realm *" />
|
||||
<p:selectOneMenu id="realmName"
|
||||
value="#{role.realmName}"
|
||||
required="#{showRealmSelector}"
|
||||
readonly="#{readonly}"
|
||||
styleClass="w-full">
|
||||
<f:selectItem itemLabel="Sélectionner..." itemValue="" />
|
||||
<f:selectItems value="#{roleBean.availableRealms}" />
|
||||
</p:selectOneMenu>
|
||||
</c:if>
|
||||
|
||||
<!-- Client (si affiché) -->
|
||||
<c:if test="#{showClientSelector}">
|
||||
<p:outputLabel for="clientId" value="Client *" />
|
||||
<p:selectOneMenu id="clientId"
|
||||
value="#{role.clientId}"
|
||||
required="#{showClientSelector}"
|
||||
readonly="#{readonly}"
|
||||
styleClass="w-full">
|
||||
<f:selectItem itemLabel="Sélectionner..." itemValue="" />
|
||||
<f:selectItems value="#{roleBean.availableClients}" />
|
||||
</p:selectOneMenu>
|
||||
</c:if>
|
||||
|
||||
<!-- Rôle composite -->
|
||||
<c:if test="#{showCompositeOptions}">
|
||||
<p:outputLabel for="composite" value="Rôle composite" />
|
||||
<p:selectBooleanCheckbox id="composite"
|
||||
value="#{role.composite}"
|
||||
readonly="#{readonly}" />
|
||||
</c:if>
|
||||
|
||||
</p:panelGrid>
|
||||
|
||||
<!-- Boutons d'action -->
|
||||
<f:facet name="footer">
|
||||
<div class="flex gap-2 justify-content-end">
|
||||
<c:if test="#{not readonly}">
|
||||
<c:choose>
|
||||
<!-- Si hasSubmitAction est explicitement défini à true, utiliser action -->
|
||||
<c:when test="#{hasSubmitAction == true}">
|
||||
<p:commandButton
|
||||
value="#{mode == 'create' ? 'Créer' : 'Modifier'}"
|
||||
icon="pi pi-check"
|
||||
styleClass="p-button-success"
|
||||
action="#{submitAction}"
|
||||
update="#{not empty update ? update : '@form'}"
|
||||
process="@form" />
|
||||
</c:when>
|
||||
<!-- Si submitOutcome est fourni, utiliser outcome -->
|
||||
<c:when test="#{not empty submitOutcome}">
|
||||
<p:commandButton
|
||||
value="#{mode == 'create' ? 'Créer' : 'Modifier'}"
|
||||
icon="pi pi-check"
|
||||
styleClass="p-button-success"
|
||||
outcome="#{submitOutcome}"
|
||||
update="#{not empty update ? update : '@form'}"
|
||||
process="@form" />
|
||||
</c:when>
|
||||
<!-- Sinon, essayer d'utiliser submitAction si fourni -->
|
||||
<c:otherwise>
|
||||
<p:commandButton
|
||||
value="#{mode == 'create' ? 'Créer' : 'Modifier'}"
|
||||
icon="pi pi-check"
|
||||
styleClass="p-button-success"
|
||||
action="#{submitAction}"
|
||||
update="#{not empty update ? update : '@form'}"
|
||||
process="@form" />
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
<p:commandButton
|
||||
value="Annuler"
|
||||
icon="pi pi-times"
|
||||
styleClass="p-button-secondary"
|
||||
onclick="PF('createRealmRoleDialog').hide(); PF('createClientRoleDialog').hide();"
|
||||
immediate="true" />
|
||||
</div>
|
||||
</f:facet>
|
||||
</p:panel>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
<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"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
|
||||
|
||||
<!--
|
||||
Composant réutilisable: Formulaire Rôle (WOU/DRY Pattern)
|
||||
|
||||
Auteur: Lions User Manager
|
||||
Version: 1.0.0
|
||||
Description: Formulaire complet pour créer/modifier un rôle
|
||||
|
||||
Paramètres:
|
||||
- role: RoleDTO (requis) - Le rôle à éditer (peut être null pour création)
|
||||
- formId: String (défaut: "roleForm") - ID du formulaire
|
||||
- mode: String (défaut: "create") - Mode: "create" ou "edit"
|
||||
- showRealmSelector: Boolean (défaut: true) - Afficher le sélecteur de realm
|
||||
- showClientSelector: Boolean (défaut: false) - Afficher le sélecteur de client
|
||||
- showCompositeOptions: Boolean (défaut: true) - Afficher les options composite
|
||||
- readonly: Boolean (défaut: false) - Mode lecture seule
|
||||
- submitAction: String (optionnel) - Action à exécuter à la soumission
|
||||
- submitOutcome: String (optionnel) - Page de redirection après soumission
|
||||
- update: String (optionnel) - Composants à mettre à jour après soumission
|
||||
|
||||
Exemples d'utilisation:
|
||||
|
||||
1. Formulaire de création rôle Realm:
|
||||
<ui:include src="/templates/components/role-management/role-form.xhtml">
|
||||
<ui:param name="role" value="#{roleBean.newRole}" />
|
||||
<ui:param name="mode" value="create" />
|
||||
<ui:param name="showClientSelector" value="false" />
|
||||
<ui:param name="submitAction" value="#{roleBean.createRole}" />
|
||||
</ui:include>
|
||||
|
||||
2. Formulaire de création rôle Client:
|
||||
<ui:include src="/templates/components/role-management/role-form.xhtml">
|
||||
<ui:param name="role" value="#{roleBean.newRole}" />
|
||||
<ui:param name="mode" value="create" />
|
||||
<ui:param name="showClientSelector" value="true" />
|
||||
<ui:param name="submitAction" value="#{roleBean.createClientRole}" />
|
||||
</ui:include>
|
||||
-->
|
||||
|
||||
<c:set var="formId" value="#{empty formId ? 'roleForm' : formId}" />
|
||||
<c:set var="mode" value="#{empty mode ? 'create' : mode}" />
|
||||
<c:set var="showRealmSelector" value="#{empty showRealmSelector ? true : showRealmSelector}" />
|
||||
<c:set var="showClientSelector" value="#{empty showClientSelector ? false : showClientSelector}" />
|
||||
<c:set var="showCompositeOptions" value="#{empty showCompositeOptions ? true : showCompositeOptions}" />
|
||||
<c:set var="readonly" value="#{empty readonly ? false : readonly}" />
|
||||
<c:set var="useParentForm" value="#{empty useParentForm ? false : useParentForm}" />
|
||||
|
||||
<c:choose>
|
||||
<c:when test="#{useParentForm}">
|
||||
<!-- Utiliser le formulaire parent (pas de h:form ici) -->
|
||||
<ui:include src="/templates/components/role-management/role-form-content.xhtml">
|
||||
<ui:param name="role" value="#{role}" />
|
||||
<ui:param name="mode" value="#{mode}" />
|
||||
<ui:param name="showRealmSelector" value="#{showRealmSelector}" />
|
||||
<ui:param name="showClientSelector" value="#{showClientSelector}" />
|
||||
<ui:param name="showCompositeOptions" value="#{showCompositeOptions}" />
|
||||
<ui:param name="readonly" value="#{readonly}" />
|
||||
<ui:param name="hasSubmitAction" value="#{hasSubmitAction}" />
|
||||
<ui:param name="submitAction" value="#{submitAction}" />
|
||||
<ui:param name="submitOutcome" value="#{submitOutcome}" />
|
||||
<ui:param name="update" value="#{update}" />
|
||||
<ui:param name="cancelOutcome" value="#{cancelOutcome}" />
|
||||
</ui:include>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<!-- Créer son propre formulaire -->
|
||||
<h:form id="#{formId}">
|
||||
<ui:include src="/templates/components/role-management/role-form-content.xhtml">
|
||||
<ui:param name="role" value="#{role}" />
|
||||
<ui:param name="mode" value="#{mode}" />
|
||||
<ui:param name="showRealmSelector" value="#{showRealmSelector}" />
|
||||
<ui:param name="showClientSelector" value="#{showClientSelector}" />
|
||||
<ui:param name="showCompositeOptions" value="#{showCompositeOptions}" />
|
||||
<ui:param name="readonly" value="#{readonly}" />
|
||||
<ui:param name="hasSubmitAction" value="#{hasSubmitAction}" />
|
||||
<ui:param name="submitAction" value="#{submitAction}" />
|
||||
<ui:param name="submitOutcome" value="#{submitOutcome}" />
|
||||
<ui:param name="update" value="#{update}" />
|
||||
<ui:param name="cancelOutcome" value="#{cancelOutcome}" />
|
||||
</ui:include>
|
||||
</h:form>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
Reference in New Issue
Block a user