import javax.inject.Named;
import org.mxchange.addressbook.beans.BaseAddressbookController;
import org.mxchange.jusercore.events.login.UserLoggedInEvent;
+import org.mxchange.jusercore.events.logout.ObserveableUserLogoutEvent;
/**
* A session bean for handling localization/internationalization changes. This
//* NOISY-DEBUG: */ System.out.println("LandingLocalizationSessionBean:afterUserLogin - EXIT!"); //NOI18N
}
+ @Override
+ public void afterUserLogout (@Observes final ObserveableUserLogoutEvent event) {
+ // Trace message
+ //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("ReportsLocalizationSessionBean:afterUserLogin: event={0} - CALLED!", event)); //NOI18N
+
+ // event should not be null
+ if (null == event) {
+ // Throw NPE
+ throw new NullPointerException("event is null"); //NOI18N
+ } else if (event.getLoggedOutUser() == null) {
+ // Throw NPE again
+ throw new NullPointerException("event.loggedOutUser is null"); //NOI18N
+ } else if (event.getLoggedOutUser().getUserId() == null) {
+ // userId is null
+ throw new NullPointerException("event.loggedOutUser.userId is null"); //NOI18N
+ } else if (event.getLoggedOutUser().getUserId() < 1) {
+ // Not avalid id
+ throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getLoggedOutUser(), event.getLoggedOutUser().getUserId())); //NOI18N
+ }
+
+ // Clear this bean as well
+ this.clear();
+
+ // Trace message
+ //* NOISY-DEBUG: */ System.out.println("ReportsLocalizationSessionBean:afterUserLogin - EXIT!"); //NOI18N
+ }
+
@Override
public String getLanguage () {
//* NOISY-DEBUG: */ System.out.println(MessageFormat.format("AddressbookLocalizationSessionBean::getLanguage(): locale.language={0} - EXIT!", this.getLocale().getLanguage())); //NOI18N
// Log debug message
//* NOISY-DEBUG: */ System.out.println(MessageFormat.format("AddressbookLocalizationSessionBean::setLanguage: loc={0}", loc)); //NOI18N
-
// Set it here and in the JSF context
this.setLocale(loc);
FacesContext.getCurrentInstance().getViewRoot().setLocale(loc);
// Log debug message
//* NOISY-DEBUG: */ System.out.println(MessageFormat.format("AddressbookLocalizationSessionBean::init: loc={0}", loc)); //NOI18N
-
// Set it here
this.setLocale(loc);
//* NOISY-DEBUG: */ System.out.println("AddressbookLocalizationSessionBean::init: EXIT!"); //NOI18N
}
+ /**
+ * Clears this bean
+ */
+ private void clear () {
+ // Clear all fields
+ this.setLanguage(null);
+ this.setLocale(null);
+ }
+
}
import java.io.Serializable;
import java.util.Locale;
import org.mxchange.jusercore.events.login.UserLoggedInEvent;
+import org.mxchange.jusercore.events.logout.ObserveableUserLogoutEvent;
/**
* An interface for localization change beans
*/
void afterUserLogin (final UserLoggedInEvent event);
+ /**
+ * Event observer for logged-out user
+ * <p>
+ * @param event Event instance
+ */
+ void afterUserLogout (final ObserveableUserLogoutEvent event);
+
/**
* Getter for locale
* <p>
import javax.enterprise.context.SessionScoped;
import javax.enterprise.event.Event;
import javax.enterprise.inject.Any;
+import javax.faces.context.FacesContext;
import javax.faces.view.facelets.FaceletException;
import javax.inject.Inject;
import javax.inject.Named;
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.logout.UserLogoutEvent;
import org.mxchange.jusercore.exceptions.UserNotFoundException;
import org.mxchange.jusercore.exceptions.UserPasswordMismatchException;
import org.mxchange.jusercore.exceptions.UserStatusLockedException;
*/
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;
+
/**
* Default constructor
*/
this.setTemplateType("login"); //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 void setBaseTemplatePathName (final String baseTemplatePathName) {
+ this.baseTemplatePathName = baseTemplatePathName;
+ }
+
+ @Override
+ public String doUserLogout () {
+ // Fire event
+ this.userLogoutEvent.fire(new UserLogoutEvent(this.getLoggedInUser()));
+
+ // Invalidate session
+ FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
+
+ // Unset any user instances
+ this.setLoggedInUser(null);
+
+ // Redirect to index
+ return "index?faces-redirect=true"; //NOI18N
+ }
+
@Override
public String getCurrentPassword () {
return this.currentPassword;
// Return it
return this.userLoggedIn;
}
+
+ /**
+ * Clears this bean
+ */
+ private void clear () {
+ // Clear all fields
+ this.setCurrentPassword(null);
+ }
+
}
*/
String doUserLogout ();
+ /**
+ * Logout for current user by invalidating the current session.
+ * <p>
+ * @return Outcome (should be redirected)
+ */
+ String doLogout ();
+
/**
* Getter for logged-in user instance
* <p>
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<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"
- >
-
- <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
- <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_FOO}</ui:define>
-
- <ui:define name="content_header">
- #{msg.CONTENT_TITLE_INDEX_FOO}
- </ui:define>
-
- <ui:define name="content">
- Here goes your content.
- </ui:define>
- </ui:composition>
-</html>