/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.isis.viewer.wicket.ui.pages.login;
import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
import org.apache.wicket.authroles.authentication.panel.SignInPanel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.cookies.CookieUtils;
import org.apache.wicket.util.string.Strings;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountManagementPageAbstract;
/**
* Boilerplate, pick up our HTML and CSS.
*/
public class WicketSignInPage extends AccountManagementPageAbstract {
private static final long serialVersionUID = 1L;
public static final String ISIS_VIEWER_WICKET_REMEMBER_ME_SUPPRESS = "isis.viewer.wicket.rememberMe.suppress";
/**
* @deprecated - use {@link #ISIS_VIEWER_WICKET_REMEMBER_ME_SUPPRESS} instead.
*/
@Deprecated
public static final String ISIS_VIEWER_WICKET_SUPPRESS_REMEMBER_ME = "isis.viewer.wicket.suppressRememberMe";
public static final String ISIS_VIEWER_WICKET_SUPPRESS_SIGN_UP = "isis.viewer.wicket.suppressSignUp";
public static final String ISIS_VIEWER_WICKET_SUPPRESS_PASSWORD_RESET = "isis.viewer.wicket.suppressPasswordReset";
public static final String ISIS_VIEWER_WICKET_CLEAR_ORIGINAL_DESTINATION = "isis.viewer.wicket.clearOriginalDestination";
public WicketSignInPage(final PageParameters parameters) {
this(parameters, getAndClearExceptionModelIfAny());
}
public WicketSignInPage(final PageParameters parameters, ExceptionModel exceptionModel) {
super(parameters, exceptionModel);
if (AuthenticatedWebSession.exists() && AuthenticatedWebSession.get().isSignedIn()) {
pageNavigationService.restartAt(PageType.HOME);
}
}
@Override
protected void onInitialize() {
super.onInitialize();
addSignInPanel();
checkForSuccessFeedback();
}
/**
* Checks for a cookie with name {@value #FEEDBACK_COOKIE_NAME} that is
* used as a temporary container for stateless session scoped success feedback
* messages.
*/
private void checkForSuccessFeedback() {
CookieUtils cookieUtils = new CookieUtils();
String successFeedback = cookieUtils.load(FEEDBACK_COOKIE_NAME);
if (!Strings.isEmpty(successFeedback)) {
success(successFeedback);
cookieUtils.remove(FEEDBACK_COOKIE_NAME);
}
}
protected SignInPanel addSignInPanel() {
final boolean rememberMeSuppress = getConfiguration().getBoolean(ISIS_VIEWER_WICKET_REMEMBER_ME_SUPPRESS, false);
final boolean rememberMeSuppressDeprecated = getConfiguration().getBoolean(ISIS_VIEWER_WICKET_SUPPRESS_REMEMBER_ME, false);
final boolean suppressRememberMe = rememberMeSuppress || rememberMeSuppressDeprecated;
final boolean suppressSignUpLink = getConfiguration().getBoolean(ISIS_VIEWER_WICKET_SUPPRESS_SIGN_UP, false);
final boolean suppressPasswordResetLink = getConfiguration().getBoolean(ISIS_VIEWER_WICKET_SUPPRESS_PASSWORD_RESET, false);
final boolean clearOriginalDestination = getConfiguration().getBoolean(ISIS_VIEWER_WICKET_CLEAR_ORIGINAL_DESTINATION, false);
final boolean rememberMe = !suppressRememberMe;
final boolean signUpLink = !suppressSignUpLink;
final boolean passwordReset = !suppressPasswordResetLink;
final boolean continueToOriginalDestination = !clearOriginalDestination;
SignInPanel signInPanel = createSignInPanel("signInPanel", rememberMe, signUpLink, passwordReset, continueToOriginalDestination);
add(signInPanel);
return signInPanel;
}
protected SignInPanel createSignInPanel(
final String id,
final boolean rememberMe,
final boolean signUpLink,
final boolean passwordResetLink,
final boolean continueToOriginalDestination) {
final SignInPanel signInPanel = new IsisSignInPanel(id, rememberMe, signUpLink, passwordResetLink, continueToOriginalDestination);
return signInPanel;
}
@javax.inject.Inject // strangely, this isn't a @com.google.inject.Inject
private PageNavigationService pageNavigationService;
}