Menu dinámico en función de si el usuario está logeado o no.
This commit is contained in:
@@ -51,12 +51,16 @@
|
||||
<from-outcome>UpdatePatient</from-outcome>
|
||||
<to-view-id>/profile/UpdatePatient.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>UpdateProfile</from-outcome>
|
||||
<to-view-id>/profile/UpdateProfile.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>changecap</from-outcome>
|
||||
<to-view-id>/profile/ChangePrimaryHealthCareCenter.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>MedicalTests</from-outcome>
|
||||
<from-outcome>AddMedicalTest</from-outcome>
|
||||
<to-view-id>/medicaltest/MedicalTests.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
@@ -64,8 +68,44 @@
|
||||
<to-view-id>/visit/VisitView.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>ManageSpecialties</from-outcome>
|
||||
<from-outcome>ManageCAPs</from-outcome>
|
||||
<to-view-id>/systemAdmin/ManageSpecialties.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>ManageMedicalSpecialties</from-outcome>
|
||||
<to-view-id>/systemAdmin/ManageSpecialties.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>AddUserAdmin</from-outcome>
|
||||
<to-view-id>/systemAdmin/ManageSpecialties.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>ScheduleVisit</from-outcome>
|
||||
<to-view-id>/visit/VisitView.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>QueryVisit</from-outcome>
|
||||
<to-view-id>/visit/VisitView.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>MedicaltestManage</from-outcome>
|
||||
<to-view-id>/mdicaltest/MedicalTests.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>QueryDoctorBySpecialty</from-outcome>
|
||||
<to-view-id>/mdicaltest/MedicalTests.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>ListDoctorsbySpecialty</from-outcome>
|
||||
<to-view-id>/mdicaltest/MedicalTests.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>AskQuestion</from-outcome>
|
||||
<to-view-id>/mdicaltest/MedicalTests.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
<navigation-case>
|
||||
<from-outcome>AnswerQuestion</from-outcome>
|
||||
<to-view-id>/mdicaltest/MedicalTests.xhtml</to-view-id>
|
||||
</navigation-case>
|
||||
</navigation-rule>
|
||||
</faces-config>
|
||||
|
||||
@@ -12,14 +12,19 @@
|
||||
</h:head>
|
||||
<h:outputScript>
|
||||
function handleLoginRequest(xhr, status, args) {
|
||||
$('#loginSpin').slideUp();
|
||||
|
||||
if(args.validationFailed || !args.loggedIn) {
|
||||
PF('dlgLogin').jq.effect("shake", {times:5}, 100);
|
||||
}
|
||||
else {
|
||||
PF('dlgLogin').hide();
|
||||
$('#loginLink').fadeOut();
|
||||
}
|
||||
}
|
||||
|
||||
function showSpinner() {
|
||||
$('#loginSpin').slideDown();
|
||||
}
|
||||
</h:outputScript>
|
||||
<h:body>
|
||||
<div id="layout">
|
||||
@@ -29,10 +34,11 @@
|
||||
</div>
|
||||
<hr />
|
||||
<div id="menuDiv">
|
||||
<h:form>
|
||||
<h:form id="frmMenu">
|
||||
<p:growl id="messages" sticky="true" showDetail="true" life="3000" />
|
||||
|
||||
<p:menubar>
|
||||
|
||||
<p:menubar model="#{menuView.model}">
|
||||
<p:menuitem label="Home" icon="pi pi-home" outcome="home" />
|
||||
<p:submenu label="Administración del sistema" icon="pi pi-briefcase">
|
||||
<p:menuitem value="Gestionar especialidades" icon="pi pi-briefcase" action="#{menuView.goManageSpecialties}" />
|
||||
@@ -81,14 +87,14 @@
|
||||
<p:dialog header="Acceder al sistema" widgetVar="dlgLogin" resizable="false">
|
||||
<h:panelGrid columns="2" cellpadding="5">
|
||||
<h:outputLabel for="username" value="Username:" />
|
||||
<p:inputText id="username" value="#{loginView.username}" required="true" label="username" />
|
||||
<p:inputText id="username" value="#{loginView.username}" />
|
||||
|
||||
<h:outputLabel for="password" value="Password:" />
|
||||
<p:password id="password" value="#{loginView.password}" required="true" label="password" />
|
||||
<p:password id="password" value="#{loginView.password}" />
|
||||
|
||||
<f:facet name="footer">
|
||||
<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 hide" style="font-size: 3em"></i>
|
||||
<p:commandButton value="Login" update="messages" icon="pi pi-user" action="#{loginView.login}" onstart="showSpinner()" oncomplete="handleLoginRequest(xhr, status, args)" />
|
||||
<i id="loginSpin" class="pi pi-spin pi-spinner hide" style="font-size: 3em"></i>
|
||||
</f:facet>
|
||||
</h:panelGrid>
|
||||
</p:dialog>
|
||||
|
||||
@@ -43,20 +43,6 @@ public class PrimaryHealthCareCenterTO implements Serializable {
|
||||
this.location = description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
return (other instanceof PrimaryHealthCareCenterTO) && (name != null)
|
||||
? name.equals(((PrimaryHealthCareCenterTO) other).getName())
|
||||
: (other == this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (name != null)
|
||||
? (this.getClass().hashCode() + name.hashCode())
|
||||
: super.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("%s[name=%s]", getClass().getSimpleName(), getName());
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package managedbean.common;
|
||||
|
||||
import java.awt.MenuItem;
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
@@ -10,49 +11,115 @@ import javax.inject.Named;
|
||||
|
||||
import org.primefaces.model.menu.DefaultMenuItem;
|
||||
import org.primefaces.model.menu.DefaultMenuModel;
|
||||
import org.primefaces.model.menu.DefaultSeparator;
|
||||
import org.primefaces.model.menu.DefaultSubMenu;
|
||||
import org.primefaces.model.menu.MenuModel;
|
||||
import org.primefaces.model.menu.Submenu;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Marcos García Núñez (mgarcianun@uoc.edu)
|
||||
*
|
||||
*/
|
||||
@Named("menuView")
|
||||
@RequestScoped
|
||||
public class MenuMBean implements Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
private MenuModel model;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
model = new DefaultMenuModel();
|
||||
DefaultMenuItem item;
|
||||
DefaultSubMenu subMenu;
|
||||
|
||||
// First submenu
|
||||
DefaultSubMenu firstSubmenu = new DefaultSubMenu("Dynamic submenu");
|
||||
DefaultMenuItem item = new DefaultMenuItem("External", "", "www.google.com");
|
||||
// item.setUrl("www.google.com");
|
||||
firstSubmenu.getElements().add(item);
|
||||
model.addElement(createMenuItem("Home", "pi pi-home", "home", null));
|
||||
|
||||
model.getElements().add(firstSubmenu);
|
||||
if (SessionUtils.isLogedIn() == true) {
|
||||
|
||||
// Second submenu
|
||||
DefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions");
|
||||
// Administracion Sistema
|
||||
// TODO: mostrar este menú solo si el usuario es administrador
|
||||
if (1 == 1) {
|
||||
subMenu = new DefaultSubMenu("Administración del sistema", "pi pi-settings");
|
||||
subMenu.addElement(createMenuItem("Esp. médicas", "pi pi-calendar", "ManageMedicalSpecialties", null));
|
||||
subMenu.addElement(createMenuItem("Centros At. Primaria", "pi pi-briefcase", "ManageCAPs", null));
|
||||
subMenu.addElement(new DefaultSeparator());
|
||||
subMenu.addElement(createMenuItem("Añadir usuario Admin", "pi pi-calendar", "AddUserAdmin", null));
|
||||
model.addElement(subMenu);
|
||||
}
|
||||
|
||||
item = new DefaultMenuItem("Save", "pi pi-save");
|
||||
item.setCommand("#{menuView.save}");
|
||||
item.setUpdate("messages");
|
||||
secondSubmenu.getElements().add(item);
|
||||
// Visitas
|
||||
// TODO: mostrar este menú solo si el usuario es paciente
|
||||
if (1 == 1) {
|
||||
subMenu = new DefaultSubMenu("Visitas", "pi pi-calendar");
|
||||
subMenu.addElement(createMenuItem("Agendar", "pi pi-calendar", "ScheduleVisit", null));
|
||||
subMenu.addElement(createMenuItem("Consultar", "pi pi-briefcase", "QueryVisit", null));
|
||||
model.addElement(subMenu);
|
||||
}
|
||||
|
||||
item = new DefaultMenuItem("Delete", "pi pi-times");
|
||||
item.setCommand("#{menuView.delete}");
|
||||
item.setAjax(false);
|
||||
secondSubmenu.getElements().add(item);
|
||||
// Pruebas médicas
|
||||
// TODO: mostrar este menú solo si el usuario es medico // etc...
|
||||
if (1 == 1) {
|
||||
|
||||
item = new DefaultMenuItem("Redirect", "pi pi-search");
|
||||
item.setCommand("#{menuView.redirect}");
|
||||
secondSubmenu.getElements().add(item);
|
||||
subMenu = new DefaultSubMenu("Pruebas Medicas", "pi pi-clone");
|
||||
subMenu.addElement(createMenuItem("Añadir", "pi pi-clone", "AddMedicalTest", null));
|
||||
subMenu.addElement(createMenuItem("Gestionar", "pi pi-briefcase", "MedicaltestManage", null));
|
||||
subMenu.addElement(new DefaultSeparator());
|
||||
subMenu.addElement(createMenuItem("Consultar médicos pro esp.", "pi pi-search", "QueryDoctorBySpecialty", null));
|
||||
subMenu.addElement(new DefaultSeparator());
|
||||
subMenu.addElement(createMenuItem("Listar médicos", "pi pi-list", "ListDoctorsbySpecialty", null));
|
||||
model.addElement(subMenu);
|
||||
}
|
||||
|
||||
model.getElements().add(secondSubmenu);
|
||||
// Preguntas
|
||||
// TODO: mostrar este menú solo si el usuario es paciente o medico
|
||||
if (1 == 1) {
|
||||
subMenu = new DefaultSubMenu("Preguntas", "pi pi-clone");
|
||||
// TODO: Si es paciente puede preguntar
|
||||
if (true == true)
|
||||
subMenu.addElement(createMenuItem("Añadir pregunta", "pi pi-clone", "AskQuestion", null));
|
||||
// TODO: Si es medico de familia puede responder
|
||||
if (true == true)
|
||||
subMenu.addElement(createMenuItem("Responder pregunta", "pi pi-question", "AnswerQuestion", null));
|
||||
|
||||
model.addElement(subMenu);
|
||||
}
|
||||
}
|
||||
|
||||
// Perfil
|
||||
subMenu = new DefaultSubMenu("Gestionar perfil", "pi pi-id-card");
|
||||
if (SessionUtils.isLogedIn() == false) {
|
||||
subMenu.addElement(createMenuItem("Registro de usuario", "pi pi-id-card", "RegisterUser", null));
|
||||
subMenu.addElement(createMenuItem("Registro de paciente", "pi pi-id-card", "AddPatient", null));
|
||||
subMenu.addElement(createMenuItem("Registro de médico", "pi pi-id-card", "AddFamilyDoctor", null));
|
||||
subMenu.addElement(createMenuItem("Registro de especialista", "pi pi-id-card", "AddFamilyDoctor", null));
|
||||
subMenu.addElement(createMenuItem("Registro de médico", "pi pi-id-card", "AddSpecialistDoctor", null));
|
||||
subMenu.addElement(new DefaultSeparator());
|
||||
} else {
|
||||
|
||||
subMenu.addElement(createMenuItem("Actualizar mi perfil", "pi pi-search", "UpdateProfile", null));
|
||||
subMenu.addElement(new DefaultSeparator());
|
||||
// TODO: mostrar este menú solo si el usuario es paciente
|
||||
if (true == true) {
|
||||
subMenu.addElement(createMenuItem("Cambiar médico de familia", "pi pi-search", "ChangeFamilyDoctor", null));
|
||||
subMenu.addElement(new DefaultSeparator());
|
||||
}
|
||||
// TODO: mostrar este menú solo si el usuario es médico de familia
|
||||
if (true == true)
|
||||
subMenu.addElement(createMenuItem("Cambiar centro de atención", "pi pi-search", "changecap", null));
|
||||
}
|
||||
model.addElement(subMenu);
|
||||
}
|
||||
|
||||
private DefaultMenuItem createMenuItem(String name, String icon, String outcome, String command) {
|
||||
DefaultMenuItem item = new DefaultMenuItem(name, icon);
|
||||
if (outcome != null)
|
||||
item.setOutcome(outcome);
|
||||
if (command != null)
|
||||
item.setCommand(command);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
public MenuModel getModel() {
|
||||
|
||||
@@ -3,7 +3,6 @@ package managedbean.systemAdmin;
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.faces.application.FacesMessage;
|
||||
import javax.faces.context.FacesContext;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
@@ -35,16 +34,25 @@ public class LoginMBean {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public void login() {
|
||||
public String login() {
|
||||
FacesMessage message = null;
|
||||
boolean loggedIn = false;
|
||||
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (username != null && username.equals("admin") && password != null && password.equals("admin")) {
|
||||
loggedIn = true;
|
||||
HttpSession session = SessionUtils.getSession();
|
||||
session.setAttribute("username", username);
|
||||
session.setAttribute("userid", "1");
|
||||
message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido", username);
|
||||
|
||||
return ("home");
|
||||
} else {
|
||||
loggedIn = false;
|
||||
message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "El usuario o la contraseña son incorrectos");
|
||||
@@ -52,6 +60,8 @@ public class LoginMBean {
|
||||
|
||||
FacesContext.getCurrentInstance().addMessage(null, message);
|
||||
PrimeFaces.current().ajax().addCallbackParam("loggedIn", loggedIn);
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
// logout event, invalidate session
|
||||
|
||||
Reference in New Issue
Block a user