The default Airlock IAM layout provides a clean and simple user interface. If your situation requires placing additional content on the login pages, such as advertisements, info on other services/products or about your company, etc. you can provide your own page layout.
- Assuming you have a complete set of files that make up your page (HTML, CSS, javascript, images, etc.) you need to do the following:
- Copy all images to
instances/auth/loginapp-layout/images
- Copy all JavaScript source files to
instances/auth/loginapp-layout/js
- Copy all CSS files to
instances/auth/loginapp-layout/css
(which you have to create first) - From your HTML file, copy everything within the
<body> ... </body>
tags to instances/auth/loginapp-layout/layout/layout.jsp - From your HTML file, extract all elements within the
<head> ... </head>
tags which are required for your page and copy them toinstances/auth/loginapp-layout/html-header-custom.jsp
Make sure you retain the taglib line
Update all image and JavaScript file references to point to /images/
and /js/
, respectively
If you have multiple HTML files for different flows (e.g. one for login, another for registration, and a third one for token migration), you have to do this for each file and put the contents into independent layout files
Take care to replace previous lines in this file which are no longer necessary, e.g. the favicon definitions (see also below "Note about favicons")
Also note that jQuery is required by Airlock IAM and already included in the page's head (if you absolutely need to know the exact version number, please check in html-header.jsp
in loginapp.war
)
Next, you need to specify where in your layout the Airlock IAM specific content (e.g. login form etc.) must be included. A minimal layout may look as follows:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!-- Including the header --> <jsp:include page="/header-custom.jsp"/> <!-- The title of the page --> <h1><fmt:message key="${param.contentTitleKey}"/></h1> <!-- The actual body --> <jsp:include page="${param.content}"/> <!-- The footer --> <jsp:include page="/footer-custom.jsp"/>
- Accordingly, all your layout files created in step 4 above need to be modified to include references to Airlock IAM content:
<jsp:include page="${param.content}"/>
<jsp:include page="/content/language-selection.jsp"/>
<fmt:message key="${param.contentTitleKey}"/>
Required. Includes the main content (login form, feedback messages etc.).
Optional. Includes the language switcher. By default, called in header-custom.jsp
Can be removed if all your users speak the same language
Optional. Includes the translated heading.
If you have one single layout file, it will be applied to almost all pages. Please check instances/auth/loginapp-layout/layout/minimal-layout.jsp
for exceptions. Depending on your situation, you may want to adjust it accordingly.
If, on the other hand, you have multiple layout files, you will have to define which page uses which layout. In the page's JSP, set the layout
attribute.
For example in login.jsp
:
<%@ page contentType="text/html" pageEncoding="UTF-8" %> <%@ taglib prefix="iam" uri="/WEB-INF/tld/layout.tld" %> <iam:layout layout="/layout/my-company-layout.jsp" htmlTitleKey="loginpage.title" contentTitleKey="loginpage.form-caption" pageId="login"> <jsp:attribute name="htmlHeader">/content/login-header.jsp</jsp:attribute> <jsp:attribute name="content">/content/login-content.jsp</jsp:attribute> </iam:layout>