/**
* (C) Copyright 2013 Jabylon (http://www.jabylon.org) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jabylon.rest.ui.security;
import org.apache.wicket.Session;
import org.apache.wicket.authroles.authentication.panel.SignInPanel;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.flow.RedirectToUrlException;
import org.apache.wicket.util.string.StringValue;
import org.jabylon.rest.ui.wicket.pages.RegisterPage;
import org.jabylon.security.CommonPermissions;
public class BootstrapSignInPanel extends SignInPanel {
private static final long serialVersionUID = 6449210837745750191L;
public BootstrapSignInPanel(String id) {
super(id);
}
public BootstrapSignInPanel(String id, boolean includeRememberMe) {
super(id, includeRememberMe);
WebMarkupContainer registerContainer = new WebMarkupContainer("register.container");
BookmarkablePageLink<Object> link = new BookmarkablePageLink<Object>("register.link", RegisterPage.class);
link.setBody(new StringResourceModel("register.link.label",this,null));
registerContainer.add(link);
registerContainer.setVisibilityAllowed(canRegister());
getForm().add(registerContainer);
}
private boolean canRegister() {
Session session = getSession();
if (session instanceof CDOAuthenticatedSession) {
CDOAuthenticatedSession authSession = (CDOAuthenticatedSession) session;
return CommonPermissions.hasPermission(authSession.getAnonymousUser(), CommonPermissions.USER_REGISTER);
}
return false;
}
@Override
protected void onSignInSucceeded() {
StringValue destination = getPage().getPageParameters().get("target");
if(!destination.isEmpty()) {
throw new RedirectToUrlException(destination.toString());
}
super.onSignInSucceeded();
}
}