/**
* Copyright 2012 Universitat Pompeu Fabra.
*
* Licensed 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.onexus.ui.authentication.persona;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.feedback.IFeedback;
import org.apache.wicket.markup.html.panel.Panel;
/**
* This is the main panel which loads specific panels depending on whether there is a logged in user
* or not.
*/
public class BrowserIdPanel extends Panel {
private static final long serialVersionUID = 1L;
private static final String CONTENT_ID = "content";
/**
* The style of the default "Sign In" image button provided by https://browserid.org
*/
private final GuestPanel.Style style;
public BrowserIdPanel(String id) {
this(id, GuestPanel.Style.BLUE);
}
public BrowserIdPanel(String id, GuestPanel.Style style) {
super(id);
this.style = style;
setOutputMarkupId(true);
}
@Override
protected void onConfigure() {
super.onConfigure();
if (SessionHelper.isLoggedIn(getSession())) {
addOrReplace(getLoggedInPanel(CONTENT_ID));
} else {
addOrReplace(getGuestPanel(CONTENT_ID));
}
}
protected Component getGuestPanel(String componentId) {
return new GuestPanel(componentId, style) {
private static final long serialVersionUID = 1L;
@Override
protected void onSuccess(AjaxRequestTarget target) {
super.onSuccess(target);
target.add(BrowserIdPanel.this);
}
@Override
protected void onFailure(AjaxRequestTarget target, final String failureReason) {
super.onFailure(target, failureReason);
error("The authentication failed: " + failureReason);
target.addChildren(getPage(), IFeedback.class);
}
};
}
protected Component getLoggedInPanel(String componentId) {
return new LoggedInPanel(componentId) {
private static final long serialVersionUID = 1L;
@Override
protected void onLoggedOut(AjaxRequestTarget target) {
super.onLoggedOut(target);
target.add(BrowserIdPanel.this);
}
};
}
}