package org.tgdb; import org.tgdb.frame.ArxLoginException; import org.tgdb.frame.ArxLoginForward; import org.tgdb.frame.Caller; import org.tgdb.frame.ILogin; import org.tgdb.project.projectmanager.ProjectManagerRemote; import org.tgdb.servicelocator.ServiceLocator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TgDbLogin implements ILogin { private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(TgDbLogin.class); public TgDbLogin() {} public String getLoginView() { // return "/tgdb.jsp"; return "/welcome.jsp"; } public String getFirstWorkflow() { return "Controller?workflow=begin"; } public boolean validUP(HttpServletRequest request){ boolean isvalid = true; if (request.getParameter("usr")==null || request.getParameter("pwd")==null || request.getParameter("usr").length()==0 || request.getParameter("pwd").length()==0 || request.getParameter("usr").trim().length()==0 || request.getParameter("pwd").trim().length()==0 || request.getParameter("usr").trim()==null || request.getParameter("pwd").trim()==null){ isvalid = false; return isvalid; } return isvalid; } public Caller doLogin(HttpServletRequest request, HttpServletResponse response) throws ArxLoginException, ArxLoginForward { //logger.debug("---------------------------------------->TgDbLogin#doLogin()"); TgDbCaller caller = new TgDbCaller(); try { if(!validUP(request)) { if(request.getSession().getAttribute("caller")==null){ ServiceLocator locator = ServiceLocator.getInstance(); ProjectManagerRemote prjManager = (ProjectManagerRemote)locator.getManager(ServiceLocator.Services.PROJECTMANAGER); caller = prjManager.login("public", "notknown"); caller.updatePrivileges(); prjManager.log("user:"+request.getParameter("usr")+" & pwd:"+request.getParameter("pwd")+". Bad Login"+" "+request.getRemoteAddr()+" "+request.getRemoteHost()); return caller; } else { return (Caller) request.getSession().getAttribute("caller"); } } else { String usr = request.getParameter("usr"); String pwd = request.getParameter("pwd"); ServiceLocator locator = ServiceLocator.getInstance(); ProjectManagerRemote prjManager = (ProjectManagerRemote)locator.getManager(ServiceLocator.Services.PROJECTMANAGER); caller = prjManager.login(usr, pwd); if(caller!=null){ caller.updatePrivileges(); prjManager.log("user "+caller.getName()+" logged in."+" Login "+caller.getName()+" "+request.getRemoteAddr()+" "+request.getRemoteHost()); logger.debug("---------------------------------------->TgDbLogin#doLogin(): Correct input for "+caller.getName()); }else{ if(request.getSession().getAttribute("caller")==null){ caller = prjManager.login("public", "notknown"); caller.updatePrivileges(); logger.debug("---------------------------------------->TgDbLogin#doLogin(): Incorrect login input"); }else{ return (Caller) request.getSession().getAttribute("caller"); } } return caller; } } catch (Exception e) { throw new ArxLoginException("TgDbLogin#doLogin(...): Login method failed", e); } } }