return UserUtils.ifPasswordMatches(container, this.getLoggedInUser());
}
+ @Override
+ public boolean ifUserMustChangePassword () {
+ return (this.isUserLoggedIn() && this.getLoggedInUser().getUserMustChangePassword());
+ }
+
@Override
public boolean isInvisible () {
// Check on login
*/
boolean isUserLoggedIn ();
+ /**
+ * Checks whether the user needs to change password
+ * <p>
+ * @return Whether the user needs to change password
+ */
+ boolean ifUserMustChangePassword ();
+
/**
* Whether the currently logged-in user is invisible
* <p>
@Any
private Event<AdminLinkedUserEvent> userLinkedEvent;
+ /**
+ * Flag whether user must change password after login
+ */
+ private Boolean userMustChangePassword;
+
/**
* User name
*/
this.userName = userName;
}
+ @Override
+ public Boolean getUserMustChangePassword () {
+ return this.userMustChangePassword;
+ }
+
+ @Override
+ public void setUserMustChangePassword (final Boolean userMustChangePassword) {
+ this.userMustChangePassword = userMustChangePassword;
+ }
+
@Override
public String getUserPassword () {
return this.userPassword;
*/
void setUserPasswordRepeat (final String userPasswordRepeat);
+ /**
+ * Getter for flag if user needs to change password
+ * <p>
+ * @return Flag if user needs to change password
+ */
+ Boolean getUserMustChangePassword ();
+
+ /**
+ * Setter for flag if user needs to change password
+ * <p>
+ * @param userMustChangePassword Flag if user needs to change password
+ */
+ void setUserMustChangePassword (final Boolean userMustChangePassword);
+
}
ADMIN_COUNTRY_CODE_REQUIRED=Bitte geben Sie den L\u00e4ndercode ein (z.B. DE f\u00fcr Deutschland).
ADMIN_COUNTRY_ABORAD_DIAL_PREFIX_REQUIRED=Bitte geben Sie die Vorwahl f\u00fcr Auslandsgespr\u00e4che ein (z.B. + oder 00).
ADMIN_MOBILE_PROVIDER_DIAL_PREFIX_REQUIRED=Bitte geben Sie die Vorwahl ohne f\u00fchrende Null f\u00fcr den Mobilfunkanbieter ein (z.B. 177 f\u00fcr E+).
+USER_LOGIN_MUST_CHANGE_PASSWORD=Sie m\u00fcssen Ihr Passwort \u00e4ndern. Dies darf nicht mit dem aktuellen \u00fcbereinstimmen.
PAGE_TITLE_ADMIN_EXPORT_CONTACT=Export contact data
CONTENT_TITLE_ADMIN_EXPORT_CONTACT=Export contact data:
ADMIN_EXPORT_CONTACTS_TITLE=Start data export
-#Bei sehr gro\u00dfen Datenmengen kann es eventuell zu Zeit\u00fcberschreitungen kommen. Daher sollten Sie besser seitenweise exportieren.
ADMIN_EXPORT_CONTACTS_TIMEOUT_WARNING=Big data amount may lead to timeouts. You should then try to export each page separately.
BUTTON_ADMIN_EXPORT_CONTACTS_CSV=Export all data as CSV file
BUTTON_ADMIN_EXPORT_CONTACTS_XLS=Export all data as Excel file
ADMIN_COUNTRY_CODE_REQUIRED=Please enter country code (e.g. US for U.S.A.).
ADMIN_COUNTRY_ABORAD_DIAL_PREFIX_REQUIRED=Please enter dial prefix for abroad calls (e.g. + or 00).
ADMIN_MOBILE_PROVIDER_DIAL_PREFIX_REQUIRED=Please enter dial prefix for mobile provider.
+USER_LOGIN_MUST_CHANGE_PASSWORD=Please change your password. It must not match with your current one.
<div class="clear"></div>
</div>
+ <div class="table_row">
+ <div class="table_left_medium">
+ <h:outputLabel for="userMustChangePassword" value="#{msg.ADMIN_USER_MUST_CHANGE_PASSWORD}" />
+ </div>
+
+ <div class="table_right_medium">
+ <h:selectBooleanCheckbox styleClass="input" id="userMustChangePassword" value="#{adminUserController.userMustChangePassword}" />
+ </div>
+
+ <div class="clear"></div>
+ </div>
+
<div class="para notice">
<ul>
<li>
</ui:define>
<ui:define name="content">
- <ui:fragment rendered="#{userLoginController.isUserLoggedIn()}">
- <ui:fragment rendered="#{featureController.isFeatureEnabled('edit_user_data')}">
- <div class="table">
- <div class="table_header">
- <h:outputText value="#{msg.LOGIN_CHANGE_EMAIL_ADDRESS_TITLE}" />
- </div>
-
- <h:form id="login_change_email_address_form">
- <div class="para">
- <fieldset id="change_email">
- <legend title="#{msg.LOGIN_CHANGE_EMAIL_LEGEND_TITLE}">
- <h:outputText value="#{msg.LOGIN_CHANGE_EMAIL_LEGEND}" />
- </legend>
+ <ui:fragment rendered="#{userLoginController.isUserLoggedIn() and featureController.isFeatureEnabled('edit_user_data') and not userLoginController.ifUserMustChangePassword()}">
+ <div class="table">
+ <div class="table_header">
+ <h:outputText value="#{msg.LOGIN_CHANGE_EMAIL_ADDRESS_TITLE}" />
+ </div>
- <div class="table_row">
- <div class="table_left">
- <h:outputText value="#{msg.LOGIN_CHANGE_EMAIL_OLD_ADDRESS}" />
- </div>
+ <h:form id="login_change_email_address_form">
+ <div class="para">
+ <fieldset id="change_email">
+ <legend title="#{msg.LOGIN_CHANGE_EMAIL_LEGEND_TITLE}">
+ <h:outputText value="#{msg.LOGIN_CHANGE_EMAIL_LEGEND}" />
+ </legend>
- <div class="table_right">
- <h:outputText value="#{contactController.emailAddress}" />
- </div>
+ <div class="table_row">
+ <div class="table_left">
+ <h:outputText value="#{msg.LOGIN_CHANGE_EMAIL_OLD_ADDRESS}" />
+ </div>
- <div class="clear"></div>
+ <div class="table_right">
+ <h:outputText value="#{contactController.emailAddress}" />
</div>
- <ui:include src="/WEB-INF/templates/login/user/user_change_email_address_repeat_fields.tpl" />
- </fieldset>
- </div>
+ <div class="clear"></div>
+ </div>
- <ui:include src="/WEB-INF/templates/login/login_enter_current_password.tpl" />
- </h:form>
- </div>
+ <ui:include src="/WEB-INF/templates/login/user/user_change_email_address_repeat_fields.tpl" />
+ </fieldset>
+ </div>
+
+ <ui:include src="/WEB-INF/templates/login/login_enter_current_password.tpl" />
+
+ <div class="table_footer">
+ <h:commandButton class="reset" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+ <h:commandButton class="submit" type="submit" id="change_email" value="#{msg.BUTTON_CHANGE_EMAIL_ADDRESS}" action="#{emailChangeController.doChangeEmailAddress()}" />
+ </div>
+ </h:form>
+ </div>
+ </ui:fragment>
+
+ <h:outputText styleClass="errors" value="#{msg.ERROR_LOGIN_USER_EDIT_DATA_DISABLED}" rendered="#{not featureController.isFeatureEnabled('edit_user_data')}" />
- <h:outputText styleClass="errors" value="#{msg.ERROR_LOGIN_USER_EDIT_DATA_DISABLED}" rendered="#{not featureController.isFeatureEnabled('edit_user_data')}" />
- </ui:fragment>
+ <ui:fragment rendered="#{userLoginController.ifUserMustChangePassword()}">
+ <h:link outcome="user_change_password" value="#{msg.USER_LOGIN_MUST_CHANGE_PASSWORD}" />
+ </ui:fragment>
- <ui:fragment rendered="#{not loginController.isUserLoggedIn()}">
- <ui:include id="login_only" src="/WEB-INF/templates/generic/user_not_logged_in.tpl" />
- </ui:fragment>
+ <ui:fragment rendered="#{not loginController.isUserLoggedIn()}">
+ <ui:include id="login_only" src="/WEB-INF/templates/generic/user_not_logged_in.tpl" />
+ </ui:fragment>
</ui:define>
</ui:composition>
</html>
</ui:define>
<ui:define name="content">
- <ui:fragment rendered="#{userLoginController.isUserLoggedIn()}">
- <ui:fragment rendered="#{featureController.isFeatureEnabled('edit_user_data')}">
- <div class="table">
- <div class="table_header">
- <h:outputText value="#{msg.LOGIN_CHANGE_PERSONAL_DATA_TITLE}" />
- </div>
+ <ui:fragment rendered="#{userLoginController.isUserLoggedIn() and featureController.isFeatureEnabled('edit_user_data') and not userLoginController.ifUserMustChangePassword()}">
+ <div class="table">
+ <div class="table_header">
+ <h:outputText value="#{msg.LOGIN_CHANGE_PERSONAL_DATA_TITLE}" />
+ </div>
- <h:form id="login_change_personal_form">
- <ui:include src="/WEB-INF/templates/contact/form_contact_data.tpl" />
+ <h:form id="login_change_personal_form">
+ <ui:include src="/WEB-INF/templates/contact/form_contact_data.tpl" />
- <ui:include src="/WEB-INF/templates/login/user/user_enter_current_password.tpl" />
+ <ui:include src="/WEB-INF/templates/login/user/user_enter_current_password.tpl" />
- <ui:include src="/WEB-INF/templates/guest/guest_privacy_terms.tpl" />
+ <ui:include src="/WEB-INF/templates/guest/guest_privacy_terms.tpl" />
- <div class="table_footer">
- <h:commandButton styleClass="reset" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
- <h:commandButton styleClass="submit" type="submit" id="change_personal_data" value="#{msg.BUTTON_CHANGE_PERSONAL_DATA}" action="#{userController.doChangePersonalData()}" />
- </div>
- </h:form>
- </div>
- </ui:fragment>
+ <div class="table_footer">
+ <h:commandButton styleClass="reset" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+ <h:commandButton styleClass="submit" type="submit" id="change_personal_data" value="#{msg.BUTTON_CHANGE_PERSONAL_DATA}" action="#{userController.doChangePersonalData()}" />
+ </div>
+ </h:form>
+ </div>
+ </ui:fragment>
+
+ <h:outputText styleClass="errors" value="#{msg.ERROR_LOGIN_USER_EDIT_DATA_DISABLED}" rendered="#{not featureController.isFeatureEnabled('edit_user_data')}" />
- <h:outputText styleClass="errors" value="#{msg.ERROR_LOGIN_USER_EDIT_DATA_DISABLED}" rendered="#{not featureController.isFeatureEnabled('edit_user_data')}" />
+ <ui:fragment rendered="#{userLoginController.ifUserMustChangePassword()}">
+ <h:link outcome="user_change_password" value="#{msg.USER_LOGIN_MUST_CHANGE_PASSWORD}" />
</ui:fragment>
<ui:fragment rendered="#{not userLoginController.isUserLoggedIn()}">
</ui:define>
<ui:define name="content">
- <ui:fragment rendered="#{userLoginController.isUserLoggedIn()}">
- <ui:fragment rendered="#{featureController.isFeatureEnabled('edit_user_data')}">
- <ui:include src="/WEB-INF/templates/generic/message_box.tpl">
- <ui:param name="message" value="#{msg.LOGIN_MESSAGE_DATA_SAVED}" />
- </ui:include>
- </ui:fragment>
+ <ui:fragment rendered="#{userLoginController.isUserLoggedIn() and featureController.isFeatureEnabled('edit_user_data') and not userLoginController.ifUserMustChangePassword()}">
+ <ui:include src="/WEB-INF/templates/generic/message_box.tpl">
+ <ui:param name="message" value="#{msg.LOGIN_MESSAGE_DATA_SAVED}" />
+ </ui:include>
+ </ui:fragment>
+
+ <ui:fragment rendered="#{userLoginController.ifUserMustChangePassword()}">
+ <h:link outcome="user_change_password" value="#{msg.USER_LOGIN_MUST_CHANGE_PASSWORD}" />
</ui:fragment>
<h:outputText styleClass="errors" value="#{msg.ERROR_LOGIN_USER_EDIT_DATA_DISABLED}" rendered="#{not featureController.isFeatureEnabled('edit_user_data')}" />
<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/login/user/user_base.tpl">
<ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_EDIT_USER_DATA}</ui:define>
</ui:define>
<ui:define name="content">
- <ui:fragment rendered="#{loginController.isUserLoggedIn()}">
+ <ui:fragment rendered="#{userLoginController.isUserLoggedIn() and not userLoginController.ifUserMustChangePassword()}">
<div class="table">
<div class="table_header">
<h:outputText value="#{msg.LOGIN_EDIT_USER_DATA_TITLE}" />
<div class="para">
<ul>
- <li>
- <h:link title="#{msg.LINK_LOGIN_CHANGE_PERSONAL_DATA_TITLE}" outcome="login_change_personal_data" value="#{msg.LINK_LOGIN_CHANGE_PERSONAL_DATA}" />
- </li>
- <li>
- <h:link title="#{msg.LINK_LOGIN_CHANGE_EMAIL_ADDRESS_TITLE}" outcome="login_change_email_address" value="#{msg.LINK_LOGIN_CHANGE_EMAIL_ADDRESS}" />
- </li>
- <li>
- <h:link title="#{msg.LINK_LOGIN_CHANGE_PASSWORD_TITLE}" outcome="login_change_password" value="#{msg.LINK_LOGIN_CHANGE_PASSWORD}" />
- </li>
+ <ui:fragment rendered="#{featureController.isFeatureEnabled('edit_user_data') and not userLoginController.ifUserMustChangePassword()}">
+ <li>
+ <h:link title="#{msg.LINK_LOGIN_CHANGE_PERSONAL_DATA_TITLE}" outcome="login_change_personal_data" value="#{msg.LINK_LOGIN_CHANGE_PERSONAL_DATA}" />
+ </li>
+ </ui:fragment>
+
+ <ui:fragment rendered="#{featureController.isFeatureEnabled('edit_user_data') and not userLoginController.ifUserMustChangePassword()}">
+ <li>
+ <h:link title="#{msg.LINK_LOGIN_CHANGE_EMAIL_ADDRESS_TITLE}" outcome="login_change_email_address" value="#{msg.LINK_LOGIN_CHANGE_EMAIL_ADDRESS}" />
+ </li>
+ </ui:fragment>
+
+ <ui:fragment rendered="#{featureController.isFeatureEnabled('edit_user_data')}">
+ <li>
+ <h:link title="#{msg.LINK_LOGIN_CHANGE_PASSWORD_TITLE}" outcome="login_change_password" value="#{msg.LINK_LOGIN_CHANGE_PASSWORD}" />
+ </li>
+ </ui:fragment>
</ul>
</div>
</div>
</ui:define>
<ui:define name="content">
- <ui:fragment rendered="#{loginController.isUserLoggedIn()}">
+ <ui:fragment rendered="#{userLoginController.isUserLoggedIn() and not userLoginController.ifUserMustChangePassword()}">
Here goes your content.
</ui:fragment>
+ <ui:fragment rendered="#{userLoginController.ifUserMustChangePassword()}">
+ <h:link outcome="user_change_password" value="#{msg.USER_LOGIN_MUST_CHANGE_PASSWORD}" />
+ </ui:fragment>
+
<ui:fragment rendered="#{not userLoginController.isUserLoggedIn()}">
<ui:include src="/WEB-INF/templates/user/user_not_logged_in.tpl" />
</ui:fragment>
</ui:define>
<ui:define name="content">
- <ui:fragment rendered="#{loginController.isUserLoggedIn()}">
+ <ui:fragment rendered="#{userLoginController.isUserLoggedIn() and not userLoginController.ifUserMustChangePassword()}">
<ui:include src="/WEB-INF/templates/generic/message_box.tpl">
<ui:param name="message" value="#{msg.LOGIN_MESSAGE_DATA_SAVED}" />
</ui:include>
</ui:fragment>
+ <ui:fragment rendered="#{userLoginController.ifUserMustChangePassword()}">
+ <h:link outcome="user_change_password" value="#{msg.USER_LOGIN_MUST_CHANGE_PASSWORD}" />
+ </ui:fragment>
+
<ui:fragment rendered="#{not userLoginController.isUserLoggedIn()}">
<ui:include src="/WEB-INF/templates/user/user_not_logged_in.tpl" />
</ui:fragment>