aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java
new file mode 100644
index 000000000..a80fcfa25
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java
@@ -0,0 +1,107 @@
+package at.gv.egovernment.moa.id.auth.builder;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.net.URI;
+
+import org.apache.commons.io.IOUtils;
+
+import at.gv.egovernment.moa.id.auth.servlet.GenerateIFrameTemplateServlet;
+import at.gv.egovernment.moa.id.config.OAParameter;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.protocols.saml1.SAML1Protocol;
+import at.gv.egovernment.moa.logging.Logger;
+
+public class LoginFormBuilder {
+
+ private static final String HTMLTEMPLATESDIR = "htmlTemplates/";
+ private static final String HTMLTEMPLATEFULL = "loginFormFull.html";
+ private static final String HTMLTEMPLATEIFRAME = "loginFormIFrame.html";
+
+ private static String AUTH_URL = "#AUTH_URL#";
+ private static String MODUL = "#MODUL#";
+ private static String ACTION = "#ACTION#";
+ private static String OANAME = "#OAName#";
+ private static String BKU_ONLINE = "#ONLINE#";
+ private static String BKU_HANDY = "#HANDY#";
+ private static String BKU_LOCAL = "#LOCAL#";
+ private static String CONTEXTPATH = "#CONTEXTPATH#";
+ private static String MOASESSIONID = "#SESSIONID#";
+
+ private static String SERVLET = CONTEXTPATH+"/GenerateIframeTemplate";
+
+ private static String getTemplate(boolean isIFrame) {
+
+ String template = null;
+
+ try {
+ String pathLocation;
+
+ InputStream input;
+
+ String rootconfigdir = AuthConfigurationProvider.getInstance().getRootConfigFileDir();
+
+ if (isIFrame)
+ pathLocation = rootconfigdir + HTMLTEMPLATESDIR + HTMLTEMPLATEIFRAME;
+ else
+ pathLocation = rootconfigdir + HTMLTEMPLATESDIR + HTMLTEMPLATEFULL;
+
+ try {
+ File file = new File(new URI(pathLocation));
+ input = new FileInputStream(file);
+
+ } catch (FileNotFoundException e) {
+
+ Logger.warn("No LoginFormTempaltes found. Use Generic Templates from package.");
+
+ if (isIFrame)
+ pathLocation = "resources/templates/" + HTMLTEMPLATEIFRAME;
+ else
+ pathLocation = "resources/templates/" + HTMLTEMPLATEFULL;
+
+ input = Thread.currentThread()
+ .getContextClassLoader()
+ .getResourceAsStream(pathLocation);
+
+ }
+
+ StringWriter writer = new StringWriter();
+ IOUtils.copy(input, writer);
+ template = writer.toString();
+ template = template.replace(AUTH_URL, SERVLET);
+ template = template.replace(BKU_ONLINE, OAAuthParameter.ONLINEBKU);
+ template = template.replace(BKU_HANDY, OAAuthParameter.HANDYBKU);
+ template = template.replace(BKU_LOCAL, OAAuthParameter.LOCALBKU);
+
+ input.close();
+
+ } catch (Exception e) {
+ Logger.error("Failed to read template", e);
+ }
+ return template;
+ }
+
+ public static String buildLoginForm(String modul, String action, String oaname, String contextpath, boolean isIFrame, String moaSessionID) {
+ String value = getTemplate(isIFrame);
+
+ if(value != null) {
+ if(modul == null) {
+ modul = SAML1Protocol.PATH;
+ }
+ if(action == null) {
+ action = SAML1Protocol.GETARTIFACT;
+ }
+ value = value.replace(MODUL, modul);
+ value = value.replace(ACTION, action);
+ value = value.replace(OANAME, oaname);
+ value = value.replace(CONTEXTPATH, contextpath);
+ value = value.replace(MOASESSIONID, moaSessionID);
+ }
+ return value;
+ }
+
+}