- rewrote templateType to baseTemplatePathName which allows more "complex" paths than just simple
- imprint, terms and privacy can now make usage of that new variable and don't need to be shown in new browser window
Signed-off-by: Roland Häder <roland@mxchange.org>
import org.mxchange.jusercore.container.login.UserLoginContainer;
import org.mxchange.jusercore.events.login.UserLoggedInEvent;
import org.mxchange.jusercore.events.login.UserLoginEvent;
+import org.mxchange.jusercore.events.logout.ObserveableUserLogoutEvent;
import org.mxchange.jusercore.events.user.password_change.UpdatedUserPasswordEvent;
import org.mxchange.jusercore.exceptions.UserNotFoundException;
import org.mxchange.jusercore.exceptions.UserPasswordMismatchException;
/**
* Path name for guest base template
*/
- private static final String GUEST_BASE_TEMPLATE_NAME = "guest/guest"; //NOI18N
+ private static final String GUEST_BASE_TEMPLATE_NAME = "guest/guest";
/**
* Path name for logged-in user base template
*/
- private static final String USER_BASE_TEMPLATE_NAME = "login/user/user"; //NOI18N
+ private static final String USER_BASE_TEMPLATE_NAME = "login/user/user";
/**
* Serial number
*/
private static final long serialVersionUID = 47_828_986_719_691_592L;
+ /**
+ * Template type for pages that might be displayed in guest area and login
+ * area.
+ */
+ private String baseTemplatePathName;
+
/**
* Current password
*/
private User loggedInUser;
/**
- * User controller
+ * Remote register session bean
*/
- @Inject
- private JobsUserWebSessionController userController;
+ private UserLoginSessionBeanRemote loginBean;
/**
- * Event being fired when user logs in
+ * Event fired when user has logged in
*/
@Inject
@Any
private Event<UserLoggedInEvent> loginEvent;
/**
- * EJB for user-login
+ * User controller
*/
- private UserLoginSessionBeanRemote userLoginBean;
+ @Inject
+ private JobsUserWebSessionController userController;
/**
* Flag whether the user has logged-in, set only from inside
*/
private boolean userLoggedIn;
+ /**
+ * Event fired when user has logged in
+ */
+ @Inject
+ @Any
+ private Event<UserLoggedInEvent> userLoginEvent;
+
+ /**
+ * Event fired when user has logged out
+ */
+ @Inject
+ @Any
+ private Event<ObserveableUserLogoutEvent> userLogoutEvent;
+
/**
* User's password history
*/
Context context = new InitialContext();
// Try to lookup
- this.userLoginBean = (UserLoginSessionBeanRemote) context.lookup("java:global/jjobs-ejb/login!org.mxchange.jusercore.model.login.UserLoginSessionBeanRemote"); //NOI18N
+ this.loginBean = (UserLoginSessionBeanRemote) context.lookup("java:global/addressbook-ejb/login!org.mxchange.jusercore.model.login.UserLoginSessionBeanRemote"); //NOI18N
// Also find this
this.userPasswordHistoryBean = (UserPasswordHistorySessionBeanRemote) context.lookup(""); //NOI18N
try {
// Call bean
- User confirmedUser = this.userLoginBean.validateUserAccountStatus(container);
+ User confirmedUser = this.loginBean.validateUserAccountStatus(container);
// All fine here so set it here
this.setLoggedInUser(confirmedUser);
this.userPasswordHistory = this.userPasswordHistoryBean.getUserPasswordHistory(confirmedUser);
// Set template to "login"
- this.setTemplateType("login"); //NOI18N
+ this.setBaseTemplatePathName(USER_BASE_TEMPLATE_NAME); //NOI18N
// Fire event away. Keep this last before return statement.
- this.loginEvent.fire(new UserLoginEvent(confirmedUser));
+ this.userLoginEvent.fire(new UserLoginEvent(confirmedUser));
+
+ // Clear this bean
+ this.clear();
// All fine
return "login"; //NOI18N
}
}
+ @Override
+ public String getBaseTemplatePathName () {
+ return this.baseTemplatePathName;
+ }
+
+ @Override
+ public void setBaseTemplatePathName (final String baseTemplatePathName) {
+ this.baseTemplatePathName = baseTemplatePathName;
+ }
+
@Override
public String getCurrentPassword () {
return this.currentPassword;
@Override
public boolean isUserLoggedIn () {
- // Trace message
- // NOISY-DEBUG System.out.println(MessageFormat.format("JobsUserLoginWebSessionBean:isUserLoggedIn: this.loggedInUser={0},this.templateType={1} - CALLED!", this.getLoggedInUser(), this.getTemplateType()));
-
// Compare instance
this.userLoggedIn = ((this.getLoggedInUser() instanceof User) && (Objects.equals(this.getLoggedInUser().getUserAccountStatus(), UserAccountStatus.CONFIRMED)));
- // Trace message
- // NOISY-DEBUG System.out.println(MessageFormat.format("JobsUserLoginWebSessionBean:isUserLoggedIn: this.userLoggedIn={0} - EXIT!", this.userLoggedIn));
-
// Return it
return this.userLoggedIn;
}
boolean isPasswordInHistory (final String userPassword);
/**
- * Getter for template type
+ * Getter for base template type
* <p>
* @return Template type
*/
- String getTemplateType ();
+ String getBaseTemplatePathName ();
/**
- * Setter for template type
+ * Setter for base template type
* <p>
- * @param templateType Template type
+ * @param baseTemplatePathName Template type
*/
- void setTemplateType (final String templateType);
+ void setBaseTemplatePathName (final String baseTemplatePathName);
/**
* Logout for administrator area. If a logged-in user instance exists, it is
<html
lang="#{localizationController.language}" xml:lang="#{localizationController.language}"
xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
- 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:h="http://xmlns.jcp.org/jsf/html"
+ xmlns:f="http://xmlns.jcp.org/jsf/core"
+ >
- <ui:composition template="/WEB-INF/templates/#{userLoginController.templateType}/#{userLoginController.templateType}_base.tpl">
+ <ui:composition template="/WEB-INF/templates/#{userLoginController.baseTemplatePathName}_base.tpl">
<ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_FOO}</ui:define>
<ui:define name="content_header">
<h:link outcome="login_index" title="#{msg.LINK_LOGIN_HOME_TITLE}" value="#{msg.LINK_LOGIN_HOME}" />
</li>
- <li class="footer_link">
- <h:link outcome="imprint" title="#{msg.LINK_GUEST_IMPRINT_TITLE}" value="#{msg.LINK_GUEST_IMPRINT}" />
- </li>
+ <ui:fragment rendered="#{featureController.isFeatureEnabled('imprint')}">
+ <li class="footer_link">
+ <h:link outcome="imprint" title="#{msg.LINK_GUEST_IMPRINT_TITLE}" value="#{msg.LINK_GUEST_IMPRINT}" />
+ </li>
+ </ui:fragment>
- <li class="footer_link">
- <h:link outcome="terms" title="#{msg.LINK_GUEST_TERMS_TITLE}" value="#{msg.LINK_GUEST_TERMS}" />
- </li>
+ <ui:fragment rendered="#{featureController.isFeatureEnabled('terms')}">
+ <li class="footer_link">
+ <h:link outcome="terms" title="#{msg.LINK_GUEST_TERMS_TITLE}" value="#{msg.LINK_GUEST_TERMS}" />
+ </li>
+ </ui:fragment>
- <li class="footer_link">
- <h:link outcome="privacy" title="#{msg.LINK_GUEST_PRIVACY_TITLE}" value="#{msg.LINK_GUEST_PRIVACY}" />
- </li>
+ <ui:fragment rendered="#{featureController.isFeatureEnabled('privacy')}">
+ <li class="footer_link">
+ <h:link outcome="privacy" title="#{msg.LINK_GUEST_PRIVACY_TITLE}" value="#{msg.LINK_GUEST_PRIVACY}" />
+ </li>
+ </ui:fragment>
<li class="footer_copyright">Copyright (c) 2016 by Roland Häder</li>
</ul>
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
- <ui:composition template="/WEB-INF/templates/#{userLoginController.templateType}/#{userLoginController.templateType}_base.tpl">
+ <ui:composition template="/WEB-INF/templates/#{userLoginController.baseTemplatePathName}_base.tpl">
<ui:define name="login_title">#{msg.PAGE_TITLE_USER_LIST}</ui:define>
<ui:define name="content_header">
</f:viewParam>
</f:metadata>
- <ui:composition template="/WEB-INF/templates/#{userLoginController.templateType}/#{userLoginController.templateType}_base.tpl">
+ <ui:composition template="/WEB-INF/templates/#{userLoginController.baseTemplatePathName}_base.tpl">
<ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_USER_PROFILE}</ui:define>
<ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_USER_PROFILE}</ui:define>
xmlns:f="http://xmlns.jcp.org/jsf/core"
>
- <ui:composition template="/WEB-INF/templates/#{userLoginController.templateType}/#{userLoginController.templateType}_base.tpl">
+ <ui:composition template="/WEB-INF/templates/#{userLoginController.baseTemplatePathName}_base.tpl">
<ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_IMPRINT}</ui:define>
<ui:define name="content_header">
xmlns:f="http://xmlns.jcp.org/jsf/core"
>
- <ui:composition template="/WEB-INF/templates/#{userLoginController.templateType}/#{userLoginController.templateType}_base.tpl">
+ <ui:composition template="/WEB-INF/templates/#{userLoginController.baseTemplatePathName}_base.tpl">
<ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_PRIVACY}</ui:define>
<ui:define name="content_header">
xmlns:f="http://xmlns.jcp.org/jsf/core"
>
- <ui:composition template="/WEB-INF/templates/#{userLoginController.templateType}/#{userLoginController.templateType}_base.tpl">
+ <ui:composition template="/WEB-INF/templates/#{userLoginController.baseTemplatePathName}_base.tpl">
<ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_TERMS}</ui:define>
<ui:define name="content_header">