228 lines
5.3 KiB
Java
228 lines
5.3 KiB
Java
package org.thdl.lex;
|
|
import java.io.IOException;
|
|
import javax.servlet.RequestDispatcher;
|
|
|
|
import javax.servlet.ServletConfig;
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.HttpServlet;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
import org.thdl.lex.component.*;
|
|
import org.thdl.users.*;
|
|
|
|
|
|
/**
|
|
* Description of the Class
|
|
*
|
|
* @author travis
|
|
* @created October 2, 2003
|
|
*/
|
|
public class LoginServlet extends HttpServlet
|
|
{
|
|
//attributes
|
|
|
|
private String welcomePage;
|
|
private String loginPage;
|
|
private UserSessionManager sessionManager;
|
|
|
|
|
|
//accessors
|
|
/**
|
|
* Sets the welcomePage attribute of the LoginServlet object
|
|
*
|
|
* @param welcomePage The new welcomePage value
|
|
* @since
|
|
*/
|
|
public void setWelcomePage( String welcomePage )
|
|
{
|
|
this.welcomePage = welcomePage;
|
|
}
|
|
|
|
|
|
/**
|
|
* Sets the loginPage attribute of the LoginServlet object
|
|
*
|
|
* @param loginPage The new loginPage value
|
|
* @since
|
|
*/
|
|
public void setLoginPage( String loginPage )
|
|
{
|
|
this.loginPage = loginPage;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the welcomePage attribute of the LoginServlet object
|
|
*
|
|
* @return The welcomePage value
|
|
* @since
|
|
*/
|
|
public String getWelcomePage()
|
|
{
|
|
return welcomePage;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the loginPage attribute of the LoginServlet object
|
|
*
|
|
* @return The loginPage value
|
|
* @since
|
|
*/
|
|
public String getLoginPage()
|
|
{
|
|
return loginPage;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the sessionManager attribute of the LoginServlet object
|
|
*
|
|
* @return The sessionManager value
|
|
* @since
|
|
*/
|
|
public UserSessionManager getSessionManager()
|
|
{
|
|
if ( null == sessionManager )
|
|
{
|
|
return UserSessionManager.getInstance();
|
|
}
|
|
else
|
|
{
|
|
return sessionManager;
|
|
}
|
|
}
|
|
|
|
|
|
//helper methods
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param config Description of Parameter
|
|
* @exception ServletException Description of Exception
|
|
* @since
|
|
*/
|
|
public void init( ServletConfig config ) throws ServletException
|
|
{
|
|
setWelcomePage( "/action?cmd=menu" );
|
|
|
|
if ( getWelcomePage() == null )
|
|
{
|
|
throw new ServletException( "The welcomePage init parameter must be specified." );
|
|
}
|
|
|
|
setLoginPage( config.getInitParameter( "loginPage" ) );
|
|
|
|
if ( getLoginPage() == null )
|
|
{
|
|
throw new ServletException( "The loginPage init parameter must be specified." );
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param request Description of Parameter
|
|
* @param response Description of Parameter
|
|
* @exception ServletException Description of Exception
|
|
* @since
|
|
*/
|
|
public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException
|
|
{
|
|
String username = request.getParameter( LexConstants.USERNAME_REQ_PARAM );
|
|
|
|
if ( username == null )
|
|
{
|
|
throw new ServletException( "No Username Specified" );
|
|
}
|
|
|
|
String password = request.getParameter( LexConstants.PASSWORD_REQ_PARAM );
|
|
|
|
if ( password == null )
|
|
{
|
|
throw new ServletException( "No Password Specified" );
|
|
}
|
|
|
|
ThdlUser thdlUser = null;
|
|
try
|
|
{
|
|
ThdlUser lexUser = new LexUser();
|
|
lexUser.setUsername( username );
|
|
lexUser.setPassword( password );
|
|
lexUser = ThdlUserRepository.getInstance().validate( lexUser, "dictionary" );
|
|
doLoginSuccess( request, response, lexUser );
|
|
}
|
|
catch ( ThdlUserRepositoryException ture )
|
|
{
|
|
//doLoginFailure( request, response, username );
|
|
throw new ServletException( ture );
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
throw new ServletException( e );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param request Description of Parameter
|
|
* @param response Description of Parameter
|
|
* @param user Description of Parameter
|
|
* @exception IOException Description of Exception
|
|
* @exception LexRepositoryException Description of Exception
|
|
* @exception LexComponentException Description of Exception
|
|
* @since
|
|
*/
|
|
private void doLoginSuccess( HttpServletRequest request, HttpServletResponse response, ThdlUser user ) throws IOException, LexRepositoryException, LexComponentException
|
|
{
|
|
HttpSession session = request.getSession( true );
|
|
getSessionManager().setSessionUser( session, user );
|
|
|
|
Preferences preferences = new Preferences( user );
|
|
getSessionManager().setPreferences( session, preferences );
|
|
|
|
getSessionManager().setDisplayMode( session, "brief" );
|
|
String targetPage = getSessionManager().getSessionLoginTarget( session, true );
|
|
|
|
if ( targetPage == null )
|
|
{
|
|
UserSessionManager.doRedirect( request, response, getWelcomePage() );
|
|
}
|
|
else
|
|
{
|
|
targetPage = response.encodeRedirectURL( targetPage );
|
|
response.sendRedirect( targetPage );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param request Description of Parameter
|
|
* @param response Description of Parameter
|
|
* @param username Description of Parameter
|
|
* @exception ServletException Description of Exception
|
|
* @since
|
|
*/
|
|
private void doLoginFailure( HttpServletRequest request, HttpServletResponse response, String username ) throws ServletException
|
|
{
|
|
|
|
String loginURL = getLoginPage() + "?retry=true&username=" + username;
|
|
try
|
|
{
|
|
UserSessionManager.doRedirect( request, response, loginURL );
|
|
}
|
|
catch ( IOException ioe )
|
|
{
|
|
throw new ServletException( ioe );
|
|
}
|
|
}
|
|
}
|
|
|