/** * Licensed to the Austrian Association for Software Tool Integration (AASTI) * under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright * ownership. The AASTI 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.openengsb.ui.admin.loginPage; import java.util.Locale; import org.apache.wicket.AttributeModifier; import org.apache.wicket.authroles.authentication.AuthenticatedWebSession; import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.RequiredTextField; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.link.ExternalLink; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.openengsb.ui.admin.model.UsernamePassword; import org.openengsb.ui.common.OpenEngSBPage; import org.openengsb.ui.common.imprint.ImprintPanel; import org.openengsb.ui.common.resources.css.CommonCssLocator; import org.openengsb.ui.common.resources.images.CommonPictureLocator; import org.openengsb.ui.common.resources.js.CommonJsLocator; import org.ops4j.pax.wicket.api.PaxWicketMountPoint; @PaxWicketMountPoint(mountPoint = "login") public class LoginPage extends OpenEngSBPage { private static final long serialVersionUID = 4704550987311760491L; private final UsernamePassword user = new UsernamePassword(); public final class DefaultImprintPanel extends ImprintPanel { private static final long serialVersionUID = 1L; public DefaultImprintPanel(String id) { super(id); } } public LoginPage() { initContent(); } public LoginPage(PageParameters parameters) { super(parameters); } @Override public void renderHead(IHeaderResponse response) { response.render(CssHeaderItem.forReference(CommonCssLocator.getGridsCss())); response.render(CssHeaderItem.forReference(CommonCssLocator.getLoginPageCss())); response.render(CssHeaderItem.forReference(CommonCssLocator.getJqueryUiCss())); response.render(JavaScriptHeaderItem.forReference(CommonJsLocator.getJqueryJs())); response.render(JavaScriptHeaderItem.forReference(CommonJsLocator.getJqueryUi())); response.render(JavaScriptHeaderItem.forReference(CommonJsLocator.getJqueryHelper())); // Javascript code to set the focus on the unsername input field. Only necessary for loginpage, // therefore injected directly response.render(JavaScriptHeaderItem.forScript("" + "$(function() {" + " $(\"#username\").focus();" + "});" + "", "setFocusOnload", "loginfocus")); } private void initContent() { @SuppressWarnings("serial") Form<UsernamePassword> loginForm = new Form<UsernamePassword>("loginForm") { @Override protected void onSubmit() { AuthenticatedWebSession session = AuthenticatedWebSession.get(); if (session.signIn(user.getUsername(), user.getPassword())) { setDefaultResponsePageIfNecessary(); } else { error(new StringResourceModel("error", this, null).getString()); } } private void setDefaultResponsePageIfNecessary() { continueToOriginalDestination(); setResponsePage(getApplication().getHomePage()); } }; loginForm.setModel(new CompoundPropertyModel<UsernamePassword>(user)); add(loginForm); loginForm.add(new RequiredTextField<String>("username")); loginForm.add(new PasswordTextField("password")); FeedbackPanel feedbackPanel = new FeedbackPanel("feedback"); feedbackPanel.setOutputMarkupId(true); add(feedbackPanel); add(new Image("topImage", CommonPictureLocator.getGreyscaleLogoBig())); Panel imprintDialogue = new DefaultImprintPanel("imprintDialogue"); imprintDialogue.setOutputMarkupId(true); add(imprintDialogue); ExternalLink addUserLink = new ExternalLink("imprint", "#"); addUserLink.add(AttributeModifier.replace("onClick", "showModalButtonCloseDialogue('" + imprintDialogue.getMarkupId() + "'" + ",'" + getLocalizer().getString("imprint", this) + "',false,false,550,450)")); loginForm.add(addUserLink); add(new Link<Object>("lang.en") { private static final long serialVersionUID = -2740581767694866689L; @Override public void onClick() { getSession().setLocale(Locale.ENGLISH); setResponsePage(this.getPage()); } }); add(new Link<Object>("lang.de") { private static final long serialVersionUID = -6858440905643185661L; @Override public void onClick() { getSession().setLocale(Locale.GERMAN); setResponsePage(this.getPage()); } }); } }