aboutsummaryrefslogtreecommitdiff
path: root/id/server/moa-id-frontend-resources/src
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/moa-id-frontend-resources/src')
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/META-INF/MANIFEST.MF3
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/StaticResourceConfiguration.java48
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractGUIFormBuilderConfiguration.java109
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java120
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java221
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIBuilderConfiguration.java74
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIFormBuilder.java67
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/ServiceProviderSpecificGUIFormBuilderConfiguration.java186
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/exception/GUIBuildException.java46
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/utils/FormBuildUtils.java178
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityLogAdapter.java99
-rw-r--r--id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityProvider.java113
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoBKA.pngbin0 -> 8062 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoEGIZ.pngbin0 -> 77395 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/logo_digAT.pngbin0 -> 22964 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/main.css253
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/bk_aktivieren.jpgbin0 -> 30471 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handy_deprecated.gifbin0 -> 4460 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handysign.pngbin0 -> 377212 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte.pngbin0 -> 21957 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deactivated.pngbin0 -> 20539 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deprecated.gifbin0 -> 3360 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/logo.jpgbin0 -> 18260 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/mobile-bku_deprecated.pngbin0 -> 4602 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku-deactivated_deprecated.pngbin0 -> 5382 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku_deprecated.pngbin0 -> 6011 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/stork-logo.pngbin0 -> 9160 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/valid-html5-blue.pngbin0 -> 3297 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/w3cvalidhtml5.jpgbin0 -> 1938 bytes
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/index.html92
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_bk.html100
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_mandates.html58
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_stork.html42
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/moa_errorcodes.html333
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_handyBKU.html38
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_localBKU.html30
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_onlineBKU.html37
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/css_template.css671
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/error_message.html37
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/javascript_tempalte.js200
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/loginFormFull.html92
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/mandate-service-selection.html76
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/redirectForm.html13
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/sendAssertionFormFull.html52
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/slo_template.html94
-rw-r--r--id/server/moa-id-frontend-resources/src/main/resources/templates/sso_transfer_template.html75
46 files changed, 3557 insertions, 0 deletions
diff --git a/id/server/moa-id-frontend-resources/src/main/java/META-INF/MANIFEST.MF b/id/server/moa-id-frontend-resources/src/main/java/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..254272e1c
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/StaticResourceConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/StaticResourceConfiguration.java
new file mode 100644
index 000000000..d7d99d3a7
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/StaticResourceConfiguration.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+/**
+ * @author tlenz
+ *
+ */
+@Configuration
+@EnableWebMvc
+public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
+
+ private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
+ "classpath:/mainGUI/",
+ "/"};
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
+
+
+ }
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractGUIFormBuilderConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractGUIFormBuilderConfiguration.java
new file mode 100644
index 000000000..52c1f0f97
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractGUIFormBuilderConfiguration.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend.builder;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public abstract class AbstractGUIFormBuilderConfiguration implements IGUIBuilderConfiguration {
+
+ public static final String PARAM_AUTHCONTEXT = "contextPath";
+ public static final String PARAM_FORMSUBMITENDPOINT = "submitEndpoint";
+
+ public static final String PARAM_PENDINGREQUESTID = "pendingReqID";
+
+ private String authURL = null;
+ private String viewName = null;
+ private String formSubmitEndpoint = null;
+
+ /**
+ * @param authURL IDP PublicURL-Prefix which should be used, but never null
+ * @param viewName Name of the template (with suffix) but never null
+ * @param formSubmitEndpoint EndPoint on which the form should be submitted,
+ * or null if the form must not submitted
+ *
+ */
+ public AbstractGUIFormBuilderConfiguration(String authURL, String viewName, String formSubmitEndpoint) {
+ if (viewName.startsWith("/"))
+ this.viewName = viewName.substring(1);
+ else
+ this.viewName = viewName;
+
+ if (authURL.endsWith("/"))
+ this.authURL = authURL.substring(0, authURL.length() - 1);
+ else
+ this.authURL = authURL;
+
+ if (MiscUtil.isNotEmpty(formSubmitEndpoint)) {
+ if (formSubmitEndpoint.startsWith("/"))
+ this.formSubmitEndpoint = formSubmitEndpoint;
+ else
+ this.formSubmitEndpoint = "/" + formSubmitEndpoint;
+ }
+ }
+
+
+ /**
+ * Define the parameters, which should be evaluated in the template
+ *
+ * @return Map of parameters, which should be added to template
+ */
+ abstract protected Map<String, Object> getSpecificViewParameters();
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewName()
+ */
+ @Override
+ public final String getViewName() {
+ return this.viewName;
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewParameters()
+ */
+ @Override
+ public final Map<String, Object> getViewParameters() {
+ //get parameters from detail implementation
+ Map<String, Object> specParams = getSpecificViewParameters();
+ if (specParams == null)
+ specParams = new HashMap<String, Object>();
+
+ //add generic parameters
+ specParams.put(PARAM_AUTHCONTEXT, this.authURL);
+ if (this.formSubmitEndpoint != null)
+ specParams.put(PARAM_FORMSUBMITENDPOINT, this.formSubmitEndpoint);
+
+ return specParams;
+
+ }
+
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java
new file mode 100644
index 000000000..2c2792b84
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend.builder;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import at.gv.egovernment.moa.id.commons.api.IRequest;
+
+/**
+ * This class builds MOA-ID GUI forms from default resource paths
+ *
+ * @author tlenz
+ *
+ */
+public class DefaultGUIFormBuilderConfiguration extends AbstractGUIFormBuilderConfiguration {
+
+ public static final String VIEW_REDIRECT = "redirectForm.html";
+ public static final String VIEW_ERRORMESSAGE = "error_message.html";
+ public static final String VIEW_SINGLELOGOUT = "slo_template.html";
+ public static final String VIEW_SSO_SESSION_TRANSFER = "sso_transfer_template.html";
+
+ private IRequest pendingReq;
+ private Map<String, Object> customParameters = null;
+
+
+ /**
+ * @param authURL PublicURLPrefix of the IDP but never null
+ * @param viewName Name of the template (with suffix) but never null
+ * @param formSubmitEndpoint EndPoint on which the form should be submitted,
+ * or null if the form must not submitted
+ */
+ public DefaultGUIFormBuilderConfiguration(String authURL, String viewName, String formSubmitEndpoint) {
+ super(authURL, viewName, formSubmitEndpoint);
+ }
+
+ /**
+ * @param Current processed pending-request DAO but never null
+ * @param viewName Name of the template (with suffix) but never null
+ * @param formSubmitEndpoint EndPoint on which the form should be submitted,
+ * or null if the form must not submitted
+ */
+ public DefaultGUIFormBuilderConfiguration(IRequest pendingReq, String viewName, String formSubmitEndpoint) {
+ super(pendingReq.getAuthURL(), viewName, formSubmitEndpoint);
+ this.pendingReq = pendingReq;
+
+
+ }
+
+ public void putCustomParameter(String key, Object value) {
+ if (customParameters == null)
+ customParameters = new HashMap<String, Object>();
+
+ customParameters.put(key, value);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewParameters()
+ */
+ @Override
+ public Map<String, Object> getSpecificViewParameters() {
+ Map<String, Object> params = new HashMap<String, Object>();
+ if (pendingReq != null) {
+ params.put(PARAM_PENDINGREQUESTID, pendingReq.getRequestID());
+
+ }
+ if (customParameters != null)
+ params.putAll(customParameters);
+
+ return params;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.AbstractGUIFormBuilder#getTemplate(java.lang.String)
+ */
+ @Override
+ public InputStream getTemplate(String viewName) {
+ return null;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.AbstractGUIFormBuilder#getContentType()
+ */
+ @Override
+ public String getDefaultContentType() {
+ return null;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.AbstractGUIFormBuilder#getClasspathTemplateDir()
+ */
+ @Override
+ public String getClasspathTemplateDir() {
+ return null;
+
+ }
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java
new file mode 100644
index 000000000..94fa4d977
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend.builder;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.net.URI;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import at.gv.egovernment.moa.id.auth.frontend.exception.GUIBuildException;
+import at.gv.egovernment.moa.id.auth.frontend.velocity.VelocityProvider;
+import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+@Service("guiFormBuilder")
+public class GUIFormBuilderImpl implements IGUIFormBuilder {
+
+ private static final String DEFAULT_CONTENT_TYPE = "text/html;charset=UTF-8";
+ private static final String CONFIG_HTMLTEMPLATES_DIR = "htmlTemplates/";
+ private static final String CLASSPATH_HTMLTEMPLATES_DIR = "templates/";
+
+ @Autowired private AuthConfiguration authConfig;
+ private VelocityEngine engine;
+
+ public GUIFormBuilderImpl() throws GUIBuildException {
+ try {
+ engine = VelocityProvider.getClassPathVelocityEngine();
+
+ } catch (Exception e) {
+ Logger.fatal("Initialization of Velocity-Engine to render GUI components FAILED.", e);
+ throw new GUIBuildException("Initialization of Velocity-Engine to render GUI components FAILED.", e);
+
+ }
+
+ }
+
+ public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config, String loggerName) throws GUIBuildException {
+ build(httpResp, config, getInternalContentType(config), loggerName);
+
+ }
+
+
+ @Override
+ public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config,
+ String contentType, String loggerName) throws GUIBuildException {
+
+ InputStream is = null;
+ try {
+ String viewName = config.getViewName();
+
+ //load Tempate
+ is = getInternalTemplate(config);
+ if (is == null) {
+ Logger.warn("No GUI with viewName:" + viewName + " FOUND.");
+ throw new GUIBuildException("No GUI with viewName:" + viewName + " FOUND.");
+
+ }
+
+ //build Velocity Context from input paramters
+ VelocityContext context = buildContextFromViewParams(config.getViewParameters());
+
+ //evaluate template
+ StringWriter writer = new StringWriter();
+ engine.evaluate(context, writer, loggerName, new BufferedReader(new InputStreamReader(is)));
+
+ //write template to response
+ httpResp.setStatus(HttpServletResponse.SC_OK);
+ httpResp.setContentType(contentType);
+ httpResp.getOutputStream().write(writer.toString().getBytes("UTF-8"));
+
+ } catch (IOException e) {
+ Logger.error("GUI form-builder has an internal error.", e);
+ throw new GUIBuildException("GUI form-builder has an internal error.", e);
+
+ } finally {
+ if (is != null)
+ try {
+ is.close();
+
+ } catch (IOException e) {
+ Logger.error("Can NOT close GUI-Template InputStream.", e);
+
+ }
+ }
+
+ }
+
+ private String getInternalContentType(IGUIBuilderConfiguration config) {
+ if (MiscUtil.isEmpty(config.getDefaultContentType()))
+ return DEFAULT_CONTENT_TYPE;
+
+ else
+ return config.getDefaultContentType();
+
+ }
+
+ private InputStream getInternalTemplate(IGUIBuilderConfiguration config) throws GUIBuildException {
+ String viewName = config.getViewName();
+
+ //load specific template
+ InputStream is = config.getTemplate(viewName);
+
+ if (is == null) {
+ //load template from default resources
+ try {
+ Logger.trace("Loading GUI template:" + viewName + " from default resources ... ");
+ String pathLocation = null;
+ try {
+ //load template from config directory
+ String rootconfigdir = authConfig.getRootConfigFileDir();
+ pathLocation = rootconfigdir + CONFIG_HTMLTEMPLATES_DIR +
+ viewName;
+ File file = new File(new URI(pathLocation));
+ is = new FileInputStream(file);
+
+ } catch (Exception e) {
+ //load template from classpath as backup
+ Logger.info("GUI template:" + viewName + " is not found in configuration directory. "
+ + " Load template from project library ... ");
+ try {
+ pathLocation = getInternalClasspathTemplateDir(config) + viewName;
+ is = Thread.currentThread()
+ .getContextClassLoader()
+ .getResourceAsStream(pathLocation);
+
+ } catch (Exception e1) {
+ Logger.error("GUI template:" + pathLocation + " is NOT loadable!", e);
+ throw new GUIBuildException("GUI template:" + pathLocation + " is NOT loadable!", e);
+
+ }
+ }
+
+ } catch (GUIBuildException e) {
+ throw e;
+
+ } catch (Exception e) {
+ Logger.error("GUI builder has an internal error during template load operation", e);
+ throw new GUIBuildException("GUI builder has an internal error during template load operation", e);
+
+ }
+ }
+
+ return is;
+
+ }
+
+
+ /**
+ * @return
+ */
+ private String getInternalClasspathTemplateDir(IGUIBuilderConfiguration config) {
+ String dir = config.getClasspathTemplateDir();
+ if (dir != null) {
+ if (!dir.endsWith("/"))
+ dir += "/";
+
+ return dir;
+
+ } else
+ return CLASSPATH_HTMLTEMPLATES_DIR;
+ }
+
+ /**
+ * @param viewParams
+ * @return
+ */
+ private VelocityContext buildContextFromViewParams(Map<String, Object> viewParams) {
+ VelocityContext context = new VelocityContext();
+
+ if (viewParams != null) {
+ Iterator<Entry<String, Object>> interator = viewParams.entrySet().iterator();
+ while (interator.hasNext()) {
+ Entry<String, Object> el = interator.next();
+ context.put(el.getKey(), el.getValue());
+ }
+
+ }
+
+ return context;
+ }
+
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIBuilderConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIBuilderConfiguration.java
new file mode 100644
index 000000000..51f6295c7
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIBuilderConfiguration.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend.builder;
+
+import java.io.InputStream;
+import java.util.Map;
+
+/**
+ * @author tlenz
+ *
+ */
+public interface IGUIBuilderConfiguration {
+
+
+ /**
+ * Define the name of the template (with suffix) which should be used
+ *
+ * @return templatename, but never null
+ */
+ public String getViewName();
+
+ /**
+ * Define the parameters, which should be evaluated in the template
+ *
+ * @return Map of parameters, which should be added to template
+ */
+ public Map<String, Object> getViewParameters();
+
+
+ /**
+ * Get a specific classpath template-directory prefix, which is used
+ * to load a template from classpath by using <code>ClassLoader.getResourceAsStream(...)</code>
+ *
+ * @return Classpath directory, or null if the default directory should be used
+ */
+ public String getClasspathTemplateDir();
+
+ /**
+ * Get the GUI template with a specific name
+ *
+ * @param viewName Name of the template
+ * @return Tempate as <code>InputStream</code>, or null if default getTemplate method should be used
+ */
+ public InputStream getTemplate(String viewName);
+
+ /**
+ * Get the contentType, which should be set in HTTP response
+ * <br><br>
+ * <b>DefaultValue:</b> text/html;charset=UTF-8
+ *
+ * @return ContentType, or null if default ContentType should be used.
+ */
+ public String getDefaultContentType();
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIFormBuilder.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIFormBuilder.java
new file mode 100644
index 000000000..198220e97
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/IGUIFormBuilder.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend.builder;
+
+import javax.servlet.http.HttpServletResponse;
+
+import at.gv.egovernment.moa.id.auth.frontend.exception.GUIBuildException;
+
+/**
+ * @author tlenz
+ *
+ */
+public interface IGUIFormBuilder {
+
+ /**
+ * Parse a GUI template, with parameters into a http servlet-response
+ * and use the default http-response content-type.
+ * <br><br>
+ * The parser use the <code>VelocityEngine</code> as internal template evaluator.
+ *
+ * @param httpResp http-response object
+ * @param viewName Name of the template (with suffix), which should be used.
+ * The template is selected by using the <code>getTemplate(String viewName)</code> method
+ * @param viewParams Map of parameters, which should be added to template
+ * @param loggerName String, which should be used from logger
+ *
+ * @throws GUIBuildException
+ */
+ public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config, String loggerName) throws GUIBuildException;
+
+ /**
+ * Parse a GUI template, with parameters into a http servlet-response.
+ * <br><br>
+ * The parser use the <code>VelocityEngine</code> as internal template evaluator.
+ *
+ * @param httpResp http-response object
+ * @param viewName Name of the template (with suffix), which should be used.
+ * The template is selected by using the <code>getTemplate(String viewName)</code> method
+ * @param viewParams Map of parameters, which should be added to template
+ * @param contentType http-response content-type, which should be set
+ * @param loggerName String, which should be used from logger
+ *
+ * @throws GUIBuildException
+ */
+ void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config, String contentType,
+ String loggerName) throws GUIBuildException;
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/ServiceProviderSpecificGUIFormBuilderConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/ServiceProviderSpecificGUIFormBuilderConfiguration.java
new file mode 100644
index 000000000..0a5cdaf3e
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/ServiceProviderSpecificGUIFormBuilderConfiguration.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend.builder;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import at.gv.egovernment.moa.id.auth.frontend.utils.FormBuildUtils;
+import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants;
+import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters;
+import at.gv.egovernment.moa.id.commons.api.IRequest;
+import at.gv.egovernment.moa.id.commons.api.data.CPEPS;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServiceProviderSpecificGUIFormBuilderConfiguration extends AbstractGUIFormBuilderConfiguration {
+
+ public static final String VIEW_BKUSELECTION = "loginFormFull.html";
+ public static final String VIEW_SENDASSERTION = "sendAssertionFormFull.html";
+ public static final String VIEW_TEMPLATE_CSS = "css_template.css";
+ public static final String VIEW_TEMPLATE_JS = "javascript_tempalte.js";
+
+ public static final String PARAM_BKU_ONLINE = "bkuOnline";
+ public static final String PARAM_BKU_HANDY = "bkuHandy";
+ public static final String PARAM_BKU_LOCAL = "bkuLocal";
+
+ public static final String PARAM_OANAME = "OAName";
+ public static final String PARAM_COUNTRYLIST = "countryList";
+
+ private IRequest pendingReq = null;
+
+ /**
+ * @param authURL PublicURLPrefix of the IDP but never null
+ * @param viewName Name of the template (with suffix) but never null
+ * @param formSubmitEndpoint EndPoint on which the form should be submitted,
+ * or null if the form must not submitted
+ */
+ public ServiceProviderSpecificGUIFormBuilderConfiguration(String authURL, String viewName,
+ String formSubmitEndpoint) {
+ super(authURL, viewName, formSubmitEndpoint);
+
+ }
+
+ /**
+ * @param Current processed pending-request DAO but never null
+ * @param viewName Name of the template (with suffix) but never null
+ * @param formSubmitEndpoint EndPoint on which the form should be submitted,
+ * or null if the form must not submitted
+ */
+ public ServiceProviderSpecificGUIFormBuilderConfiguration(IRequest pendingReq, String viewName,
+ String formSubmitEndpoint) {
+ super(pendingReq.getAuthURL(), viewName, formSubmitEndpoint);
+ this.pendingReq = pendingReq;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewParameters()
+ */
+ @Override
+ public Map<String, Object> getSpecificViewParameters() {
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put(PARAM_BKU_ONLINE, IOAAuthParameters.ONLINEBKU);
+ params.put(PARAM_BKU_HANDY, IOAAuthParameters.HANDYBKU);
+ params.put(PARAM_BKU_LOCAL, IOAAuthParameters.LOCALBKU);
+
+ if (pendingReq != null) {
+ params.put(PARAM_PENDINGREQUESTID, pendingReq.getRequestID());
+
+ //add service-provider specific GUI parameters
+ IOAAuthParameters oaParam = pendingReq.getOnlineApplicationConfiguration();
+ if (oaParam != null) {
+ params.put(PARAM_OANAME, oaParam.getFriendlyName());
+
+
+ if (oaParam.isShowStorkLogin())
+ addCountrySelection(params, oaParam);
+
+ FormBuildUtils.customiceLayoutBKUSelection(params, oaParam);
+
+ } else
+ FormBuildUtils.defaultLayoutBKUSelection(params);
+
+
+ } else {
+ //add default GUI parameters
+ FormBuildUtils.defaultLayoutBKUSelection(params);
+
+ }
+
+ return params;
+ }
+
+ /**
+ * @param params
+ * @param oaParam
+ */
+ private void addCountrySelection(Map<String, Object> params, IOAAuthParameters oaParam) {
+ String pepslist = "";
+ try {
+ for (CPEPS current : oaParam.getPepsList()) {
+ String countryName = null;
+ if (MiscUtil.isNotEmpty(MOAIDAuthConstants.COUNTRYCODE_XX_TO_NAME.get(current.getCountryCode().toUpperCase())))
+ countryName = MOAIDAuthConstants.COUNTRYCODE_XX_TO_NAME.get(current.getCountryCode().toUpperCase());
+ else
+ countryName = current.getCountryCode().toUpperCase();
+
+ pepslist += "<option value=" + current.getCountryCode() + ">"
+ + countryName
+ + "</option>\n";
+
+ }
+ params.put(PARAM_COUNTRYLIST, pepslist);
+
+ } catch (NullPointerException e) {
+ Logger.warn("Can not at Countries to GUI. Msg:" + e.getMessage());
+
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.AbstractGUIFormBuilder#getClasspathTemplateDir()
+ */
+ @Override
+ public String getClasspathTemplateDir() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.AbstractGUIFormBuilder#getTemplate(java.lang.String)
+ */
+ @Override
+ public InputStream getTemplate(String viewName) {
+ if (pendingReq != null && pendingReq.getOnlineApplicationConfiguration() != null) {
+
+ byte[] oatemplate = null;
+ if (VIEW_BKUSELECTION.equals(viewName))
+ oatemplate = pendingReq.getOnlineApplicationConfiguration().getBKUSelectionTemplate();
+
+ else if (VIEW_SENDASSERTION.equals(viewName))
+ oatemplate = pendingReq.getOnlineApplicationConfiguration().getSendAssertionTemplate();
+
+ // OA specific template requires a size of 8 bits minimum
+ if (oatemplate != null && oatemplate.length > 7)
+ return new ByteArrayInputStream(oatemplate);
+ }
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.auth.frontend.AbstractGUIFormBuilder#getDefaultContentType()
+ */
+ @Override
+ public String getDefaultContentType() {
+ return null;
+ }
+
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/exception/GUIBuildException.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/exception/GUIBuildException.java
new file mode 100644
index 000000000..fff458546
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/exception/GUIBuildException.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egovernment.moa.id.auth.frontend.exception;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GUIBuildException extends Exception {
+
+ private static final long serialVersionUID = -278663750102498205L;
+
+ /**
+ * @param string
+ */
+ public GUIBuildException(String msg) {
+ super(msg);
+
+ }
+
+ public GUIBuildException(String msg, Throwable e) {
+ super(msg, e);
+
+ }
+
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/utils/FormBuildUtils.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/utils/FormBuildUtils.java
new file mode 100644
index 000000000..71093a4d3
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/utils/FormBuildUtils.java
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ *******************************************************************************/
+package at.gv.egovernment.moa.id.auth.frontend.utils;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+public class FormBuildUtils {
+
+ private static Map<String, String> defaultmap = null;
+
+ public static String PARAM_MAIN_BACKGROUNDCOLOR = "MAIN_BACKGOUNDCOLOR";
+ public static String PARAM_MAIN_COLOR = "MAIN_COLOR";
+ public static String PARAM_HEADER_BACKGROUNDCOLOR = "HEADER_BACKGROUNDCOLOR";
+ public static String PARAM_HEADER_COLOR = "HEADER_COLOR";
+ public static String PARAM_BUTTON_BACKGROUNDCOLOR = "BUTTON_BACKGROUNDCOLOR";
+ public static String PARAM_BUTTON_BACKGROUNDCOLOR_FOCUS = "BUTTON_BACKGROUNDCOLOR_FOCUS";
+ public static String PARAM_BUTTON_COLOR = "BUTTON_COLOR";
+ public static String PARAM_FONTFAMILY = "FONTTYPE";
+ public static String PARAM_HEADER_TEXT = "HEADER_TEXT";
+ public static String PARAM_REDIRECTTARGET = "REDIRECTTARGET";
+ public static String PARAM_APPLET_HEIGHT = "APPLETHEIGHT";
+ public static String PARAM_APPLET_WIDTH = "APPLETWIDTH";
+
+ private static String PARAM_MANDATEVISIBLE = "MANDATEVISIBLE";
+ private static String PARAM_MANDATECHECKED = "MANDATECHECKED";
+
+ private static String PARAM_STORKVISIBLE = "STORKVISIBLE";
+
+ private static final String TEMPLATEVISIBLE = " display: none";
+ private static final String TEMPLATEDISABLED = "disabled=\"true\"";
+ private static final String TEMPLATECHECKED = "checked=\"true\"";
+ private static final String TEMPLATE_ARIACHECKED = "aria-checked=";
+
+
+ static {
+ if (defaultmap == null) {
+ defaultmap = new HashMap<String, String>();
+ defaultmap.put(PARAM_MAIN_BACKGROUNDCOLOR, "#F7F8F7");
+ defaultmap.put(PARAM_MAIN_COLOR, "#000000");
+
+ defaultmap.put(PARAM_HEADER_BACKGROUNDCOLOR, "#C3D2E2");
+ defaultmap.put(PARAM_HEADER_COLOR, "#000000");
+ defaultmap.put(PARAM_HEADER_TEXT, "Login");
+
+ defaultmap.put(PARAM_BUTTON_BACKGROUNDCOLOR, "#EBEBEB");
+ defaultmap.put(PARAM_BUTTON_BACKGROUNDCOLOR_FOCUS, "#EBEBEB");
+ defaultmap.put(PARAM_BUTTON_COLOR, "#000000");
+
+ defaultmap.put(PARAM_FONTFAMILY, "Verdana,Geneva,Arial,sans-serif");
+
+ defaultmap.put(PARAM_REDIRECTTARGET, "_top");
+ }
+ }
+
+ public static void customiceLayoutBKUSelection(Map<String, Object> params, IOAAuthParameters oaParam) {
+
+ if (oaParam.isShowMandateCheckBox())
+ params.put(PARAM_MANDATEVISIBLE, "");
+ else
+ params.put(PARAM_MANDATEVISIBLE, TEMPLATEVISIBLE);
+
+ if (oaParam.isOnlyMandateAllowed()) {
+ params.put(PARAM_MANDATECHECKED, TEMPLATECHECKED + " " +
+ TEMPLATEDISABLED + " " +TEMPLATE_ARIACHECKED + "\"true\"");
+
+ } else
+ params.put(PARAM_MANDATECHECKED, TEMPLATE_ARIACHECKED + "\"false\"");
+
+ if (oaParam.isShowStorkLogin())
+ params.put(PARAM_STORKVISIBLE, "");
+ else
+ params.put(PARAM_STORKVISIBLE, TEMPLATEVISIBLE);
+
+ //add more SP specific infos
+ setFormCustomizatenFromSP(params, oaParam);
+
+ //format parameter-value for fontss
+ String fonttype = (String) params.get(PARAM_FONTFAMILY);
+ if (MiscUtil.isNotEmpty(fonttype)) {
+ String[] fonttypeList = fonttype.split(",");
+ String fonttypeformated = "\"" + fonttypeList[0].trim().replace("\"", "") + "\"";
+
+ for (int i=1; i<fonttypeList.length; i++) {
+ fonttypeformated += ",\"" + fonttypeList[i].trim().replace("\"", "") + "\"";
+ }
+
+ params.put(PARAM_FONTFAMILY, fonttypeformated);
+ }
+
+ }
+
+ public static Map<String, String> getDefaultMap() {
+ return defaultmap;
+ }
+
+ /**
+ * @param value
+ * @return
+ */
+ public static void defaultLayoutBKUSelection(Map<String, Object> params) {
+ params.put(PARAM_MANDATEVISIBLE, TEMPLATEVISIBLE);
+ params.put(PARAM_MANDATECHECKED, TEMPLATE_ARIACHECKED + "\"false\"");
+ params.put(PARAM_STORKVISIBLE, TEMPLATEVISIBLE);
+
+ params.putAll(getDefaultMap());
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getFormCustomizaten()
+ */
+ private static void setFormCustomizatenFromSP(Map<String, Object> params, IOAAuthParameters spConfig) {
+ params.putAll(FormBuildUtils.getDefaultMap());
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR)))
+ params.put(FormBuildUtils.PARAM_MAIN_BACKGROUNDCOLOR, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR)))
+ params.put(FormBuildUtils.PARAM_BUTTON_BACKGROUNDCOLOR, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS)))
+ params.put(FormBuildUtils.PARAM_BUTTON_BACKGROUNDCOLOR_FOCUS, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR)))
+ params.put(FormBuildUtils.PARAM_BUTTON_COLOR, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE)))
+ params.put(FormBuildUtils.PARAM_FONTFAMILY, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR)))
+ params.put(FormBuildUtils.PARAM_MAIN_COLOR, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR)))
+ params.put(FormBuildUtils.PARAM_HEADER_BACKGROUNDCOLOR, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR)))
+ params.put(FormBuildUtils.PARAM_HEADER_COLOR, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT)))
+ params.put(FormBuildUtils.PARAM_HEADER_TEXT, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET)))
+ params.put(FormBuildUtils.PARAM_REDIRECTTARGET, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT)))
+ params.put(FormBuildUtils.PARAM_APPLET_HEIGHT, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT));
+
+ if (MiscUtil.isNotEmpty(spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH)))
+ params.put(FormBuildUtils.PARAM_APPLET_WIDTH, spConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH));
+
+ }
+
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityLogAdapter.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityLogAdapter.java
new file mode 100644
index 000000000..3d5c5ed2f
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityLogAdapter.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ *******************************************************************************/
+package at.gv.egovernment.moa.id.auth.frontend.velocity;
+
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.runtime.RuntimeServices;
+import org.apache.velocity.runtime.log.LogChute;
+
+import at.gv.egovernment.moa.logging.Logger;
+
+public class VelocityLogAdapter implements LogChute {
+
+ public VelocityLogAdapter() {
+ try
+ {
+ /*
+ * register this class as a logger with the Velocity singleton
+ * (NOTE: this would not work for the non-singleton method.)
+ */
+ Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM, this );
+ Velocity.init();
+ }
+ catch (Exception e)
+ {
+ Logger.error("Failed to register Velocity logger");
+ }
+ }
+
+ public void init(RuntimeServices arg0) throws Exception {
+ }
+
+ public boolean isLevelEnabled(int arg0) {
+ switch(arg0) {
+ case LogChute.DEBUG_ID:
+ return Logger.isDebugEnabled();
+ case LogChute.TRACE_ID:
+ return Logger.isTraceEnabled();
+ default:
+ return true;
+ }
+ }
+
+ public void log(int arg0, String arg1) {
+ switch(arg0) {
+ case LogChute.DEBUG_ID:
+ Logger.debug(arg1);
+ break;
+ case LogChute.TRACE_ID:
+ Logger.trace(arg1);
+ break;
+ case LogChute.INFO_ID:
+ Logger.info(arg1);
+ break;
+ case LogChute.WARN_ID:
+ Logger.warn(arg1);
+ break;
+ case LogChute.ERROR_ID:
+ default:
+ Logger.error(arg1);
+ break;
+ }
+ }
+
+ public void log(int arg0, String arg1, Throwable arg2) {
+ switch(arg0) {
+ case LogChute.DEBUG_ID:
+ case LogChute.TRACE_ID:
+ case LogChute.INFO_ID:
+ case LogChute.WARN_ID:
+ Logger.warn(arg1, arg2);
+ break;
+ case LogChute.ERROR_ID:
+ default:
+ Logger.error(arg1, arg2);
+ break;
+ }
+ }
+
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityProvider.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityProvider.java
new file mode 100644
index 000000000..022c144f0
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/velocity/VelocityProvider.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ ******************************************************************************/
+/*
+ * Copyright 2011 by Graz University of Technology, Austria
+ * The Austrian STORK Modules have been developed by the E-Government
+ * Innovation Center EGIZ, a joint initiative of the Federal Chancellery
+ * Austria and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+
+
+/**
+ *
+ */
+package at.gv.egovernment.moa.id.auth.frontend.velocity;
+
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.runtime.RuntimeConstants;
+
+/**
+ * Gets a Velocity Engine
+ *
+ * @author bzwattendorfer
+ *
+ */
+public class VelocityProvider {
+
+ /**
+ * Gets velocityEngine from Classpath
+ * @return VelocityEngine
+ * @throws Exception
+ */
+ public static VelocityEngine getClassPathVelocityEngine() throws Exception {
+ VelocityEngine velocityEngine = getBaseVelocityEngine();
+ velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+ velocityEngine.setProperty("classpath.resource.loader.class",
+ "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
+
+
+ velocityEngine.init();
+
+ return velocityEngine;
+ }
+
+ /**
+ * Gets VelocityEngine from File
+ * @param rootPath File Path to template file
+ * @return VelocityEngine
+ * @throws Exception
+ */
+ public static VelocityEngine getFileVelocityEngine(String rootPath) throws Exception {
+ VelocityEngine velocityEngine = getBaseVelocityEngine();
+ velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
+ velocityEngine.setProperty("file.resource.loader.class",
+ "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
+ velocityEngine.setProperty("file.resource.loader.path", rootPath);
+
+ velocityEngine.init();
+
+ return velocityEngine;
+ }
+
+ /**
+ * Gets a basic VelocityEngine
+ * @return VelocityEngine
+ */
+ private static VelocityEngine getBaseVelocityEngine() {
+ VelocityEngine velocityEngine = new VelocityEngine();
+ velocityEngine.setProperty(RuntimeConstants.INPUT_ENCODING, "UTF-8");
+ velocityEngine.setProperty(RuntimeConstants.OUTPUT_ENCODING, "UTF-8");
+ velocityEngine.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
+ "org.apache.velocity.runtime.log.SimpleLog4JLogSystem");
+
+ return velocityEngine;
+ }
+
+}
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoBKA.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoBKA.png
new file mode 100644
index 000000000..6a92647fd
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoBKA.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoEGIZ.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoEGIZ.png
new file mode 100644
index 000000000..39f05d131
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/LogoEGIZ.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/logo_digAT.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/logo_digAT.png
new file mode 100644
index 000000000..4f36681e2
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/logo_digAT.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/main.css b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/main.css
new file mode 100644
index 000000000..6bd964346
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/common/main.css
@@ -0,0 +1,253 @@
+html {
+ font-family: "Roboto", sans-serif;
+ color: #000;
+ font-weight:300;
+}
+
+.container {
+ margin: auto;
+ max-width: 1000px;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+
+body {
+ margin: 0;
+ padding: 0;
+ letter-spacing: 0.05em;
+}
+
+h1
+{
+font-family: "Roboto", sans-serif;
+}
+
+#headline {
+ /*background: linear-gradient(center top , #FAFAFA, #F5F5F5) repeat scroll 0% 0% transparent;*/
+ background: linear-gradient(#FAFAFA, #F5F5F5);
+ border-bottom: 1px solid #EEE;
+}
+
+#headline br {
+ clear: both;
+}
+
+#headline h1 {
+ color: #404040;
+ padding-right: 1em;
+ padding-top: 0.3em;
+ margin-bottom: 0;
+ float: right;
+ font-size: 220%;
+ font-weight: 400;
+ }
+#headline img {
+ width: 300px;
+ padding-left: 0;
+ padding-top: 35px;
+ padding-bottom:20px;
+ }
+
+#description {
+ text-align: justify;
+}
+
+#maincontent {
+ height: 13em;
+}
+
+#demologin p {
+ padding-left: 10px;
+ padding-right: 10px;
+ text-align: justify;
+ font-size: 100%;
+ color: #000;
+ padding-top:20px;
+
+}
+
+#demologin a{
+
+}
+
+.button {
+ border-radius: 5px;
+ /*background-color: rgb(41,127,184); */
+ background-color: #E10319;
+ text-decoration: none;
+ text-transform: uppercase;
+ padding: 10px 80px 10px 80px;
+ letter-spacing: 1.5px;
+ text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.3);
+ color: WHITE;
+ box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
+ margin-left: 10px;
+}
+
+.button:hover {
+ box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.8);
+ text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.9);
+}
+
+#singlelogout {
+ clear: both;
+ width: 100%;
+ box-sizing: border-box;
+
+}
+a{
+ text-decoration: none;
+ font-size:100%;
+ color: #666;
+}
+a:hover{
+ text-decoration: none;
+ font-size:100%;
+ color: #E10319;
+}
+
+/*****************************/
+@media ( max-width :599px) {
+ #headline {
+ /*background: linear-gradient(center top , #FAFAFA, #F5F5F5) repeat scroll 0% 0% transparent;*/
+ background: linear-gradient(#FAFAFA, #F5F5F5);
+ border-bottom: 1px solid #EEE;
+ }
+
+ #headline img {
+ width: 150px;
+ padding-left: 0;
+ padding-top: 0.5em;
+ padding-bottom:0.5em;
+ }
+ #headline br {
+ clear: both;
+ }
+ #headline h1 {font-family: "Roboto", sans-serif;
+ color: #404040;
+ padding: 0;
+ margin-bottom: 0;
+ margin-top: 0;
+ text-align: center;
+ }
+ nav {
+ display: block;
+ width: 100%;
+ text-align: center;
+ box-sizing: border-box;
+ color: WHITE;
+ margin: 0px 0px 0px 0px;
+ overflow: hidden;
+
+ }
+ nav ul {
+ margin: 0;
+ padding: 0;
+ }
+ nav ul li {
+ list-style-type: none;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ }
+ nav>ul>li>a {
+ color: #666;
+ display: block;
+ text-decoration: none;
+ }
+ nav>ul>li:hover {
+ color: #404040;
+ }
+ nav>ul>li:hover>a {
+ color: #404040;
+ }
+ nav>ul>li:active>a {
+ color: #404040;
+ }
+ #demologin {
+ width: 100%;
+ box-sizing: border-box;
+ border: 1px solid;
+ border-radius: 1px;
+ border-color: #818286;
+ background: #F5F5F5;
+ height: 182px;
+ width: 242px;
+ margin-top: 18px;
+ padding-left:0;
+ }
+}
+/*****************************/
+@media ( min-width :600px) {
+ #headline {
+ /*background: linear-gradient(center top , #FAFAFA, #F5F5F5) repeat scroll 0% 0% transparent;*/
+ background: linear-gradient(#FAFAFA, #F5F5F5);
+ border-bottom: 1px solid #EEE;
+
+ }
+ #headline br {
+ clear: both;
+ }
+
+ #headline h1 {
+ color: #404040;
+ padding-right: 1em;
+ padding-top: 0.15em;
+ margin-bottom: 0;
+ float: right;
+ }
+ #headline img {
+ width: 300px;
+ padding-left: 0;
+ padding-top: 35px;
+ padding-bottom:20px;
+ }
+ nav {
+ display: block;
+ float: left;
+ width: 30%;
+ box-sizing: border-box;
+ background-color: #fff;
+ color: #888;
+ margin: 8px 0px 8px 0px;
+ overflow: hidden;
+ }
+ nav ul {
+ margin: 0;
+ padding: 0;
+ }
+ nav ul li {
+ list-style-type: none;
+ padding-top: 15px;
+ }
+ nav>ul>li>a {
+ color: #666;
+ display: block;
+ text-decoration: none;
+ }
+ nav>ul>li:hover {
+ color: #E10319;
+ }
+ nav>ul>li:hover>a {
+ color: #E10319;
+ }
+ nav>ul>li:active>a {
+ color: #E10319;
+ }
+ #demologin {
+ float: right;
+ width: 50%;
+ box-sizing: border-box;
+ border: 1px solid;
+ border-radius: 1px;
+ border-color: #818286;
+ background: #F5F5F5;
+ height: 282px;
+ width: 342px;
+ margin-right: 150px;
+ margin-top: 18px;
+ padding-left:0;
+ }
+ #demologin a:hover{
+ color:white;
+ }
+} \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/bk_aktivieren.jpg b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/bk_aktivieren.jpg
new file mode 100644
index 000000000..a6436dc72
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/bk_aktivieren.jpg
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handy_deprecated.gif b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handy_deprecated.gif
new file mode 100644
index 000000000..5aeb542db
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handy_deprecated.gif
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handysign.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handysign.png
new file mode 100644
index 000000000..2c3645774
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/handysign.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte.png
new file mode 100644
index 000000000..5dfa694ca
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deactivated.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deactivated.png
new file mode 100644
index 000000000..5775734f2
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deactivated.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deprecated.gif b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deprecated.gif
new file mode 100644
index 000000000..ee9ab7cad
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/karte_deprecated.gif
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/logo.jpg b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/logo.jpg
new file mode 100644
index 000000000..bafbccc84
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/logo.jpg
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/mobile-bku_deprecated.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/mobile-bku_deprecated.png
new file mode 100644
index 000000000..697514273
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/mobile-bku_deprecated.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku-deactivated_deprecated.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku-deactivated_deprecated.png
new file mode 100644
index 000000000..c2145f12a
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku-deactivated_deprecated.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku_deprecated.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku_deprecated.png
new file mode 100644
index 000000000..d7d524999
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/online-bku_deprecated.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/stork-logo.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/stork-logo.png
new file mode 100644
index 000000000..70355a084
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/stork-logo.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/valid-html5-blue.png b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/valid-html5-blue.png
new file mode 100644
index 000000000..91ebe3e87
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/valid-html5-blue.png
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/w3cvalidhtml5.jpg b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/w3cvalidhtml5.jpg
new file mode 100644
index 000000000..2cd65412e
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/img/w3cvalidhtml5.jpg
Binary files differ
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/index.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/index.html
new file mode 100644
index 000000000..d2e7d1e1b
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/index.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=utf8" >
+ <title>MOA-ID 3.1.x</title>
+ <link rel="stylesheet" href="./common/main.css" type="text/css">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:300,400' rel='stylesheet' type='text/css'>
+ <script language="JavaScript" type="text/javascript">
+
+ function PVP2LoginIframe(url) {
+ var el = document.getElementById("demologin");
+ var iframe = document.createElement("iframe");
+ iframe.setAttribute("src", url);
+ iframe.setAttribute("width", "240");
+ iframe.setAttribute("height", "180");
+ iframe.setAttribute("frameborder", "0");
+ iframe.setAttribute("scrolling", "no");
+ iframe.setAttribute("title", "Login");
+ //iframe.setAttribute("scrolling", "yes");
+
+ iframe.setAttribute("name", "iframelogin");
+ iframe.setAttribute("id", "iframelogin");
+
+
+ iframe.setAttribute("onload","iframeLoaded()");
+
+ var divdemologin = document.getElementById("demologin");
+ divdemologin.innerHTML="";
+
+ el.appendChild(iframe, el);
+ }
+
+ function iframeLoaded(){
+ //console.log(document.title);
+ var ifr=document.getElementById("iframelogin");
+
+ //only works on same origin
+
+ /*
+ var iframedoc=(ifr.contentWindow||ifr.contentDocument);
+
+ //var iframedoc=ifr.contentDocument||iframe.contentWindow.document;
+ console.log(iframedoc.title);
+ if(iframedoc.title=="Demo Applikation"){
+ ifr.setAttribute("width",480);
+ ifr.setAttribute("height",240);
+
+ var demologin=document.getElementById("demologin");
+ demologin.style.marginRight="250px";
+ }
+ */
+ }
+
+ </script>
+ </head>
+ <body>
+ <div id="headline">
+ <div class="container">
+ <a href="http://www.digitales.oesterreich.gv.at/"><img src="./common/logo_digAT.png"/></a>
+ <a href="../index.html"><h1>MOA-ID-AUTH </h1></a>
+ <br/>
+ </div>
+ </div>
+ <div id="description" class="container">
+ <p>Bei MOA-ID-AUTH handelt es sich um ein Modul für die Identifizierung und Authentifizierung bei Onlineapplikationen unter Verwendung der Bürgerkarte.
+ Hier kann sowohl die Smartcard-Variante (e-Card) als auch die Handysignatur verwendet werden.
+ Die Konfiguration des Modules MOA-ID-Auth erfolgt mit Hilfe des Zusatzmodules MOA-ID-Configuration welches eine web-basierte Konfigurationsschnittstelle zur Verfügung stellt.</p>
+ </div>
+ <div id="maincontent" class="container">
+ <nav>
+ <ul>
+ <!--li><a href="_index.html">Allgemein</a></li-->
+ <!--li><a href="http://joinup.ec.europa.eu/site/moa-idspss/">Dokumentation</a></li-->
+ <li><a href="http://joinup.ec.europa.eu/site/moa-idspss/moa-id-3.x/doc/handbook">Dokumentation</a></li>
+ <!--Link zu den Demo-Clients-->
+ <li><a href=#>Demo Clients</a></li>
+ <!--Link zum Konfigtool-->
+ <li><a href="https://localhost:8443/moa-id-configuration">Konfiguration GUI</a></li>
+ <li><a href="./TransferSSOSession">Transfer Single Sign-On Session to Smartphone App</a></li>
+
+ </ul>
+ </nav>
+ <div id="demologin" class="container">
+ <br/>
+ <a href="#" id="loginButton" class="button" onClick="PVP2LoginIframe('https://menja.iaik.tugraz.at:8443/moa-id-oa/servlet/pvp2login')">Login</a>
+ <p id="loginText">Über den Login-Button können Sie sich anschließend bei Ihrer Online-Applikation mit der Bürgerkarte oder der Handysignatur anmelden. Dazu müssen Sie allerdings zuvor die Applikation gemäß <a href="http://joinup.ec.europa.eu/site/moa-idspss/moa-id-3.x/doc/handbook/application/application.html#DemoApp_pvp21">Beschreibung</a> konfigurieren.</p>
+ </div>
+ </div>
+
+ </body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_bk.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_bk.html
new file mode 100644
index 000000000..708be703b
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_bk.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="de">
+ <head>
+ <title>Information</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <link rel="stylesheet" type="text/css" href="css/index.css">
+ </head>
+ <body>
+ <div id="wrapper">
+ <p id="skiplinks">
+ <a href="#content">Zum Inhalt springen</a>
+ </p>
+ <div id="banner">
+ <!-- [OPTIONAL] Aendern Sie hier die Titelueberschrift der Seite) -->
+ <div id="bannerleft">
+ <h1>MOA-Template zur Bürgerkartenauswahl (Musterseite)</h1>
+ <!-- Meldung im Browser, wenn JavaScript nicht aktiviert -->
+ <noscript>
+ <p>
+ Bitte aktivieren Sie JavaScript.
+ </p>
+ </noscript>
+ </div>
+ <!-- [OPTIONAL] Aendern Sie hier das Logo der Seite (und Alternativtext fuer das Bild) -->
+ <div id="bannerright">
+ <img src="img/logo.jpg" alt="Logo">
+ </div>
+ </div>
+ <div id="main">
+ <div id="centercontent">
+ <h2 id="contentheader" class="dunkel">
+ Informationen zur B&uuml;rgerkarte
+ </h2>
+ <div id="content" class="hell">
+ <p>
+ <B>Hinweis:</B>
+ F&uuml;r nat&uuml;rliche Personen ist beim Login mit B&uuml;rgerkarte keine Erstanmeldung erforderlich.
+ </p>
+ <p>
+ Um mit der B&uuml;rgerkarte einsteigen zu k&ouml;nnen, ben&ouml;tigen Sie:
+ </p>
+ <ul>
+ <li>
+ eine Chipkarte, die f&uuml;r die Verwendung als B&uuml;rgerkarte geeignet ist, wie zum Beispiel Ihre e-card, Bankomatkarte oder Signaturkarte von A-Trust
+ </li>
+ <li>
+ einen Kartenleser mit den dazugeh&ouml;rigen Treibern
+ </li>
+ <li>
+ eine B&uuml;rgerkartensoftware (BKU)
+ </li>
+ </ul>
+ <p>&nbsp;</p>
+ <p>oder</p>
+ <ul>
+ <li>
+ ein Mobiltelefon, das zur Nutzung als Handysignatur registriert ist.
+ </li>
+ </ul>
+<p>&nbsp;
+ </p>
+<p>Als B&uuml;rgerkartensoftware stehen Ihnen folgende drei Varianten zur Verf&uuml;gung:
+ </p>
+ <ul>
+ <li><i>Lokale BKU</i>: Diese Software wird lokal auf Ihrem Computer installiert. Die Software finden sie unter <a href="http://www.buergerkarte.at/download.de.php" target="_blank">http://www.buergerkarte.at/download.de.php</a>
+ </li>
+ <li><i>Online BKU</i>: Mit der Online BKU wird keine lokale B&uuml;rgerkartensoftware am PC ben&ouml;tigt. &Uuml;ber JAVA Technologien werden die ben&ouml;tigten Funktionen als Applet im Browser ausgef&uuml;hrt. Einzige Voraussetzung ist eine aktuelle JAVA Version (ab Java 6).
+ </li>
+ <li><i>Handysignatur</i>: Mit der Handysignatur k&ouml;nnen Sie sich mittels ihres Mobiltelefons anmelden. Voraussetzung ist eine vorherige Registrierung. Mehr Informationen hierzu finden Sie auf: <a href="https://www.handy-signatur.at/" target="_blank">https://www.handy-signatur.at/</a><br>
+ <br>
+ <b>Informationen zur B&uuml;rgerkarte finden Sie hier:</b>
+ </li>
+ </ul>
+ <ul>
+ <li>
+ <a href="http://www.digitales.oesterreich.gv.at" target="_blank">Digitales &Ouml;sterreich</a>: Informationen rund um E-Government
+ </li>
+ <li>
+ <a href="http://www.buergerkarte.at" target="_blank">B&uuml;rgerkarte</a>: Informationen zur B&uuml;rgerkarte
+ </li>
+ </ul>
+ <p>
+ <br>
+ <b>Hier bekommen Sie Ihre B&uuml;rgerkarte:</b>
+ </p>
+ <ul>
+ <li>
+ <a href="http://www.a-trust.at/" target="_blank">A-Trust</a>: Aktivieren der Bankomatkarte/e-card als B&uuml;rgerkarte oder Registrierung ihres Mobiltelefons als B&uuml;rgerkarte oder Ausstellung einer eigenen B&uuml;rgerkarte
+ </li>
+ </ul>
+ <p align="center">
+ <a href="javascript:history.back();" class="link_nav">zur&uuml;ck</a>
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_mandates.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_mandates.html
new file mode 100644
index 000000000..f5e935338
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_mandates.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="de">
+ <head>
+ <title>Information</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <link rel="stylesheet" type="text/css" href="css/index.css">
+ </head>
+ <body>
+ <div id="wrapper">
+ <p id="skiplinks">
+ <a href="#content">Zum Inhalt springen</a>
+ </p>
+ <div id="banner">
+ <!-- [OPTIONAL] Aendern Sie hier die Titelueberschrift der Seite) -->
+ <div id="bannerleft">
+ <h1>MOA-Template zur Bürgerkartenauswahl (Musterseite)</h1>
+ <!-- Meldung im Browser, wenn JavaScript nicht aktiviert -->
+ <noscript>
+ <p>
+ Bitte aktivieren Sie JavaScript.
+ </p>
+ </noscript>
+ </div>
+ <!-- [OPTIONAL] Aendern Sie hier das Logo der Seite (und Alternativtext fuer das Bild) -->
+ <div id="bannerright">
+ <img src="img/logo.jpg" alt="Logo">
+ </div>
+ </div>
+ <div id="main">
+ <div id="centercontent">
+ <h2 id="contentheader" class="dunkel">
+ Information zur Anmeldung mittels elektronischer Vollmacht
+ </h2>
+ <div id="content" class="hell">
+ <p>
+ <p>Aktivieren Sie das K&auml;stchen <input type="checkbox" checked="true" readonly="true" enabled="false"/> "in Vertretung anmelden",
+ wenn Sie sich als Vertreter f&uuml;r eine andere Person anmelden m&ouml;chten. Das Vollmachtenservice
+ der Stammzahlenregisterbeh&ouml;rde bietet Ihnen Ihre verf&uuml;gbaren Vollmachten zur Auswahl an.</p>
+
+
+ <p>Das Service zum Eintragen einer Vollmacht zwischen zwei nat&uuml;rlichen Personen k&ouml;nnen Sie
+ unter dem Hyperlink <a href="https://vollmachten.stammzahlenregister.gv.at/">Bilaterale Vollmacht</a>
+ eintragen.</p>
+
+ <p>Als Organwalter (gem&auml;&szlig; &sect; 5 Abs. 3 E-GovG) und berufsm&auml;&szlig;ige Parteinvertreter,
+ aktivieren Sie bitte ebenfalls das K&auml;stchen <input type="checkbox" checked="true" readonly="true" enabled="false"/> "in Vertretung anmelden".</p>
+
+
+ <p><span style="text-decoration: underline">Hinweis</span>: Welche Vollmachten Ihnen bei der jeweiligen
+ B&uuml;rgerkartenapplikation zur Verf&uuml;gung stehen, h&auml;ngt vom Anwendungsbetreiber ab.</p>
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_stork.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_stork.html
new file mode 100644
index 000000000..048f0ac78
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/info_stork.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="de">
+ <head>
+ <title>Information (STORK)</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <link rel="stylesheet" type="text/css" href="css/index.css">
+ </head>
+ <body>
+ <div id="wrapper">
+ <p id="skiplinks">
+ <a href="#content">Go to contents</a>
+ </p>
+ <div id="banner">
+ <!-- [OPTIONAL] Aendern Sie hier die Titelueberschrift der Seite) -->
+ <div id="bannerleft">
+ <h1>Information using STORK for secure authentication</h1>
+ <!-- Meldung im Browser, wenn JavaScript nicht aktiviert -->
+ <noscript>
+ <p>
+ Please activate JavaScript.
+ </p>
+ </noscript>
+ </div>
+ <!-- [OPTIONAL] Aendern Sie hier das Logo der Seite (und Alternativtext fuer das Bild) -->
+ <div id="bannerright">
+ <img src="img/stork-logo.png" alt="STORK-Logo">
+ </div>
+ </div>
+ <div id="main">
+ <h2 id="contentheader" class="dunkel">
+ Information using STORK for secure authentication
+ </h2>
+ <div id="content" class="hell">
+
+ <p>The STORK project makes it easier for citizens to access online public services across borders by implementing Europe-wide interoperable cross border platforms for the mutual recognition of national electronic identity (eID) between participating countries.</p>
+ <p>For more information, please consult the STORK website:</p><a href="https://www.eid-stork2.eu/">https://www.eid-stork2.eu/</a>
+ </div>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/moa_errorcodes.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/moa_errorcodes.html
new file mode 100644
index 000000000..a5702d60d
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/moa_errorcodes.html
@@ -0,0 +1,333 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" >
+ <title>MOA-ID 2.0.x</title>
+ <link rel="stylesheet" href="./common/MOA.css" type="text/css">
+</head>
+<body>
+<h2>&Uuml;bersicht der m&ouml;glichen MOA-ID spezifischen Statuscodes
+</h2>
+<h3><a name="statuscodes_1xxxx" id="allgemeines_zugangspunkte7"></a>1.3.1 Statuscodes 1xxxx</h3>
+<p>Alle Statuscodes beginnent mit der Zahl eins beschreiben Fehler welche w&auml;hrend des Identifizerungs- und Authentifizierungsvorgangs aufgetreten sind.</p>
+<h4><a name="statuscodes_10xxx" id="allgemeines_zugangspunkte11"></a>1.3.1.1 Authentifizierung (10xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="1000" id="allgemeines_zugangspunkte"></a>1000</td>
+ <td>Anmeldung an der angeforderten Online-Applikation wird nicht unterst&uuml;tzt.</td>
+ </tr>
+ <tr>
+ <td><a name="1001" id="allgemeines_zugangspunkte2"></a>1001</td>
+ <td>Es ist bereits eine Anmeldung im Gange.</td>
+ </tr>
+ <tr>
+ <td><a name="1002" id="allgemeines_zugangspunkte3"></a>1002</td>
+ <td>Fehlerhafter Parameter</td>
+ </tr>
+ <tr>
+ <td><a name="1003" id="allgemeines_zugangspunkte4"></a>1003</td>
+ <td>Anfrage nur &uuml;ber https m&ouml;glich</td>
+ </tr>
+ <tr>
+ <td><a name="1004" id="allgemeines_zugangspunkte5"></a>1004</td>
+ <td>Zertifikat konnte nicht ausgelesen werden</td>
+ </tr>
+ <tr>
+ <td><a name="1005" id="allgemeines_zugangspunkte6"></a>1005</td>
+ <td>Die Authentifizierung wurde durch den Benutzer abgebrochen</td>
+ </tr>
+ <tr>
+ <td><a name="1006" id="allgemeines_zugangspunkte25"></a>1006</td>
+ <td>Vollmachtsmodus f&uuml;r nicht-&ouml;ffentlichen Bereich wird nicht unterst&uuml;tzt.</td>
+ </tr>
+ <tr>
+ <td><a name="1007" id="allgemeines_zugangspunkte26"></a>1007</td>
+ <td>Vollmachtsmodus f&uuml;r ausl&auml;ndische Personen wird nicht unterst&uuml;tzt.</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_11xxx" id="allgemeines_zugangspunkte12"></a>1.3.1.2 Validierung (11xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="1100" id="allgemeines_zugangspunkte27"></a>1100</td>
+ <td>Ung&uuml;ltige MOA SessionID</td>
+ </tr>
+ <tr>
+ <td><a name="1101" id="allgemeines_zugangspunkte28"></a>1101</td>
+ <td>Fehler beim Parsen eines Parameters</td>
+ </tr>
+ <tr>
+ <td><a name="1102" id="allgemeines_zugangspunkte29"></a>1102</td>
+ <td>Fehler beim Validieren der Personenbindung</td>
+ </tr>
+ <tr>
+ <td><a name="1103" id="allgemeines_zugangspunkte30"></a>1103</td>
+ <td>Signatur ung&uuml;ltig</td>
+ </tr>
+ <tr>
+ <td><a name="1104" id="allgemeines_zugangspunkte31"></a>1104</td>
+ <td>Zertifikat der Personenbindung ung&uuml;ltig</td>
+ </tr>
+ <tr>
+ <td><a name="1105" id="allgemeines_zugangspunkte32"></a>1105</td>
+ <td>Zertifikat der Signature ung&uuml;ltig</td>
+ </tr>
+ <tr>
+ <td><a name="1106" id="allgemeines_zugangspunkte33"></a>1106</td>
+ <td>Fehler beim Validieren des AuthBlocks</td>
+ </tr>
+ <tr>
+ <td><a name="1107" id="allgemeines_zugangspunkte34"></a>1107</td>
+ <td>Fehler beim Validieren eines SSL-Server-Endzertifikates</td>
+ </tr>
+ <tr>
+ <td><a name="1108" id="allgemeines_zugangspunkte35"></a>1108</td>
+ <td>Fehler beim Validieren der Online Vollmacht.</td>
+ </tr>
+ <tr>
+ <td><a name="1109" id="allgemeines_zugangspunkte36"></a>1109</td>
+ <td>Fehler beim validieren der SZR-Gateway Response</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_12xxx" id="allgemeines_zugangspunkte13"></a>1.3.1.3 STORK (12xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="1200" id="allgemeines_zugangspunkte37"></a>1200</td>
+ <td>Fehler beim erstellen des STORK Authentifizierungsrequests</td>
+ </tr>
+ <tr>
+ <td><a name="1201" id="allgemeines_zugangspunkte38"></a>1201</td>
+ <td>Fehler beim validieren der STORK Authentifizierungsresponse</td>
+ </tr>
+ <tr>
+ <td><a name="1202" id="allgemeines_zugangspunkte39"></a>1202</td>
+ <td>STORK Authentifizierungsresponse antwortet mit einem Fehler</td>
+ </tr>
+ <tr>
+ <td><a name="1203" id="allgemeines_zugangspunkte40"></a>1203</td>
+ <td>Fehler beim Sammeln von STORK Attributen</td>
+ </tr>
+ <tr>
+ <td><a name="1204" id="allgemeines_zugangspunkte70"></a>1203</td>
+ <td>Fehler bei der Datenkonversion - eingegebenes Datum fehlerhaft</td>
+ </tr>
+</table>
+<h3><a name="statuscodes_4xxxx" id="allgemeines_zugangspunkte8"></a>1.3.2 Statuscodes 4xxxx</h3>
+<p>Alles Statuscodes beginnent mit der Zahl vier beschreiben Fehler die w&auml;hrend der Kommunikation mit externen Services aufgetreten sind.</p>
+<h4><a name="statuscodes_40xxx" id="allgemeines_zugangspunkte19"></a>1.3.2.1 BKU (40xxxx)</h4>
+<p>Tritt w&auml;hrend des Anmeldevorgangs in der B&uuml;rgerkartenumgebung ein Fehler auf so wird der entsprechende Fehlercode an den Service Provider weitergereicht. Der der durch das Modul MOA-ID-Auth weitergereichte Statuscode f&uuml;r B&uuml;rgerkartenumgebungsfehler wei&szlig;t das folgende zweiteilige Format auf. Der erste Teil, bestehend aus zwei Dezimalstellen, kennzeichnet den Fehler als Fehler als B&uuml;rgerkartenumgebungsfehler. Der zweite Teil, bestehend aus vier Dezimalstellen bezeichnet den eindeutigen Identifikator des Fehers aus der B&uuml;rgerkartenumgebung (<a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/">siehe SecurityLayer Spezifikation</a>). </p>
+<p align="right"><em><a name="40" id="allgemeines_zugangspunkte41"></a>{40}{xxxxx}</em></p>
+<blockquote>
+ <p>{40} ... MOA-ID Statuscode f&uuml;r Fehler aus der B&uuml;rgerkartenumgebung</p>
+ <p>{xxxx} .... Fehlercode der B&uuml;rgerkartenumgebung.</p>
+</blockquote>
+<h4><a name="statuscodes_41xxx" id="allgemeines_zugangspunkte20"></a>1.3.2.2 MIS (41xxxx)</h4>
+<p>Tritt w&auml;hrend der Kommunikation mit dem Online-Vollmachten Service oder der Vollmachtsauswahl ein Fehler auf so wird der entsprechende Fehlercode an den Service Provider weitergereicht. Der der durch das Modul MOA-ID-Auth weitergereichte Statuscode f&uuml;r Fehler aus dem Online-Vollmachten Service wei&szlig;t das folgende zweiteilige Format auf. Der erste Teil, bestehend aus drei Dezimalstellen, kennzeichnet den Fehler als Fehler als Online-Vollmachten Service Fehler. Der zweite Teil, bestehend aus drei Dezimalstellen bezeichnet den eindeutigen Identifikator des Fehlers aus dem Online-Vollmachten Service (<a href="http://reference.e-government.gv.at/AG-II-Architektur-mis-1-1-0.2890.0.html">siehe Online-Vollmachten Spezifikation</a>). </p>
+<p><em><a name="41" id="allgemeines_zugangspunkte42"></a>{411}{xxxx}</em></p>
+<blockquote>
+ <p>{411} ... MOA-ID Statuscode f&uuml;r Fehler aus dem Online-Vollmachten Service.</p>
+ <p>{xxx} .... Fehlercode des Online-Vollmachten Service.</p>
+</blockquote>
+<p>Zus&auml;tzlich zu den gemappeden Fehlern aus dem Online-Vollmachen Service werden zus&auml;tzliche weitere Fehlercodes definiert.</p>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td>41000</td>
+ <td>Das Online-Vollmachten Service ist nicht erreichbar</td>
+ </tr>
+ <tr>
+ <td>41001</td>
+ <td>Allgemeiner Fehler bei der Kommunikation mit dem Online-Vollmachten Service</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_42xxx" id="allgemeines_zugangspunkte21"></a>1.3.2.3 SZR-Gateway (42xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="4200" id="allgemeines_zugangspunkte43"></a>4200</td>
+ <td>Das SZR-Gateway Service ist nicht erreichbar</td>
+ </tr>
+ <tr>
+ <td><a name="4201" id="allgemeines_zugangspunkte44"></a>4201</td>
+ <td>Die Antragung in das SZR ist fehlgeschlagen</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_43xxx" id="allgemeines_zugangspunkte22"></a>1.3.2.4 MOA SP/SS(43xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="4300" id="allgemeines_zugangspunkte45"></a>4300</td>
+ <td>Fehler beim Aufruf von MOA SP/SS</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_44xxx" id="allgemeines_zugangspunkte23"></a>1.3.2.5 Interfederation (44xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="4400" id="allgemeines_zugangspunkte46"></a>4400</td>
+ <td>Fehler beim generieren der Anmeldedaten</td>
+ </tr>
+</table>
+<h3><a name="statuscodes_6xxxx" id="allgemeines_zugangspunkte9"></a>1.3.3 Statuscodes 6xxxx</h3>
+<p>Alles Statuscodes beginnent mit der Zahl sechs beschreiben protokolspezifische Fehler die nicht durch das jeweilige Authentifizierungsprotokoll abgebildet werden.</p>
+<h4><a name="statuscodes_61xxx" id="allgemeines_zugangspunkte24"></a>1.3.3.1 Allgemein (61xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="6000" id="allgemeines_zugangspunkte47"></a>6000</td>
+ <td>Das Authentifizierungsprotokoll wurde nicht erkannt oder wird nicht unterst&uuml;zt</td>
+ </tr>
+ <tr>
+ <td><a name="6001" id="allgemeines_zugangspunkte48"></a>6001</td>
+ <td>Der STORK Request wurde nicht erkannt oder wird nicht unterst&uuml;zt</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_61xxx" id="allgemeines_zugangspunkte16"></a>1.3.3.2 PVP 2.1 (61xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="6100" id="allgemeines_zugangspunkte49"></a>6100</td>
+ <td>Fehler beim erstellen der PVP 2.1 Response</td>
+ </tr>
+ <tr>
+ <td><a name="6101" id="allgemeines_zugangspunkte50"></a>6101</td>
+ <td>Fehler beim verschl&uuml;sseln der PVP 2.1 Assertion</td>
+ </tr>
+ <tr>
+ <td><a name="6102" id="allgemeines_zugangspunkte51"></a>6102</td>
+ <td>Authentifizierung entspricht nicht dem geforderten QAA Level</td>
+ </tr>
+ <tr>
+ <td><a name="6103" id="allgemeines_zugangspunkte52"></a>6103</td>
+ <td>F&uuml;r die im Requst angegebene EnityID konnten keine g&uuml;ltigen Metadaten gefunden werden</td>
+ </tr>
+ <tr>
+ <td><a name="6104" id="allgemeines_zugangspunkte53"></a>6104</td>
+ <td>Die Signatur des Requests konnte nicht g&uuml;ltig validiert werden. Entweder ist die Signatur ung&uuml;ltig oder das Signaturzertifikat stimmt nicht mit dem in den Metadaten hinterlegten Zertifikat &uuml;berein.</td>
+ </tr>
+ <tr>
+ <td><a name="6105" id="allgemeines_zugangspunkte54"></a>6105</td>
+ <td>Der Request konnte nicht g&uuml;ltig validiert werden.</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_62xxx" id="allgemeines_zugangspunkte17"></a>1.3.3.3 OpenID Connect (62xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="6200" id="allgemeines_zugangspunkte55"></a>6200</td>
+ <td>Fehlerhafte redirect url</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_63xxx" id="allgemeines_zugangspunkte18"></a>1.3.3.4 SAML 1(63xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="6300" id="allgemeines_zugangspunkte56"></a>6300</td>
+ <td>Fehlerhaftes SAML Artifact Format</td>
+ </tr>
+</table>
+<h3><a name="statuscodes_9xxxx" id="allgemeines_zugangspunkte10"></a>1.3.4 Statuscodes 9xxxx</h3>
+<p>Alles Statuscodes beginnent mit der Zahl neun beschreiben interne Serverfehler.</p>
+<h4><a name="statuscodes_90xxx" id="allgemeines_zugangspunkte14"></a>1.3.4.1 Konfigurationsfehler (90xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="9000" id="allgemeines_zugangspunkte57"></a>9000</td>
+ <td>Fehlerhaftes BKU-Selection Template</td>
+ </tr>
+ <tr>
+ <td><a name="9001" id="allgemeines_zugangspunkte58"></a>9001</td>
+ <td>Fehlerhaftes Send-Assertion Template</td>
+ </tr>
+ <tr>
+ <td><a name="9002" id="allgemeines_zugangspunkte59"></a>9002</td>
+ <td>Fehlerhaftes SecurityLayer Template.</td>
+ </tr>
+ <tr>
+ <td><a name="9003" id="allgemeines_zugangspunkte60"></a>9003</td>
+ <td>Fehlerhafte STORK VIDP Konfiguration</td>
+ </tr>
+ <tr>
+ <td><a name="9004" id="allgemeines_zugangspunkte61"></a>9004</td>
+ <td>Fehlerhafte STORK Konfiguration</td>
+ </tr>
+ <tr>
+ <td><a name="9005" id="allgemeines_zugangspunkte62"></a>9005</td>
+ <td>Fehlerhafte OpenID Connect Konfiguration</td>
+ </tr>
+ <tr>
+ <td><a name="9006" id="allgemeines_zugangspunkte63"></a>9006</td>
+ <td>Es sind keine Vollmachtsprofile konfiguriert.</td>
+ </tr>
+ <tr>
+ <td><a name="9007" id="allgemeines_zugangspunkte64"></a>9007</td>
+ <td>Der SZR-Gateway Client konnte nicht initialisiert werden.</td>
+ </tr>
+</table>
+<h4><a name="statuscodes_91xxx" id="allgemeines_zugangspunkte15"></a>1.3.4.2 Interne Fehler (91xxx)</h4>
+<table width="1237" border="1">
+ <tr>
+ <th width="214" scope="col">Statuscode</th>
+ <th width="1007" scope="col">Beschreibung</th>
+ </tr>
+ <tr>
+ <td><a name="9100" id="allgemeines_zugangspunkte65"></a>9100</td>
+ <td>Fehler beim einlesen einer externen Resource.</td>
+ </tr>
+ <tr>
+ <td><a name="9101" id="allgemeines_zugangspunkte66"></a>9101</td>
+ <td>Datenbankzugriffsfehler</td>
+ </tr>
+ <tr>
+ <td><a name="9102" id="allgemeines_zugangspunkte67"></a>9102</td>
+ <td>Fehler beim Erzeugen einer internen Datenstruktur</td>
+ </tr>
+ <tr>
+ <td><a name="9103" id="allgemeines_zugangspunkte68"></a>9103</td>
+ <td>Fehler bei der Verarbeitung eines Templates</td>
+ </tr>
+ <tr>
+ <td><a name="9199" id="allgemeines_zugangspunkte69"></a>9199</td>
+ <td>Allgemeiner interner Fehler</td>
+ </tr>
+</table>
+</body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_handyBKU.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_handyBKU.html
new file mode 100644
index 000000000..08071ac3a
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_handyBKU.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="de">
+ <head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script language="javascript" type="text/javascript">
+ function onAnmeldeSubmit() {
+ document.CustomizedForm.submit();
+ document.CustomizedForm.Senden.disabled=true;
+ }
+ </script>
+ </head>
+ <body onLoad="onAnmeldeSubmit()">
+ <form name="CustomizedForm" action="<BKU>" method="post" enctype="multipart/form-data">
+ Falls Sie nicht automatisch weitergeleitet werden klicken Sie bitte hier:
+ <input class="button" type="submit" value="Starte Anmeldung" name="Senden">
+ <input type="hidden" name="XMLRequest" value="<XMLRequest>">
+ <input type="hidden" name="DataURL" value="<DataURL>">
+ <input type="hidden" name="PushInfobox" value="<PushInfobox>">
+
+ <!-- Angabe der Parameter für die Handy-BKU -->
+ <input type="hidden" name="appletWidth" value="<APPLETWIDTH>">
+ <input type="hidden" name="appletHeight" value="<APPLETHEIGHT>">
+
+ <!-- [OPTIONAL] Aendern Sie hier die Hintergrundfarbe der Handy-BKU -->
+ <input type="hidden" name="backgroundColor" value="<COLOR>">
+
+ <input type="hidden" name="redirecttarget" value="<REDIRECTTARGET>">
+ </form>
+
+ <form name="CustomizedInfoForm" action="<BKU>" method="post">
+ <input type="hidden" name="XMLRequest" value="<CertInfoXMLRequest>">
+ <input type="hidden" name="DataURL" value="<CertInfoDataURL>">
+ </form>
+ <form name="DummyForm" action="<BKU>" method="post">
+ </form>
+ </body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_localBKU.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_localBKU.html
new file mode 100644
index 000000000..b9905c4af
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_localBKU.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="de">
+ <head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script language="javascript" type="text/javascript">
+ function onAnmeldeSubmit() {
+ document.CustomizedForm.submit();
+ document.CustomizedForm.Senden.disabled=true;
+ }
+ </script>
+ </head>
+ <body onLoad="onAnmeldeSubmit()">
+ <form target=<REDIRECTTARGET> name="CustomizedForm" action="<BKU>" method="post" enctype="multipart/form-data">
+ Falls Sie nicht automatisch weitergeleitet werden klicken Sie bitte hier:
+ <input class="button" type="submit" value="Starte Anmeldung" name="Senden">
+ <input type="hidden" name="XMLRequest" value="<XMLRequest>">
+ <input type="hidden" name="DataURL" value="<DataURL>">
+ <input type="hidden" name="PushInfobox" value="<PushInfobox>">
+ </form>
+
+ <form name="CustomizedInfoForm" action="<BKU>" method="post">
+ <input type="hidden" name="XMLRequest" value="<CertInfoXMLRequest>">
+ <input type="hidden" name="DataURL" value="<CertInfoDataURL>">
+ </form>
+
+ <form name="DummyForm" action="<BKU>" method="post">
+ </form>
+ </body>
+</html>
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_onlineBKU.html b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_onlineBKU.html
new file mode 100644
index 000000000..a9932d49d
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/mainGUI/template_onlineBKU.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="de">
+ <head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script language="javascript" type="text/javascript">
+ function onAnmeldeSubmit() {
+ document.CustomizedForm.submit();
+ document.CustomizedForm.Senden.disabled=true;
+ }
+ </script>
+ </head>
+ <body onLoad="onAnmeldeSubmit()">
+ <form name="CustomizedForm" action="<BKU>" method="post" enctype="multipart/form-data">
+ Falls Sie nicht automatisch weitergeleitet werden klicken Sie bitte hier:
+ <input class="button" type="hidden" value="Starte Anmeldung" name="Senden">
+ <input type="hidden" name="XMLRequest" value="<XMLRequest>">
+ <input type="hidden" name="DataURL" value="<DataURL>">
+ <input type="hidden" name="PushInfobox" value="<PushInfobox>">
+
+ <!-- Angabe der Parameter fuer die Online-BKU -->
+ <input type="hidden" name="appletWidth" value="<APPLETWIDTH>">
+ <input type="hidden" name="appletHeight" value="<APPLETHEIGHT>">
+
+ <!-- [OPTIONAL] Aendern Sie hier die Hintergrundfarbe der Online-BKU -->
+ <input type="hidden" name="appletBackgroundColor" value="<COLOR>">
+ <input type="hidden" name="redirectTarget" value="<REDIRECTTARGET>">
+ </form>
+
+ <form name="CustomizedInfoForm" action="<BKU>" method="post">
+ <input type="hidden" name="XMLRequest" value="<CertInfoXMLRequest>">
+ <input type="hidden" name="DataURL" value="<CertInfoDataURL>">
+ </form>
+ <form name="DummyForm" action="<BKU>" method="post">
+ </form>
+ </body>
+</html>
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/css_template.css b/id/server/moa-id-frontend-resources/src/main/resources/templates/css_template.css
new file mode 100644
index 000000000..a334b258d
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/css_template.css
@@ -0,0 +1,671 @@
+@charset "utf-8";
+ @media screen and (min-width: 650px) {
+
+ body {
+ margin:0;
+ padding:0;
+ color : #000;
+ background-color : #fff;
+ text-align: center;
+ background-color: #6B7B8B;
+ }
+
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
+
+ #localBKU p {
+ font-size: 0.7em;
+ }
+
+ #localBKU input{
+ font-size: 0.85em;
+ /*border-radius: 5px;*/
+ }
+
+ #bkuselectionarea input[type=button] {
+ font-size: 0.85em;
+ /*border-radius: 7px;*/
+ margin-bottom: 25px;
+ min-width: 80px;
+ }
+
+ #mandateLogin {
+ font-size: 0.85em;
+ }
+
+ #bku_header h2 {
+ font-size: 0.8em;
+ }
+
+
+ #page {
+ display: block;
+ border: 2px solid rgb(0,0,0);
+ width: 650px;
+ height: 460px;
+ margin: 0 auto;
+ margin-top: 5%;
+ position: relative;
+ border-radius: 25px;
+ background: rgb(255,255,255);
+ }
+
+ #page1 {
+ text-align: center;
+ }
+
+ #main {
+ /* clear:both; */
+ position:relative;
+ margin: 0 auto;
+ /*width: 250px;*/
+ text-align: center;
+ }
+
+ .OA_header {
+ /* background-color: white;*/
+ font-size: 20pt;
+ margin-bottom: 25px;
+ margin-top: 25px;
+ }
+ #alert_area {
+ width: 500px;
+ padding-left: 80px;
+ }
+ #leftcontent {
+ /*float:left; */
+ width:250px;
+ margin-bottom: 25px;
+ text-align: left;
+ border: 1px solid rgb(0,0,0);
+ }
+
+ #selectArea {
+ font-size: 15px;
+ padding-bottom: 65px;
+ }
+
+ #leftcontent {
+ width: 300px;
+ /*margin-top: 30px;*/
+ margin: auto;
+ }
+
+ #bku_header {
+ height: 5%;
+ padding-bottom: 3px;
+ padding-top: 3px;
+ }
+
+ #bkulogin {
+ overflow:hidden;
+ min-width: 190px;
+ min-height: 180px;
+ /*height: 260px;*/
+ }
+
+ h2#tabheader{
+ font-size: 1.1em;
+ padding-left: 2%;
+ padding-right: 2%;
+ position: relative;
+ }
+
+ #stork h2 {
+ font-size: 1.0em;
+ margin-bottom: 2%;
+ }
+
+ .setAssertionButton_full {
+ background: #efefef;
+ cursor: pointer;
+ margin-top: 15px;
+ width: 100px;
+ height: 30px
+ }
+
+ #leftbutton {
+ width: 30%;
+ float:left;
+ margin-left: 40px;
+ }
+
+ #rightbutton {
+ width: 30%;
+ float:right;
+ margin-right: 45px;
+ text-align: right;
+ }
+
+ button {
+ height: 25px;
+ width: 75px;
+ margin-bottom: 10px;
+ }
+
+
+
+ #validation {
+ position: absolute;
+ bottom: 0px;
+ margin-left: 270px;
+ padding-bottom: 10px;
+ }
+
+ }
+
+ @media screen and (max-width: 205px) {
+ #localBKU p {
+ font-size: 0.6em;
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
+
+ #localBKU input {
+ font-size: 0.6em;
+ min-width: 60px;
+ /* max-width: 65px; */
+ min-height: 1.0em;
+ /* border-radius: 5px; */
+ }
+
+ #bkuselectionarea input[type=button] {
+ font-size: 0.7em;
+ min-width: 55px;
+ /*min-height: 1.1em;
+ border-radius: 5px;*/
+ margin-bottom: 2%
+ }
+
+ #mandateLogin {
+ font-size: 0.65em;
+ }
+
+ #bku_header h2 {
+ font-size: 0.8em;
+ margin-top: -0.4em;
+ padding-top: 0.4em;
+ }
+
+ #bkulogin {
+ min-height: 150px;
+ }
+ }
+
+ @media screen and (max-width: 249px) and (min-width: 206px) {
+ #localBKU p {
+ font-size: 0.7em;
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
+
+ #localBKU input {
+ font-size: 0.7em;
+ min-width: 70px;
+ /* max-width: 75px; */
+ min-height: 0.95em;
+ /* border-radius: 6px; */
+ }
+
+ #bkuselectionarea input[type=button] {
+ font-size: 0.75em;
+ min-width: 60px;
+ /* min-height: 0.95em;
+ border-radius: 6px; */
+ margin-bottom: 5%
+ }
+
+ #mandateLogin {
+ font-size: 0.75em;
+ }
+
+ #bku_header h2 {
+ font-size: 0.9em;
+ margin-top: -0.45em;
+ padding-top: 0.45em;
+ }
+
+ #bkulogin {
+ min-height: 180px;
+ }
+ }
+
+ @media screen and (max-width: 299px) and (min-width: 250px) {
+ #localBKU p {
+ font-size: 0.9em;
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
+
+ #localBKU input {
+ font-size: 0.8em;
+ min-width: 70px;
+ /* max-width: 75px; */
+ /* border-radius: 6px; */
+ }
+
+ #bkuselectionarea input[type=button] {
+ font-size: 0.85em;
+ /* min-height: 1.05em;
+ border-radius: 7px; */
+ margin-bottom: 10%;
+ }
+
+ #mandateLogin {
+ font-size: 1em;
+ }
+
+ #bku_header h2 {
+ font-size: 1.0em;
+ margin-top: -0.50em;
+ padding-top: 0.50em;
+ }
+ }
+
+ @media screen and (max-width: 399px) and (min-width: 300px) {
+ #localBKU p {
+ font-size: 0.9em;
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
+ #localBKU input {
+ font-size: 0.8em;
+ min-width: 70px;
+ /* max-width: 75px; */
+ /* border-radius: 6px; */
+ }
+
+ #bkuselectionarea input[type=button] {
+ font-size: 0.9em;
+ /* min-height: 1.2em;
+ border-radius: 8px; */
+ margin-bottom: 10%;
+ max-width: 80px;
+ }
+
+ #mandateLogin {
+ font-size: 1em;
+ }
+
+ #bku_header h2 {
+ font-size: 1.1em;
+ margin-top: -0.55em;
+ padding-top: 0.55em;
+ }
+ }
+
+ @media screen and (max-width: 649px) and (min-width: 400px) {
+ #localBKU p {
+ font-size: 0.9em;
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
+ #localBKU input {
+ font-size: 0.8em;
+ min-width: 70px;
+ /* max-width: 80px; */
+ /* border-radius: 6px; */
+ }
+
+ #bkuselectionarea input[type=button] {
+ font-size: 1.0em;
+ /* min-height: 1.3em;
+ border-radius: 10px; */
+ margin-bottom: 10%;
+ max-width: 85px;
+ }
+
+ #mandateLogin {
+ font-size: 1.2em;
+ }
+
+ #bku_header h2 {
+ font-size: 1.3em;
+ margin-top: -0.65em;
+ padding-top: 0.65em;
+ }
+ }
+
+
+
+ @media screen and (max-width: 649px) {
+
+ body {
+ margin:0;
+ padding:0;
+ color : #000;
+ text-align: center;
+ font-size: 100%;
+ background-color: $MAIN_BACKGOUNDCOLOR;
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
+ #page {
+ visibility: hidden;
+ margin-top: 0%;
+ }
+
+ #page1 {
+ visibility: hidden;
+ }
+
+ #main {
+ visibility: hidden;
+ }
+
+ #validation {
+ visibility: hidden;
+ display: none;
+ }
+
+ .OA_header {
+ margin-bottom: 0px;
+ margin-top: 0px;
+ font-size: 0pt;
+ visibility: hidden;
+ }
+
+ #alert_area {
+ visibility: visible;
+ width: 250px;
+ }
+ #alert_area > p:first-child {
+ display: none;
+ visibility: hidden;
+ }
+
+ #leftcontent {
+ visibility: visible;
+ margin-bottom: 0px;
+ text-align: left;
+ border:none;
+ vertical-align: middle;
+ min-height: 173px;
+ min-width: 204px;
+
+ }
+
+ #bku_header {
+ height: 10%;
+ min-height: 1.2em;
+ margin-top: 1%;
+ }
+
+ h2#tabheader{
+ padding-left: 2%;
+ padding-right: 2%;
+ position: relative;
+ top: 50%;
+ }
+
+ #stork h2 {
+ font-size: 0.9em;
+ margin-bottom: 2%;
+ }
+
+ #bkulogin {
+ min-width: 190px;
+ min-height: 155px;
+ }
+
+ .setAssertionButton_full {
+ background: #efefef;
+ cursor: pointer;
+ margin-top: 15px;
+ width: 70px;
+ height: 25px;
+ }
+
+ input[type=button] {
+/* height: 11%; */
+ width: 70%;
+ }
+ }
+
+ * {
+ margin: 0;
+ padding: 0;
+ #if($FONTTYPE)
+ font-family: $FONTTYPE;
+ #end
+ }
+
+ #selectArea {
+ padding-top: 10px;
+ padding-bottom: 55px;
+ padding-left: 10px;
+ }
+
+ .setAssertionButton {
+ background: #efefef;
+ cursor: pointer;
+ margin-top: 15px;
+ width: 70px;
+ height: 25px;
+ }
+
+ #leftbutton {
+ width: 35%;
+ float:left;
+ margin-left: 15px;
+ }
+
+ #rightbutton {
+ width: 35%;
+ float:right;
+ margin-right: 25px;
+ text-align: right;
+ }
+
+ #stork {
+ /*margin-bottom: 10px;*/
+ /* margin-top: 5px; */
+ }
+
+ #mandateLogin {
+ padding-bottom: 4%;
+ padding-top: 4%;
+ height: 10%;
+ position: relative;
+ text-align: center;
+ }
+
+ .verticalcenter {
+ vertical-align: middle;
+ }
+
+ #mandateLogin div {
+ clear: both;
+ margin-top: -1%;
+ position: relative;
+ top: 50%;
+ }
+
+ #bkuselectionarea {
+ position: relative;
+ display: block;
+ }
+
+ #localBKU {
+ padding-bottom: 4%;
+ /*padding-top: 4%;*/
+ position: relative;
+ clear: both;
+ text-align: center;
+ }
+
+ #bkukarte {
+ float:left;
+ text-align:center;
+ width:40%;
+ min-height: 70px;
+ padding-left: 5%;
+ padding-top: 2%;
+ }
+
+ #bkuhandy {
+ float:right;
+ text-align:center;
+ width:40%;
+ min-height: 90px;
+ padding-right: 5%;
+ padding-top: 2%;
+ }
+
+ .bkuimage {
+ width: 70%;
+ height: auto;
+ }
+
+ #mandate{
+ text-align:center;
+ padding : 5px 5px 5px 5px;
+ }
+
+/* input[type=button], .sendButton {
+ background: $BUTTON_BACKGROUNDCOLOR;
+ color: $BUTTON_COLOR;
+/* border:1px solid #000; */
+/* cursor: pointer;
+/* box-shadow: 3px 3px 3px #222222; */
+/* }
+
+/* button:hover, button:focus, button:active,
+ .sendButton:hover , .sendButton:focus, .sendButton:active,
+ #mandateCheckBox:hover, #mandateCheckBox:focus, #mandateCheckBox:active {
+ background: $BUTTON_BACKGROUNDCOLOR_FOCUS;
+ color: $BUTTON_COLOR;
+/* border:1px solid #000; */
+/* cursor: pointer;
+/* box-shadow: -1px -1px 3px #222222; */
+/* }
+
+*/
+ input {
+ /*border:1px solid #000;*/
+ cursor: pointer;
+ }
+
+ #localBKU input {
+/* color: $BUTTON_COLOR; */
+ /*border: 0px;*/
+ display: inline-block;
+
+ }
+
+ #localBKU input:hover, #localBKU input:focus, #localBKU input:active {
+ /*text-decoration: underline;*/
+ }
+
+ #installJava, #BrowserNOK {
+ clear:both;
+ font-size:0.8em;
+ padding:4px;
+ }
+
+ .selectText{
+
+ }
+
+
+ .selectTextHeader{
+
+ }
+
+ .sendButton {
+ width: 30%;
+ margin-bottom: 1%;
+ }
+
+ #leftcontent a {
+ text-decoration:none;
+ color: #000;
+ /* display:block;*/
+ padding:4px;
+ }
+
+ #leftcontent a:hover, #leftcontent a:focus, #leftcontent a:active {
+ text-decoration:underline;
+ color: #000;
+ }
+
+ .infobutton {
+ background-color: #005a00;
+ color: white;
+ font-family: serif;
+ text-decoration: none;
+ padding-top: 2px;
+ padding-right: 4px;
+ padding-bottom: 2px;
+ padding-left: 4px;
+ font-weight: bold;
+ }
+
+ .hell {
+ background-color : $MAIN_BACKGOUNDCOLOR;
+ color: $MAIN_COLOR;
+ }
+
+ .dunkel {
+ background-color: $HEADER_BACKGROUNDCOLOR;
+ color: $HEADER_COLOR;
+ }
+
+ .main_header {
+ color: black;
+ font-size: 32pt;
+ position: absolute;
+ right: 10%;
+ top: 40px;
+
+ }
+
+ #ssoSessionTransferBlock {
+ font-size: 0.8em;
+ margin-left: 5px;
+ margin-bottom: 5px;
+ }
+ #processInfoArea {
+ margin-bottom: 15px;
+ margin-top: 15px;
+ }
+ #processSelectionArea {
+ width: 550px;
+ margin-left: 25px;
+ margin-top: 35px;
+ }
+ .processSelectionButtonArea {
+ float: none;
+ margin-bottom: 20px;
+ height: 35px;
+ }
+ .processSelectionButton {
+ background: #ababab;
+ cursor: pointer;
+ height: 30px;
+ width: 200px;
+ float: right;
+ border-style: solid;
+ border-bottom-width: 2px;
+ border-right-width: 2px;
+ border-left-width: 1px;
+ border-top-width: 1px;
+ border-color: #000000;
+ }
+ .buttonDescription {
+ float: left;
+ margin-left: 10px;
+ padding-top: 4px;
+ text-align: left;
+ width: 330px;
+ }
+ #processContent {
+ margin-top: 25px;
+ } \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/error_message.html b/id/server/moa-id-frontend-resources/src/main/resources/templates/error_message.html
new file mode 100644
index 000000000..4fd4d63cd
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/error_message.html
@@ -0,0 +1,37 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <link rel="stylesheet" href="$contextPath/css/buildCSS" />
+
+ <title>An error arise ... </title>
+</head>
+
+ <body>
+ <div id="page">
+ <div id="page1" class="case selected-case" role="main">
+ <h2 class="OA_header" role="heading">Authentication error arise</h2>
+ <!--div id="main"-->
+ <!--div id="leftcontent" class="hell" role="application"-->
+
+
+
+ <div id="alert_area" class="hell" role="application" >
+ <p>The authentication stops on account of a process error:</p>
+ <br/>
+ <p><b>Error Code:</b> $errorCode</p>
+ <p><b>Error Message:</b >$errorMsg</p>
+ </div>
+
+
+ #if($stacktrace)
+ <div>
+ <p><b>Stacktrace:</b> $stacktrace</p>
+ </div>
+ #end
+
+ <!--/div--->
+ <!--/div-->
+ </div>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/javascript_tempalte.js b/id/server/moa-id-frontend-resources/src/main/resources/templates/javascript_tempalte.js
new file mode 100644
index 000000000..a463bae65
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/javascript_tempalte.js
@@ -0,0 +1,200 @@
+function isIE() {
+ return (/MSIE (\d+\.\d+);/.test(navigator.userAgent));
+ }
+ function isFullscreen() {
+ try {
+ return ((top.innerWidth == screen.width) && (top.innerHeight == screen.height));
+ } catch (e) {
+ return false;
+ }
+ }
+ function isActivexEnabled() {
+ var supported = null;
+ try {
+ supported = !!new ActiveXObject("htmlfile");
+ } catch (e) {
+ supported = false;
+ }
+ return supported;
+ }
+ function isMetro() {
+ if (!isIE())
+ return false;
+ return !isActivexEnabled() && isFullscreen();
+ }
+ window.onload=function() {
+ document.getElementById("localBKU").style.display="block";
+ return;
+ }
+ function bkuLocalClicked() {
+ setMandateSelection();
+ }
+
+ function bkuOnlineClicked() {
+ if (isMetro())
+ document.getElementById("metroDetected").style.display="block";
+ document.getElementById("localBKU").style.display="block";
+/* if (checkMandateSSO())
+ return; */
+
+ setMandateSelection();
+/* setSSOSelection(); */
+
+ var iFrameURL = "$contextPath$submitEndpoint" + "?";
+ iFrameURL += "&pendingid=" + "$pendingReqID";
+
+ iFrameURL += "&bkuURI=" + "$bkuOnline";
+ iFrameURL += "&useMandate=" + document.getElementById("useMandate").value;
+
+ generateIFrame(iFrameURL);
+ }
+ function bkuHandyClicked() {
+ document.getElementById("localBKU").style.display="none";
+/* if (checkMandateSSO())
+ return; */
+
+ setMandateSelection();
+/* setSSOSelection(); */
+
+ var iFrameURL = "$contextPath$submitEndpoint" + "?";
+ iFrameURL += "&pendingid=" + "$pendingReqID";
+
+ iFrameURL += "&bkuURI=" + "$bkuHandy";
+ iFrameURL += "&useMandate=" + document.getElementById("useMandate").value;
+
+ generateIFrame(iFrameURL);
+ }
+ function storkClicked() {
+ document.getElementById("localBKU").style.display="none";
+/* if (checkMandateSSO())
+ return; */
+
+ setMandateSelection();
+/* setSSOSelection(); */
+
+ var ccc = "AT";
+ var countrySelection = document.getElementById("cccSelection");
+ if (countrySelection != null) {
+ ccc = document.getElementById("cccSelection").value;
+ }
+ var iFrameURL = "$contextPath$submitEndpoint" + "?";
+ iFrameURL += "&pendingid=" + "$pendingReqID";
+
+ #if($bkuOnline)
+ iFrameURL += "&bkuURI=" + "$bkuOnline";
+ #end
+
+ iFrameURL += "&useMandate=" + document.getElementById("useMandate").value;
+ iFrameURL += "&CCC=" + ccc;
+
+ generateIFrame(iFrameURL);
+ }
+ function generateIFrame(iFrameURL) {
+ var el = document.getElementById("bkulogin");
+ var width = el.clientWidth;
+ var heigth = el.clientHeight - 20;
+ var parent = el.parentNode;
+
+ iFrameURL += "&heigth=" + heigth;
+ iFrameURL += "&width=" + width;
+
+ var iframe = document.createElement("iframe");
+ iframe.setAttribute("src", iFrameURL);
+ iframe.setAttribute("width", el.clientWidth - 1);
+ iframe.setAttribute("height", el.clientHeight - 1);
+ iframe.setAttribute("frameborder", "0");
+ iframe.setAttribute("scrolling", "no");
+ iframe.setAttribute("title", "Login");
+ parent.replaceChild(iframe, el);
+ }
+ function setMandateSelection() {
+ document.getElementById("useMandate").value = "false";
+ var checkbox = document.getElementById("mandateCheckBox");
+ if (checkbox != null) {
+ if (document.getElementById("mandateCheckBox").checked) {
+ document.getElementById("useMandate").value = "true";
+ }
+ }
+ }
+ function onChangeChecks() {
+ if (self.innerWidth < 650) {
+ document.getElementById("moaidform").setAttribute("target","_parent");
+ } else {
+ document.getElementById("moaidform").removeAttribute("target");
+ }
+
+ }
+
+ function checkIfBrowserSupportsJava(){
+ console.log("Browser is Chrome: "+checkIfBrowserIsChrome());
+ console.log("Browser is Safari: "+checkIfBrowserIsSafari());
+ console.log("Browser is Edge: "+checkIfBrowserIsEdge());
+
+ var cnt = 0;
+
+ if(checkIfBrowserIsChrome())cnt++;
+ if(checkIfBrowserIsEdge())cnt++;
+ if(checkIfBrowserIsSafari())cnt++;
+
+ if(cnt==0 || cnt>1)//cnt>1 means perhaps wrong detection
+ return true;
+
+ var image = document.getElementById("bkuimage");
+ var srcatt = image.getAttribute("src");
+ var last = srcatt.substring(srcatt.lastIndexOf('/')+1);
+ srcatt = srcatt.replace(last,'karte_deactivated.png');
+ image.setAttribute("src",srcatt);
+
+
+ var button = document.getElementsByName("bkuButtonOnline")[0];
+ button.setAttribute("class","browserInfoButton");
+ button.setAttribute("title","Java wird nicht unterstützt, klicken für mehr Informationen.");
+ button.setAttribute("onClick","alert('Java wird von Ihrem Browser nicht unterstützt, ist jedoch für den Betrieb der Online Bürgerkartenumgebung notwendig.\\nWollen Sie dennoch die Online Bürgerkartenumgebung verwenden, wird zur Zeit Java noch von Firefox und MS Internet Explorer unterstützt. \\nAlternativ koennen Sie auch eine lokale Bürgerkartenumgebung verwenden, verfügbar unter www.buergerkarte.at.');");
+
+ return false;
+
+ }
+ function checkIfBrowserIsChrome(){
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = false;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && webstore_defined;
+ }
+ function checkIfBrowserIsEdge(){//edge also defines the chrome object, but not the webapp
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = true;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && !webstore_defined;
+ }
+ function checkIfBrowserIsSafari(){
+ var cond1 = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
+ return cond1;
+ }
+/* function setSSOSelection() {
+ document.getElementById("useSSO").value = "false";
+ var checkbox = document.getElementById("SSOCheckBox");
+ if (checkbox != null) {
+ if (document.getElementById("SSOCheckBox").checked) {
+ document.getElementById("useSSO").value = "true";
+ }
+ }
+ } */
+
+/* function checkMandateSSO() {
+ var sso = document.getElementById("SSOCheckBox");
+ var mandate = document.getElementById("mandateCheckBox");
+
+
+ if (sso.checked && mandate.checked) {
+ alert("Anmeldung in Vertretung in kombination mit Single Sign-On wird aktuell noch nicht unterstützt!")
+ mandate.checked = false;
+ sso.checked = false;
+ return true;
+ } else {
+ return false;
+ }
+ } */ \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/loginFormFull.html b/id/server/moa-id-frontend-resources/src/main/resources/templates/loginFormFull.html
new file mode 100644
index 000000000..6c70b57b3
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/loginFormFull.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+ <!-- MOA-ID 2.x BKUSelection Layout CSS -->
+ <link rel="stylesheet" href="$contextPath/css/buildCSS?pendingid=$pendingReqID" />
+
+ <!-- MOA-ID 2.x BKUSelection JavaScript fucnctions-->
+ <script src="$contextPath/js/buildJS?pendingid=$pendingReqID"></script>
+
+
+<title>Anmeldung mittels Bürgerkarte oder Handy-Signatur</title>
+</head>
+<body onload="onChangeChecks();checkIfBrowserSupportsJava();" onresize="onChangeChecks();">
+ <div id="page">
+ <div id="page1" class="case selected-case" role="main">
+ <h2 class="OA_header" role="heading">Anmeldung an: $OAName</h2>
+ <div id="main">
+ <div id="leftcontent" class="hell" role="application">
+ <div id="bku_header" class="dunkel">
+ <h2 id="tabheader" class="dunkel" role="heading">$HEADER_TEXT</h2>
+ </div>
+ <div id="bkulogin" class="hell" role="form">
+ <div id="mandateLogin" style="">
+ <div>
+ <input tabindex="1" type="checkbox" name="Mandate"
+ id="mandateCheckBox" class="verticalcenter" role="checkbox"
+ onClick='document.getElementById("mandateCheckBox").setAttribute("aria-checked", document.getElementById("mandateCheckBox").checked);'$MANDATECHECKED>
+ <label for="mandateCheckBox" class="verticalcenter">in
+ Vertretung anmelden</label>
+ <!--a href="info_mandates.html"
+ target="_blank"
+ class="infobutton verticalcenter"
+ tabindex="5">i</a-->
+ </div>
+ </div>
+ <div id="bkuselectionarea">
+ <div id="bkukarte">
+ <img id="bkuimage" class="bkuimage" src="$contextPath/img/karte.png"
+ alt="OnlineBKU" /> <input name="bkuButtonOnline" type="button"
+ onClick="bkuOnlineClicked();" tabindex="2" role="button"
+ value="Karte" />
+ </div>
+ <div id="bkuhandy">
+ <img class="bkuimage" src="$contextPath/img/handysign.png"
+ alt="HandyBKU" /> <input name="bkuButtonHandy" type="button"
+ onClick="bkuHandyClicked();" tabindex="3" role="button"
+ value="HANDY" />
+ </div>
+ </div>
+ <div id="localBKU">
+ <form method="get" id="moaidform" action="$contextPath$submitEndpoint"
+ class="verticalcenter" target="_parent">
+ <input type="hidden" name="bkuURI" value="$bkuLocal" />
+ <input type="hidden" name="useMandate" id="useMandate" />
+ <input type="hidden" name="SSO" id="useSSO" />
+ <input type="hidden" name="ccc" id="ccc" />
+ <input type="hidden" name="pendingid" value="$pendingReqID" />
+ <input type="submit" value=" Lokale Bürgerkartenumgebung " tabindex="4"
+ role="button" onclick="setMandateSelection();">
+ </form>
+ </div>
+
+ <!-- Single Sign-On Session transfer functionality -->
+ <!--div id="ssoSessionTransferBlock">
+ <a href="$contextPath$submitEndpoint?pendingid=$pendingReqID&restoreSSOSession=true">>Restore SSO Session from Smartphone</a>
+ </div-->
+
+ <div id="stork" align="center" style="$STORKVISIBLE">
+ <h2 id="tabheader" class="dunkel">Home Country Selection</h2>
+ <p>
+ <select name="cccSelection" id="cccSelection" size="1" style="width: 120px; margin-right: 5px;" >
+ $countryList
+ </select>
+ <button name="bkuButton" type="button" onClick="storkClicked();">Proceed</button>
+ <a href="info_stork.html" target="_blank" class="infobutton" style="color:#FFF">i</a>
+ </p>
+ </div>
+
+ <div id="metroDetected" style="display: none">
+ <p>Anscheinend verwenden Sie Internet Explorer im
+ Metro-Modus. Wählen Sie bitte "Auf dem Desktop anzeigen" aus den
+ Optionen um die Karten-Anmeldung starten zu können.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/mandate-service-selection.html b/id/server/moa-id-frontend-resources/src/main/resources/templates/mandate-service-selection.html
new file mode 100644
index 000000000..b0be4a475
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/mandate-service-selection.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <!-- MOA-ID 2.x BKUSelection Layout CSS -->
+ <link rel="stylesheet" href="$contextPath/css/buildCSS?pendingid=#ID#" />
+
+ <title>Anmeldung an Online-Applikation</title>
+</head>
+
+
+<body>
+ <div id="page">
+
+ <div id="page1" class="case selected-case" role="main">
+
+<!-- <h2 class="OA_header">Anmeldung an: #OAName#</h2> -->
+
+ <div id="main">
+ <!--div id="leftcontent" class="hell"-->
+ <div id=processContent>
+ <div id="bku_header" class="dunkel">
+ <h2 id="tabheader" class="dunkel" role="heading">
+ Anmeldeinformationen:
+ </h2>
+ </div>
+
+ <div id="selectArea" class="hell" role="application">
+ <h3>Anmeldung an: $OAName</h3>
+
+
+ <div id="processInfoArea">
+ <p>Für die Anmeldung 'in Vertretung' stehen Ihnen zwei Systeme zur Vollmachtenauswahl zur Verfügung. Bitte wählen Sie das gewünschte Service.</p>
+ </div>
+
+ <div id="processSelectionArea">
+ <div id="elgaMandateButton" class="processSelectionButtonArea">
+ <form method="post" id="moaidform_yes" action="$contextPath$submitEndpoint">
+ <input type="hidden" name="useELGAMandate" value="true">
+ <input type="hidden" name="pendingid" value="$pendingReqID">
+ <input type="submit" value="Eltern-Kind Vertretung" class="processSelectionButton" role="button">
+ </form>
+ <div class="buttonDescription">
+ <p>Eltern-Kind Vertretung</p>
+ </div>
+ </div>
+ <div id="misMandateButton" class="processSelectionButtonArea">
+ <form method="post" id="moaidform_no" action="$contextPath$submitEndpoint">
+ <input type="hidden" name="useMISMandate" value="true">
+ <input type="hidden" name="pendingid" value="$pendingReqID">
+ <input type="submit" value="allgemeine Vertretung" class="processSelectionButton" role="button">
+ </form>
+ <div class="buttonDescription">
+ <p>Vollmachtenservice der Österreichischen Datenschutzbehörde <a href="https://mms.stammzahlenregister.gv.at/mms/moaid.do">(MMS Service)</a></p>
+ </div>
+ </div>
+ <div id="abortButton" class="processSelectionButtonArea">
+ <form method="post" id="moaidform_no" action="$contextPath$submitEndpoint">
+ <input type="hidden" name="pendingid" value="$pendingReqID">
+ <input type="submit" value="Abbrechen" class="processSelectionButton" role="button">
+ </form>
+ <div class="buttonDescription">
+ <p>Den Anmeldevorgang abbrechen</p>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+
+ <!--/div-->
+ </div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/redirectForm.html b/id/server/moa-id-frontend-resources/src/main/resources/templates/redirectForm.html
new file mode 100644
index 000000000..ac3242c89
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/redirectForm.html
@@ -0,0 +1,13 @@
+<html>
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+<script type="text/javascript">
+ </script>
+</head>
+
+
+<body onload="document.getElementById('link').click();">
+ <a href="$URL" target="$TARGET" id="link">CLICK to perform a
+ redirect back to Online Application</a>
+</body>
+</html>
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/sendAssertionFormFull.html b/id/server/moa-id-frontend-resources/src/main/resources/templates/sendAssertionFormFull.html
new file mode 100644
index 000000000..a9f0c4238
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/sendAssertionFormFull.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <!-- MOA-ID 2.x BKUSelection Layout CSS -->
+ <link rel="stylesheet" href="$contextPath/css/buildCSS?pendingid=#ID#" />
+
+ <title>Anmeldung an Online-Applikation</title>
+</head>
+
+
+<body>
+ <div id="page">
+
+ <div id="page1" class="case selected-case" role="main">
+
+<!-- <h2 class="OA_header">Anmeldung an: #OAName#</h2> -->
+
+ <div id="main">
+ <div id="leftcontent" class="hell">
+ <div id="bku_header" class="dunkel">
+ <h2 id="tabheader" class="dunkel" role="heading">
+ Anmeldeinformationen:
+ </h2>
+ </div>
+
+ <div id="selectArea" class="hell" role="application">
+ <h3>Anmeldung an: $OAName</h3>
+
+<!-- <div class="hell"> -->
+ <div id="leftbutton">
+ <form method="post" id="moaidform_yes" action="$contextPath$submitEndpoint">
+ <input type="hidden" name="value" value="true">
+ <input type="hidden" name="pendingid" value="$pendingReqID">
+ <input type="submit" value="Ja" class="setAssertionButton_full" role="button">
+ </form>
+ </div>
+ <div id="rightbutton">
+ <form method="post" id="moaidform_no" action="$contextPath$submitEndpoint">
+ <input type="hidden" name="value" value="false">
+ <input type="hidden" name="pendingid" value="$pendingReqID">
+ <input type="submit" value="Nein" class="setAssertionButton_full" role="button">
+ </form>
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/slo_template.html b/id/server/moa-id-frontend-resources/src/main/resources/templates/slo_template.html
new file mode 100644
index 000000000..b3eb18082
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/slo_template.html
@@ -0,0 +1,94 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+ <!-- MOA-ID 2.x BKUSelection Layout CSS -->
+ <link rel="stylesheet" href="$contextPath/css/buildCSS" />
+
+ #if($timeoutURL)
+ <script type="text/javascript">
+ function sloTimeOut() {
+ window.location.href="$timeoutURL";
+
+ }
+ function RestartAfterDelay() {
+ var eDate = null;
+ var MilliSekZeit = 0;
+ var SysDatumJetzt = new Date();
+ var SysDatumJetztMilli = SysDatumJetzt.getTime();
+
+ do {
+ eDate = new Date();
+ MilliSekZeit = eDate.getTime();
+
+ } while ((MilliSekZeit-SysDatumJetztMilli) < $timeout);
+
+ sloTimeOut();
+ }
+
+ </script>
+ #end
+
+ <title>Single LogOut Vorgang ... </title>
+</head>
+
+#if($timeoutURL)
+ <body onload='setTimeout(sloTimeOut, $timeout);'>
+#else
+ <body>
+#end
+ <noscript>
+ <p>
+ <strong>Note:</strong> Since your browser does not support
+ JavaScript, you must press the Continue button once to proceed.
+ </p>
+ </noscript>
+
+ <div id="page">
+ <div id="page1" class="case selected-case" role="main">
+ <h2 class="OA_header" role="heading">MOA-ID Single LogOut Information</h2>
+ <div id="main">
+ <div id="leftcontent" class="hell" role="application">
+
+ #if($errorMsg)
+ <div class="alert">
+ <p>$errorMsg</p>
+ </div>
+ #end
+
+ #if($successMsg)
+ <div>
+ <p>$successMsg</p>
+ </div>
+ #end
+
+ #if($redirectURLs)
+ <div>
+ <p>
+ Sie werden von allen Online-Applikationen abgemeldet. <br>
+ Dieser Vorgang kann einige Zeit in Anspruch nehmen.
+ </p>
+ </div>
+ #end
+
+ </div>
+ </div>
+ </div>
+ <!--div id="validation">
+ <a href="http://validator.w3.org/check?uri="> <img
+ style="border: 0; width: 88px; height: 31px"
+ src="$contextpath/img/valid-html5-blue.png" alt="HTML5 ist valide!" />
+ </a> <a href="http://jigsaw.w3.org/css-validator/"> <img
+ style="border: 0; width: 88px; height: 31px"
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
+ alt="CSS ist valide!" />
+ </a>
+ </div-->
+ </div>
+
+
+ #foreach( $el in $redirectURLs )
+ <iframe src=$el class="reqframe"></iframe>
+ #end
+</body>
+</html> \ No newline at end of file
diff --git a/id/server/moa-id-frontend-resources/src/main/resources/templates/sso_transfer_template.html b/id/server/moa-id-frontend-resources/src/main/resources/templates/sso_transfer_template.html
new file mode 100644
index 000000000..c76e75d64
--- /dev/null
+++ b/id/server/moa-id-frontend-resources/src/main/resources/templates/sso_transfer_template.html
@@ -0,0 +1,75 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+ <!-- MOA-ID 2.x BKUSelection Layout CSS -->
+ <link rel="stylesheet" href="$contextPath/css/buildCSS" />
+
+ #if($timeoutURL)
+ <script type="text/javascript">
+ function sloTimeOut() {
+ window.location.href="$timeoutURL";
+
+ }
+
+ </script>
+ #end
+
+ <title>Single Sign-On Session Transfer</title>
+</head>
+
+#if($timeoutURL)
+ <body onload='setTimeout(sloTimeOut, $timeout);'>
+#else
+ <body>
+#end
+ <noscript>
+ <p>
+ <strong>Note:</strong> Since your browser does not support
+ JavaScript, you must press the Continue button once to proceed.
+ </p>
+
+ <a href="$timeoutURL">Press this link to resume</a>
+ </noscript>
+
+ <div id="page">
+ <div id="page1" class="case selected-case" role="main">
+ <h2 class="OA_header" role="heading">MOA-ID Single Sign-On Session Transfer Service</h2>
+ <div id="main">
+ <div id="leftcontent" class="hell" role="application">
+
+ #if($errorMsg)
+ <div class="alert">
+ <p>$errorMsg</p>
+ </div>
+ #end
+
+ #if($successMsg)
+ <div>
+ <p>$successMsg</p>
+ </div>
+ #end
+
+ #if($QRImage)
+ <div>
+ <img id="qrCode" src="data:image/gif;base64,$QRImage">
+ </div>
+ #end
+
+ </div>
+ </div>
+ </div>
+ <!--div id="validation">
+ <a href="http://validator.w3.org/check?uri="> <img
+ style="border: 0; width: 88px; height: 31px"
+ src="$contextpath/img/valid-html5-blue.png" alt="HTML5 ist valide!" />
+ </a> <a href="http://jigsaw.w3.org/css-validator/"> <img
+ style="border: 0; width: 88px; height: 31px"
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
+ alt="CSS ist valide!" />
+ </a>
+ </div-->
+ </div>
+
+</body>
+</html> \ No newline at end of file