Avances en la pantalla de registro de usuarios nuevos (pacientes).
* Actualización de script para crear tablas (Todo a minusculas, no case sensitive) * Script de datos de pruebas de especialides médicas. * Nuevo bean para registro de usuarios (Quidato de filtro de seguridad de login, acceso sin login). * Actualización de entidades JPA con campos Identity. * Enumerado para gestionar tipos de usuarios (Paciente, Medico Familia, Especialista y Administrador) * Clase común para realizar validaciones (función para validar nif).
This commit is contained in:
@@ -7,11 +7,15 @@
|
||||
<from-outcome>home</from-outcome>
|
||||
<to-view-id>/home.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>RegisterUser</from-outcome>
|
||||
<to-view-id>/profile/RegisterUser.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>AddPatient</from-outcome>
|
||||
<to-view-id>/profile/AddPatient.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>AddFamilyDoctor</from-outcome>
|
||||
<to-view-id>/profile/AddFamilyDoctor.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
$('#loginLink').fadeOut();
|
||||
}
|
||||
}
|
||||
</h:outputScript>
|
||||
</h:outputScript>
|
||||
<h:body>
|
||||
<div id="layout">
|
||||
<div id="top" class="top">
|
||||
@@ -68,11 +68,12 @@
|
||||
<f:facet name="options">
|
||||
<ui:fragment rendered="#{home.logedIn}">
|
||||
<h:outputText value="hola, #{home.userName} " />
|
||||
<p:commandButton type="button" value="Logout" icon="pi pi-user" action="#{loginView.logout}" />
|
||||
<p:commandButton value="Logout" update="messages" icon="pi pi-user" action="#{loginView.logout}" />
|
||||
</ui:fragment>
|
||||
<ui:fragment rendered="#{not home.logedIn}">
|
||||
<h:outputText value="hola, invitado " />
|
||||
<p:commandButton type="button" value="login" icon="pi pi-user" onclick="PF('dlgLogin').show();" title="login" />
|
||||
<p:commandButton value="login" icon="pi pi-user" onclick="PF('dlgLogin').show();" title="login" />
|
||||
<p:button value="Registrarse" icon="pi pi-user" outcome="RegisterUser" />
|
||||
|
||||
<p:dialog header="Acceder al sistema" widgetVar="dlgLogin" resizable="false">
|
||||
<h:panelGrid columns="2" cellpadding="5">
|
||||
@@ -83,7 +84,7 @@
|
||||
<p:password id="password" value="#{loginView.password}" required="true" label="password" />
|
||||
|
||||
<f:facet name="footer">
|
||||
<p:commandButton value="Login" update="messages" action="#{loginView.login}" oncomplete="handleLoginRequest(xhr, status, args)" />
|
||||
<p:commandButton value="Login" update="messages" icon="pi pi-user" action="#{loginView.login}" oncomplete="handleLoginRequest(xhr, status, args)" />
|
||||
<i class="pi pi-spin pi-spinner" style="font-size: 3em"></i>
|
||||
</f:facet>
|
||||
</h:panelGrid>
|
||||
|
||||
@@ -1,24 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
|
||||
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:p="http://primefaces.org/ui">
|
||||
|
||||
<ui:composition template="../header.xhtml">
|
||||
<h:outputScript>
|
||||
function handleActionMessage(xhr, status, args) {
|
||||
if(args.validationFailed || !args.loggedIn) {
|
||||
PF('dlgLogin').jq.effect("shake", {times:5}, 100);
|
||||
}
|
||||
else {
|
||||
PF('dlgLogin').hide();
|
||||
$('#loginLink').fadeOut();
|
||||
}
|
||||
}
|
||||
</h:outputScript>
|
||||
<ui:composition template="../header.xhtml">
|
||||
<ui:define name="content">
|
||||
<h:form id="testForm">
|
||||
<div align="center">
|
||||
<h1>AddPaciente Page</h1>
|
||||
<hr/>
|
||||
<div>AddPaciente:</div>
|
||||
<div>
|
||||
AddPaciente content
|
||||
</div>
|
||||
</div>
|
||||
<p align="center">
|
||||
<h:button value="Volver al inicio" outcome="home" />
|
||||
</p>
|
||||
</h:form>
|
||||
<h:form>
|
||||
<p:messages id="mesgs" showDetail="true" closable="true">
|
||||
<p:autoUpdate />
|
||||
</p:messages>
|
||||
|
||||
<p:panel id="AltaPaciente" header="Registrarse en el sistema como paciente">
|
||||
<h:panelGrid columns="3">
|
||||
<p:outputLabel value="NIF:" for="nif" />
|
||||
<p:inputText id="nif" required="true" requiredMessage="Por favor, indque su NIF" />
|
||||
<p:message for="nif" />
|
||||
|
||||
<p:outputLabel value="Nombre:" for="name" />
|
||||
<p:inputText id="name" required="true" requiredMessage="Por favor, indique su nombre" />
|
||||
<p:message for="name" />
|
||||
|
||||
<p:outputLabel value="Apellidos:" for="surname" />
|
||||
<p:inputText id="surname" required="true" requiredMessage="Por favor, indique sus apellidos" />
|
||||
<p:message for="surname" />
|
||||
|
||||
<p:outputLabel value="Correo electrónico:" for="email"/>
|
||||
<p:inputText id="email" required="true" requiredMessage="Por favor, especifique su correo electrónico" />
|
||||
<p:message for="email" />
|
||||
|
||||
<p:outputLabel value="Contraseña" for="password" />
|
||||
<p:inputMask id="password" mask="*" required="true" requiredMessage="Por faovr, especifique una contraseña" maxlength="50" />
|
||||
<p:message for="password" />
|
||||
|
||||
<p:outputLabel value="Repita su contraseña:" for="passwordRepeat" />
|
||||
<p:inputMask id="passwordRepeat" mask="*" />
|
||||
<p:message for="passwordRepeat" />
|
||||
</h:panelGrid>
|
||||
<h:panelGroup>
|
||||
<h:panelGrid columns="3" >
|
||||
<p:commandButton validateClient="true" value="Registrarse" update="mesgs" action="#{addPatientMBean.save}" icon="pi pi-check" />
|
||||
<p:commandButton value="Volver" outcome="home" />
|
||||
</h:panelGrid>
|
||||
</h:panelGroup>
|
||||
</p:panel>
|
||||
</h:form>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
</ui:composition>
|
||||
</html>
|
||||
|
||||
89
1.sources/MyHealth/docroot/profile/RegisterUser.xhtml
Normal file
89
1.sources/MyHealth/docroot/profile/RegisterUser.xhtml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:p="http://primefaces.org/ui">
|
||||
|
||||
<ui:composition template="../header.xhtml">
|
||||
<h:outputScript>
|
||||
function handleRequest(xhr, status, args) {
|
||||
if(args.specs) {
|
||||
PF('caps').hide();
|
||||
$('#caps').fadeOut();
|
||||
PF('especialidades').show()
|
||||
$('#especialidades').fadeIn();
|
||||
}
|
||||
else if (args.caps) {
|
||||
PF('especialidades').hide();
|
||||
$('#especialidades').fadeOut();
|
||||
PF('caps').show()
|
||||
$('#caps').fadeIn();
|
||||
}
|
||||
}
|
||||
</h:outputScript>
|
||||
<ui:define name="content">
|
||||
<h:form>
|
||||
<p:messages id="mesgs" showDetail="true" closable="true" autoupdate="true" />
|
||||
|
||||
<p:panel id="tipoUsuario" header="Especifique el tipo de usuario que desea registrarse">
|
||||
<h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">
|
||||
<p:selectOneRadio id="usertype" value="#{registerUser.userType}" unselectable="true" required="true" requiredMessage="Debe especificar un tipo de usuario">
|
||||
<p:ajax listener="#{registerUser.onUserTypeChange}" update="medicalSpecialty" oncomplete="handleRequest(xhr, status, args)" />
|
||||
<f:selectItems value="#{registerUser.userTypes}" />
|
||||
</p:selectOneRadio>
|
||||
</h:panelGrid>
|
||||
</p:panel>
|
||||
<p:panel id="RegisterUser" header="Registrarse en el sistema como paciente">
|
||||
<h:panelGrid columns="3">
|
||||
<p:outputLabel value="NIF:" for="nif" />
|
||||
<p:inputText id="nif" value="#{registerUser.nif}" required="true" requiredMessage="Por favor, indque su NIF" />
|
||||
<p:message for="nif" display="text" />
|
||||
|
||||
<p:outputLabel value="Especialidad médica:" for="medicalSpecialty" />
|
||||
<p:selectOneMenu id="medicalSpecialty" value="#{registerUser.medicalSpecialty}" style="width:350px">
|
||||
<f:selectItem itemLabel="Seleccione una especialidad médica..." itemValue="" noSelectionOption="true" />
|
||||
<f:selectItems value="#{registerUser.medicalSpecialties}" var="c" itemDescription="#{c.description}" itemValue="#{c.id}" />
|
||||
</p:selectOneMenu>
|
||||
<p:message for="medicalSpecialty" />
|
||||
|
||||
<p:outputLabel value="Centro:" for="primaryHealthCareCenter" />
|
||||
<p:selectOneMenu id="primaryHealthCareCenter" value="#{registerUser.medicalSpecialty}" style="width:350px">
|
||||
<f:selectItem itemLabel="Seleccione una centro..." itemValue="" noSelectionOption="true" />
|
||||
<f:selectItems value="#{registerUser.medicalSpecialties}" var="c" itemDescription="#{c.description}" itemValue="#{c.id}" />
|
||||
</p:selectOneMenu>
|
||||
<p:message for="primaryHealthCareCenter" />
|
||||
|
||||
|
||||
<p:outputLabel value="Nombre:" for="name" />
|
||||
<p:inputText id="name" value="#{registerUser.name}" required="true" requiredMessage="Por favor, indique su nombre" />
|
||||
<p:message for="name" />
|
||||
|
||||
<p:outputLabel value="Apellidos:" for="surname" />
|
||||
<p:inputText id="surname" value="#{registerUser.surname}" required="true" requiredMessage="Por favor, indique sus apellidos" />
|
||||
<p:message for="surname" />
|
||||
|
||||
<p:outputLabel value="Correo electrónico:" for="email" />
|
||||
<p:inputText id="email" value="#{registerUser.email}" required="true" requiredMessage="Por favor, especifique su correo electrónico" />
|
||||
<p:message for="email" />
|
||||
|
||||
<p:outputLabel value="Contraseña" for="password" />
|
||||
<p:password id="password" value="#{registerUser.password}" match="passwordRepeat" required="true" requiredMessage="Por favor, especifique una contraseña" maxlength="50"
|
||||
feedback="true" promptLabel="Especifique una contraseña segura" weakLabel="La contraseña es débil" goodLabel="La contraseña es buena" strongLabel="La contraseña es segura"
|
||||
validatorMessage="La contraseña y su verificación deben ser iguales" />
|
||||
<p:message for="password" />
|
||||
|
||||
<p:outputLabel value="Verificación de contraseña:" for="passwordRepeat" />
|
||||
<p:password id="passwordRepeat" value="#{registerUser.password}" required="true" requiredMessage="Por favor, escriba la verificación de su contraseña" maxlength="50" />
|
||||
<p:message for="passwordRepeat" />
|
||||
</h:panelGrid>
|
||||
<h:panelGroup>
|
||||
<h:panelGrid columns="3">
|
||||
<p:commandButton validateClient="true" value="Registrarse" update="mesgs" action="#{registerUser.addNewUser}" icon="pi pi-check" />
|
||||
<p:commandButton value="Volver" outcome="home" />
|
||||
</h:panelGrid>
|
||||
</h:panelGroup>
|
||||
</p:panel>
|
||||
</h:form>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
</html>
|
||||
Reference in New Issue
Block a user