package pt.estgp.estgweb.web.controllers.authenticate;
import org.apache.struts.action.*;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.web.controllers.announcements.AnnouncementsController;
import pt.estgp.estgweb.web.controllers.ApplicationController;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.services.authenticate.AuthenticateException;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.UserSession;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.net.URL;
import java.net.URLConnection;
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class AuthenticateController
extends ApplicationDispatchController
{
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(AuthenticateController.
class);
public ActionForward login
(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/io/IOException.html">IOException, ServletException
{
1.5.0/docs/api/java/lang/String.html">String username = request.
getParameter("username");
1.5.0/docs/api/java/lang/String.html">String password = request.
getParameter("password");
try
{
IServiceManager sm = ServiceManager.
getInstance();
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{username,password
};
sm.
execute(RequestUtils.
getRequester(request
),
"Authenticate",args
);
UserSessionProxy.
loadUserSession(request
);
return mapping.
findForward("success");
}
catch (AuthenticateException e
)
{
ActionMessages actionMessages =
new ActionMessages
();
actionMessages.
add(ActionMessages.
GLOBAL_MESSAGE,
new ActionMessage
(e.
getMessage()));
saveErrors
(request, actionMessages
);
return mapping.
getInputForward();
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
if(e
instanceof NoCookiesException
)
return mapping.
findForward("errorNoCookies");
logger.
fatal(e,e
);
}
return mapping.
findForward("error500");
}
public ActionForward logout
(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/io/IOException.html">IOException, ServletException
{
try
{
UserSession userSession = UserSessionProxy.
loadUserSessionFromRequest(request
);
if(userSession.
getUser() ==
null)
return mapping.
findForward("welcome");
IServiceManager sm = ServiceManager.
getInstance();
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{};
//to send good by message
request.
setAttribute("username",userSession.
getUser().
getUsername());
request.
setAttribute("name",userSession.
getUser().
getName());
userSession =
(UserSession
) sm.
execute(RequestUtils.
getRequester(request
),
"Logout",args
);
request.
setAttribute(Globals.
USER_SESSION_KEY,userSession
);
return mapping.
findForward("logout");
}
catch (AuthenticateException e
)
{
ActionMessages actionMessages =
new ActionMessages
();
actionMessages.
add(ActionMessages.
GLOBAL_MESSAGE,
new ActionMessage
(e.
getMessage()));
saveErrors
(request, actionMessages
);
return mapping.
getInputForward();
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
if(e
instanceof NoCookiesException
)
return mapping.
findForward("errorNoCookies");
logger.
fatal(e,e
);
}
return mapping.
findForward("error500");
}
}