import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.mxchange.jusercore.events.login.UserLoggedInEvent;
+import org.mxchange.jusercore.events.logout.ObserveableUserLogoutEvent;
import org.mxchange.pizzaapplication.beans.BasePizzaController;
/**
//* 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("PizzaLocalizationSessionBean::getLanguage(): locale.language={0} - EXIT!", this.getLocale().getLanguage())); //NOI18N
//* NOISY-DEBUG: */ System.out.println("PizzaLocalizationSessionBean::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 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.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
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 doLogin ();
+ /**
+ * Logout for current user by invalidating the current session.
+ * <p>
+ * @return Outcome (should be redirected)
+ */
+ String doLogout ();
+
/**
* Getter for logged-in user instance
* <p>
>
<ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
- <ui:define name="guest_title">Sitzung beenden</ui:define>
+ <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_LOGOUT}</ui:define>
<ui:define name="content_header">
- Sitzung beenden
+ #{msg.CONTENT_TITLE_INDEX_LOGOUT}
</ui:define>
<ui:define name="content">
- Offenes TODO!
+ <!-- rendered="#{userLoginController.isUserLoggedIn()}" //-->
+ <h:form id="logout">
+ <div class="table">
+ <div class="table_header">
+ <h:outputText value="#{msg.LOGIN_USER_LOGOUT_TITLE}" />
+ </div>
+
+ <div class="para">
+ <h:outputText value="#{msg.LOGIN_USER_LOGOUT_NOTICE}" />
+ </div>
+
+ <div class="table_footer">
+ <h:commandButton styleClass="reset" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+ <h:commandButton styleClass="submit" type="submit" action="#{userLoginController.doLogout()}" value="#{msg.BUTTON_USER_LOGOUT}" />
+ </div>
+ </div>
+ </h:form>
</ui:define>
</ui:composition>
</html>