To create this type of page, you need to start with the login.jsp that ships with Access Manager 3.1 and then add the required code for a header. Figure A-6 illustrates such a page.
Figure A-6 Custom Page Derived from the 3.1 login.jsp File
To create this page, see the following sections:
This custom page does not modify the credential frame. The lines that define the window title (HHB CUSTOM LOGIN), the page header title (ITS A NEW WORLD), and the image (hhbimages.png) are marked in bold in the following sample file.
<%@ page language="java" %>
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="com.novell.nidp.*" %>
<%@ page import="com.novell.nidp.servlets.*" %>
<%@ page import="com.novell.nidp.resource.*" %>
<%@ page import="com.novell.nidp.resource.jsp.*" %>
<%@ page import="com.novell.nidp.ui.*" %>
<%
ContentHandler handler = new ContentHandler(request,response);
String target = (String)request.getAttribute("target");
String hdrImage = "/custom_images/hhbimages.jpeg";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//<%=handler.getLanguageCode()%>">
<html lang="<%=handler.getLanguageCode()%>">
<head>
<title>HHB CUSTOM LOGIN </title>
<META HTTP-EQUIV="Content-Language" CONTENT="<%=handler.getLanguageCode()%>">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<style type="text/css" media="screen">
td label { font-size: 0.85em ; padding-right: 0.2em; }
label { font-size: 0.77em; padding-right: 0.2em; }
input { font-family: sans-serif; }
.instructions { color: #4d6d8b; font-size: 0.8em; margin: 0 10px 10px 0 }
</style>
<script type="text/javascript" src="<%= handler.getImage("showhide_2.js",false)%>"></script>
<script language="JavaScript">
var i = 0;
function imageSubmit()
{
if (i == 0)
{
i = 1;
document.IDPLogin.submit();
}
return false;
}
</script>
</head>
<body text="lightcyan" style="background-color:Black" marginwidth="300" marginheight="100" leftmargin="350" topmargin="0" rightmargin="0" onLoad="document.IDPLogin.Ecom_User_ID.focus();" >
<br>
<h1><u> IT’S A NEW WORLD</u></h1>
<form name="IDPLogin" enctype="application/x-www-form-urlencoded" method="POST" action="<%= (String) request.getAttribute("url") %>" AUTOCOMPLETE="off">
<input type="hidden" name="option" value="credential">
<% if (target != null) { %>
<input type="hidden" name="target" value="<%=target%>">
<% } %>
<table border=0 style="margin-top: 1em" width="20" cellspacing="0" cellpadding="0">
<tr>
<div id="headimage"><img src="<%=handler.getImage(hdrImage,false)%>" alt="" height="80" width="150" border="0"></div>
</tr>
<tr>
<td style="padding: 0px">
<table border=0>
<br><br>
<tr>
<td align=center>
<label><%=handler.getResource(JSPResDesc.USERNAME)%></label>
</td>
<td align=center>
<input type="text" class="smalltext" name="Ecom_User_ID" size="30">
</td>
</tr>
<tr>
<td align=center>
<label><%=handler.getResource(JSPResDesc.PASSWORD)%></label>
</td>
<td align=center>
<input type="password" class="smalltext" name="Ecom_Password" size="30">
</td>
</tr>
<tr>
<td align=right colspan=2 style="white-space: nowrap">
<input alt="<%=handler.getResource(JSPResDesc.LOGIN)%>" border="0" name="loginButton2" src="<%= handler.getImage("btnlogin.gif",true)%>" type="image" value="Login" onClick="return imageSubmit()">
</td>
</tr>
</table>
</td>
</tr>
<%
String err = (String) request.getAttribute(NIDPConstants.ATTR_LOGIN_ERROR);
if (err != null)
{
%>
<td style="padding: 10px">
<div class="instructions"><%=err%></div>
</td>
</tr>
<% } %>
<%
if (NIDPCripple.isCripple())
{
%>
<tr>
<td width="100%" align="center"><%=NIDPCripple.getCrippleAdvertisement(request.getLocale())%></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
After modifying the file, you still need to create a method and a contract. The method needs to use a name/password class and have the following properties defined:
JSP property values:
Property Name: JSP
Property Value: <filename>
Replace <filename> with the name of your custom login page. Do not include the JSP extension in the value.
MainJSP property values:
Property Name: MainJSP
Property Value: true
You then need to create a contract that uses this method and assign it to a protected resource.