Guest User

Untitled

a guest
Oct 31st, 2017
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 30.70 KB | None | 0 0
  1. package com.wm.scmt.controller.login;
  2.  
  3.  
  4. //import java.util.Base64;
  5. //To try and do base64 with java 1.6
  6. import static javax.xml.bind.DatatypeConverter.printBase64Binary;
  7.  
  8. import java.nio.charset.Charset;
  9. import java.util.ArrayList;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Locale;
  13. import java.util.Map;
  14. //import java.util.ResourceBundle;
  15. import java.util.logging.Level;
  16. import java.util.logging.Logger;
  17.  
  18. import javax.servlet.http.HttpServletRequest;
  19. import javax.servlet.http.HttpServletResponse;
  20.  
  21. import org.springframework.beans.factory.BeanFactory;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.context.support.ClassPathXmlApplicationContext;
  24. import org.springframework.http.HttpEntity;
  25. import org.springframework.http.HttpHeaders;
  26. import org.springframework.http.HttpMethod;
  27. import org.springframework.http.MediaType;
  28. import org.springframework.http.ResponseEntity;
  29. import org.springframework.http.converter.StringHttpMessageConverter;
  30. import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;
  31. import org.springframework.stereotype.Controller;
  32. import org.springframework.web.bind.annotation.RequestMapping;
  33. import org.springframework.web.bind.annotation.RequestMethod;
  34. import org.springframework.web.bind.annotation.RequestParam;
  35. import org.springframework.web.client.RestTemplate;
  36. import org.springframework.web.servlet.ModelAndView;
  37. import org.springframework.web.servlet.support.RequestContextUtils;
  38. import org.springframework.web.servlet.view.RedirectView;
  39.  
  40. import com.wm.corelib.security.Role;
  41. import com.wm.corelib.security.User;
  42. import com.wm.scmt.actionforms.LoginForm;
  43. import com.wm.scmt.actionforms.SSOTokenRequest;
  44. import com.wm.scmt.actionforms.SSOTokenResponse;
  45. import com.wm.scmt.data.UserRoles;
  46. import com.wm.scmt.data.inbound.TenantDataManagerInbound;
  47. import com.wm.scmt.spring.GenericMessage;
  48. import com.wm.scmt.spring.ScmtConstants;
  49. import com.wm.scmt.spring.ScmtController;
  50. import com.wm.scmt.util.StringUtil;
  51. import com.wm.scmt.validators.ProcessLoginValidator;
  52.  
  53. import common.JsonWebSignatureUtil;
  54. import entitites.IAMPayload;
  55. import entitites.JsonWebKey;
  56.  
  57.    
  58.     @Controller
  59.     public class ProcessLogin extends ScmtController {
  60.       /** logger */
  61.     public static final Logger logger = Logger.getLogger(ProcessLogin.class.getName());
  62.    
  63.     /**
  64.      * Log in User and store in session, forward to proper destination
  65.      */
  66.      ProcessLoginValidator processLoginValidator;
  67.      String cssStyle;
  68.      String lookupType="CCS FILE";
  69.      String LookupCode="1";
  70.    
  71.     @Autowired
  72.     public ProcessLogin(ProcessLoginValidator processLoginValidator){
  73.         this.processLoginValidator=processLoginValidator;
  74.     }
  75.    
  76.     @RequestMapping(value="/Login.htm" , method = RequestMethod.GET)
  77.     public ModelAndView showLoginForm(Map<String, Object> model , HttpServletRequest request) {
  78.         LoginForm loginForm = new LoginForm();
  79.         model.put("processLogin",loginForm);
  80.         //currently we are giving all the parameters in the login.jsp. thats why this is commented out.under normal conditions, we would pass this information
  81.         //based on qa or stg or prod environments
  82. //      ResourceBundle rb = ResourceBundle.getBundle("iam-sso");
  83. //      String ssoUrl = rb.getString("iam.sso.authorize.end.point.url");
  84. //        String clientId = rb.getString("iam.sso.client.id");
  85. //        String scope = "openid%20profile%20%20email";
  86. //        String redirectUri = rb.getString("iam.sso.redirect_uri");
  87. //        String nonce = "232";
  88. //        String state = "232";
  89. //        //-----------------redirect to sso login page /authorize with the correct query parameters
  90. //        String finalUrl = ssoUrl
  91. //              + "&client_id=" +  clientId
  92. //              + "&scope=" + scope
  93. //              + "&redirect_uri=" + redirectUri
  94. //              + "&nonce=" + nonce
  95. //              + "&state=" + state;
  96.        
  97.         if(RequestContextUtils.getLocale(request).equals(Locale.CHINA)){
  98.             cssStyle="CNSbttn";
  99.         }
  100.         else{cssStyle="USSbttn";}
  101.         model.put("cssBttnStyle",cssStyle);
  102.         //model.put("loginUrl", finalUrl);
  103.         //Currently the button is redirecting to the SSO url, in the login.jsp page
  104.          return new ModelAndView("login/login", model);
  105.     }
  106.    
  107.     @RequestMapping(value="/ProcessLogin.htm")
  108.     protected ModelAndView processLogin(@RequestParam("code") String code,
  109.             @RequestParam("state") String state,
  110.             HttpServletRequest request,
  111.             HttpServletResponse response)
  112.             throws Exception
  113.     {
  114.         BeanFactory beanfactory = new ClassPathXmlApplicationContext("context.xml");
  115.         GenericMessage genericMessage         = (GenericMessage) beanfactory.getBean("GenericMessage");
  116.         Locale locale                         = RequestContextUtils.getLocale(request);
  117.         Map<String, Object> processLoginModel = new HashMap<String,Object>();
  118.        
  119.         if (logger.isLoggable(Level.FINE)) {
  120.             logger.log(Level.FINE, "Code = " + code + ", State = " + state);
  121.         }                      
  122.  
  123.         ModelAndView modelAndWiew;      
  124.         RestTemplate restTemplate = new RestTemplate();
  125.         String clientId = "eef6e5e0-17f3-4e1f-9728-26ffb67bfcf2";
  126.         String clientSecret = "MNU5yZNu2hguKoM50krcaZRIR4sTijU7ap7emz5crkTDqa1qtS7NC0V5ppWvzuRMk9CE2Hvkz_wHwNPFsU4ZMg";
  127.         String idTokenSigningKey = "{\"kty\":\"RSA\",\"e\":\"AQAB\",\"use\":\"sig\",\"kid\":\"1805470c-564e-498e-89b4-9364a2f5eb73\",\"alg\":\"RSA1_5\",\"n\":\"lTSTH0Rv4u1WNSU7ne2VVcNhWPdlM69JQ0eJe7tVQVerg7WA_T-y2dN608q4UdADltxnsemJcJlZdnyG0Ksq5hwUiCPdsCfuRUuhc8XW_3DEIY0PzP2xW8EZIoWAnOHcbGXaqT2y-vvqoaQrZCtvEo5VLjMnfe7nExM0txibyd8\"}";
  128.         String redirectUrl = "http://rkata-linux.corp.walmart.com/ProcessLogin.htm";
  129.        
  130.         String SsoUrl = "https://idp.dev.sso.platform.qa.walmart.com/platform-sso-server/authorize?response_type=code";
  131.         String scope = "openid";  //We may be able to remove profile and email, since we only want authentication
  132.         String redirectUri = "http://rkata-linux.corp.walmart.com/ProcessLogin.htm";   //redirect to here if login is successful
  133.         String nonce = "232";
  134.        
  135.         String finalUrl = SsoUrl
  136.                 + "&client_id=" +  clientId
  137.                 + "&scope=" + scope
  138.                 + "&redirect_uri=" + redirectUri
  139.                 + "&nonce=" + nonce
  140.                 + "&state=" + state;
  141.         processLoginModel.put("loginUrl", finalUrl);
  142.        
  143.         // Process login
  144.         User user = null;
  145.         SSOTokenResponse tokenInfo = null;
  146.         String[] debugger = new String[10];
  147.         ResponseEntity<SSOTokenResponse> tokenResponse = null;
  148.         HttpHeaders responseHeaders = null;
  149.         try {
  150.             //Use client id and client secret to generate authorization Header in Base 64                       //need to extract the authorization code and send a REST api request to /token endpoint
  151.             // Header fields           
  152.             final String clientIdAndSecret = String.format("%s:%s",
  153.                     clientId,
  154.                     clientSecret);
  155.             //final String encoded = Base64.getEncoder()
  156.                     //.encodeToString(clientIdAndSecret.getBytes(Charset.forName("UTF-8")));
  157.             final String encoded = printBase64Binary(clientIdAndSecret.getBytes(Charset.forName("UTF-8")));
  158.             final String authorizationHeader = String.format("Basic %s", encoded);
  159.             //prepare headers
  160.             HttpHeaders headers = new HttpHeaders();
  161.             List<MediaType> mediaTypes = new ArrayList<MediaType>();
  162.             mediaTypes.add(MediaType.APPLICATION_JSON);
  163.             headers.setAccept(mediaTypes);
  164.             headers.setContentType(MediaType.APPLICATION_JSON);
  165.             headers.add("Authorization", authorizationHeader); 
  166.            
  167.            
  168.             // generate Request Body
  169.             //at this point we have recieved the otp code. now we need to make a token call.
  170.             //now we need to decrypt the data, to send it to the /token api call
  171.            
  172.             SSOTokenRequest body = new SSOTokenRequest();
  173.             body.setOTP_CODE(code);
  174.             body.setGRANT_TYPE("authorization_code");          
  175.             body.setREDIRECT_URL(redirectUri);     
  176.            
  177.             HttpEntity<SSOTokenRequest> entity = new HttpEntity<SSOTokenRequest>(body, headers);
  178.            
  179.             restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
  180.             restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
  181.             // Calling Token API and getting response
  182.             tokenResponse = restTemplate.exchange(
  183.                     "https://idp.qa.sso.platform.qa.walmart.com/platform-sso-server/token",
  184.                     HttpMethod.POST,
  185.                     entity,
  186.                     SSOTokenResponse.class);
  187.             tokenInfo = tokenResponse.getBody();
  188.             responseHeaders = tokenResponse.getHeaders();
  189.             debugger[7] = tokenResponse.hasBody() ? "Body = true"  : "Body = false";
  190.             debugger[6] = Integer.toString(tokenResponse.getHeaders().size());
  191.             debugger[0] = "";
  192.             for(String s : responseHeaders.keySet()) {
  193.                 debugger[0] += responseHeaders.get(s);
  194.             }
  195.             //we get back the response from token , so at this point we get redirected.
  196.             final entitites.ReadOnlyJWTClaimsSet claimsSet = JsonWebSignatureUtil.getJWTClaimsSetFromSignedInput(
  197.                     new IAMPayload(tokenInfo.getId_token()), JsonWebKey.parse(idTokenSigningKey));
  198.             final String userName = (String) claimsSet.getCustomClaim("name");
  199.             final String emailId = (String) claimsSet.getCustomClaim("email");
  200.             final String loginId = (String) claimsSet.getCustomClaim("loginId");
  201.             final String userId = loginId.substring(loginId.indexOf("\\") + 1);
  202.             debugger[1] = userName != null ? "username_not_null" + userName : "username_null";
  203.             debugger[2] = emailId != null ? "email_not_null" + emailId : "email_null";
  204.             debugger[3] = loginId != null ? "loginid_not_null" + loginId : "loginid_null";
  205.             debugger[4] = "Claimset = " + claimsSet.toString();
  206.             user = User.loadUserById(Integer.parseInt(userId));
  207.             //user = null;
  208.            
  209.         } catch (Throwable e) {
  210.             e.printStackTrace();
  211.         } // save in session, forward appropriately
  212.         //ActionForward forward;
  213.         if ((user != null)) { //success
  214.             //no longer necessary user.logLastLogin();
  215.             request.getSession().setAttribute(USER_KEY, user);
  216.             try {
  217.                 TenantDataManagerInbound tenantDataManagerInbound=new TenantDataManagerInbound(user.getCountryCode().toLowerCase());
  218.                 cssStyle=tenantDataManagerInbound.lookUpCSSStyle(user.getTenantId(), lookupType, LookupCode);
  219.             }
  220.             catch(Exception e) {
  221.                 e.printStackTrace();
  222.                 cssStyle="sbttn";
  223.             }
  224.             if(cssStyle==null|| cssStyle.equals("")){
  225.                 cssStyle="sbttn";
  226.             }
  227.             request.getSession().setAttribute("cssBttnStyle", cssStyle);
  228.             if (StringUtil.isNonBlank(redirectUrl)) {
  229.                 modelAndWiew = new ModelAndView(new RedirectView(redirectUrl));              
  230.             } else {
  231.                 //check if a redirectUrl exists
  232.                 if(request.getParameter("redirectUrl")!=null && request.getParameter("redirectUrl").length()>0) {
  233.                     String queryStr = (request.getQueryString()==null?"":"?"+request.getQueryString());
  234.                     String newURL = request.getParameter("redirectUrl")+queryStr+"acd";
  235.                     try {
  236.                         response.sendRedirect(newURL);
  237.                     } catch (java.io.IOException e) {
  238.                         e.printStackTrace();
  239.                         genericMessage.addMessage("login.redirect.failure", new Object[]{request.getParameter("redirectUrl")},locale);
  240.                         saveErrors(request, genericMessage);                          
  241.                         modelAndWiew=new ModelAndView("login/login", processLoginModel);
  242.                        
  243.                     }
  244.                     return null;
  245.                 }    
  246.                    
  247.                 if(hasInboundRead(user) || hasInboundEdit(user) ||
  248.                    hasWatchlistView(user) || hasWatchlistEdit(user)) {
  249.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_WATCHLIST);
  250.                 } else if(hasAdmin(user)) {
  251.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARd_TO_INBOUND);
  252.                 } else if(hasTransprtOnly(user)) {
  253.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_TRANSPRT);
  254.                 } else if(hasFinanceOnly(user)) {
  255.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_FINANCE);
  256.                 } else if( (hasTransprtRead(user) || hasTransprtEdit(user) ) &&
  257.                     (hasFinanceRead(user) || hasFinanceEdit(user) ) )  {
  258.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_TRANSPRT);
  259.                 } else if(hasIatView(user) || hasIatEdit(user) || hasIatAdmin(user)) {
  260.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_IAT);
  261.                 } else if(hasOsdView(user) || hasOsdEdit(user)) {
  262.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_OSD);
  263.                 } else if(hasDcOpsView(user) || hasDcOpsEdit(user)) {
  264.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_DCOPS);
  265.                 } else if(hasScmtRLViewOnly(user)) {
  266.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_RL);
  267.                 } else if(hasOsdView(user) || hasAdjAdmin(user)) {
  268.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_ADJUSTMENTS);
  269.                 } else if(hasReturnsView(user)) {
  270.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_RETURNS);
  271.                 } else if(hasAutoDisp(user)) {
  272.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_AUTO_DISP);
  273.                 } else if(hasGenericUser(user)) {
  274.                     //modelAndWiew = new ModelAndView(new RedirectView(ScmtConstants.REDIERCT_TO_INBOUND));
  275.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARd_TO_INBOUND);
  276.                 } else if(hasScmtCostOverridesOnly(user)) {
  277.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_OVERRIDES);
  278.                 } else if(hasScmtPutInvBuffer(user)) {
  279.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_PUTINVENTORYBUFFER);
  280.                     } else if(hasScmtUserAdmin(user)) {
  281.                             modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_USER_ADMIN);
  282.                 } else {
  283.                     modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_SUCCESS);
  284.                 }    
  285.             }
  286.         } else {  
  287.             //genericMessage.addMessage("login.failure",  new Object[]{}, locale);
  288.            
  289.             debugger[8] = "User data = " + user;
  290.             debugger[9] = "state = " + state + "code = " + code;
  291.             //debugger.add("Tokenresponse = " + tokenInfo.toString());
  292.             genericMessage.addMesage(debugger);
  293.             saveErrors(request, genericMessage);           
  294.             modelAndWiew =new ModelAndView("login/login",processLoginModel);
  295.         }
  296.         return modelAndWiew;
  297.     }
  298.    
  299. //  @RequestMapping(value="/ProcessLogin.htm")
  300. //    protected ModelAndView processLogin(@ModelAttribute("processLogin")  LoginForm loginForm, BindingResult  result,
  301. //                                                                   HttpServletRequest request,HttpServletResponse response)
  302. //          throws Exception {
  303. //
  304. //          String username = (String)loginForm.getUserName();
  305. //          String password = (String)loginForm.getPassword();
  306. //          String destination = (String)loginForm.getDestination();
  307. //          BeanFactory beanfactory = new ClassPathXmlApplicationContext("context.xml");
  308. //          GenericMessage genericMessage = (GenericMessage) beanfactory.getBean("GenericMessage");
  309. //          Locale locale=RequestContextUtils.getLocale(request);
  310. //          Map<String, Object> processLoginModel=new HashMap<String,Object>();
  311. //          if (logger.isLoggable(Level.FINE)) {
  312. //              logger.log(Level.FINE, loginForm.toString());
  313. //          }
  314. //          processLoginValidator.validate(loginForm, result);
  315. //          if (result.hasErrors()) {  //if validator failed
  316. //
  317. //              processLoginModel.put("processLogin",loginForm);
  318. //              return new ModelAndView("login/login", processLoginModel);
  319. //          }
  320. //
  321. //          ModelAndView modelAndWiew;
  322. //
  323. //
  324. //// Process login
  325. //          User user = null;
  326. //          try {
  327. //              user = User.loadByIscLoginPass(username, password, APP_ID);
  328. //  /* no longer used
  329. //              if(user!=null) {
  330. //                  ScmtDataManager.getInstance().syncUserRoleSecurityLogin(getUserRoles(user),"Y");
  331. //              } else {
  332. //                  ScmtDataManager.getInstance().syncUserRoleSecurityLogin(getEmptyUserRole(username),"N");
  333. //              }
  334. //  */
  335. //          } catch (Throwable e) {
  336. //              e.printStackTrace();
  337. //          } // save in session, forward appropriately
  338. //          //ActionForward forward;
  339. //          if ((user != null)) { //success
  340. //              //no longer necessary user.logLastLogin();
  341. //              request.getSession().setAttribute(USER_KEY, user);
  342. //              try{
  343. //              TenantDataManagerInbound tenantDataManagerInbound=new TenantDataManagerInbound(user.getCountryCode().toLowerCase());
  344. //              cssStyle=tenantDataManagerInbound.lookUpCSSStyle(user.getTenantId(), lookupType, LookupCode);
  345. //              }
  346. //              catch(Exception e){
  347. //                  e.printStackTrace();
  348. //                  cssStyle="sbttn";
  349. //              }
  350. //              if(cssStyle==null|| cssStyle.equals("")){
  351. //                  cssStyle="sbttn";
  352. //              }
  353. //              request.getSession().setAttribute("cssBttnStyle", cssStyle);
  354. //              if (StringUtil.isNonBlank(destination)) {
  355. //                  modelAndWiew = new ModelAndView(new RedirectView(destination));
  356. //
  357. //              } else {
  358. //                  //check if a redirectUrl exists
  359. //                  if(request.getParameter("redirectUrl")!=null && request.getParameter("redirectUrl").length()>0) {
  360. //                      String queryStr = (request.getQueryString()==null?"":"?"+request.getQueryString());
  361. //                      String newURL = request.getParameter("redirectUrl")+queryStr+"acd";
  362. //                      try {
  363. //                          response.sendRedirect(newURL);
  364. //                      } catch (java.io.IOException e) {
  365. //                          e.printStackTrace();
  366. //                          genericMessage.addMessage("login.redirect.failure", new Object[]{request.getParameter("redirectUrl")},locale);
  367. //                          saveErrors(request, genericMessage);
  368. //                          processLoginModel.put("processLogin", loginForm);
  369. //                          modelAndWiew=new ModelAndView("login/login",processLoginModel);
  370. //
  371. //                      }
  372. //                      return null;
  373. //                  }
  374. //
  375. //                  if(hasInboundRead(user) || hasInboundEdit(user) ||
  376. //                     hasWatchlistView(user) || hasWatchlistEdit(user)) {
  377. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_WATCHLIST);
  378. //                  } else if(hasAdmin(user)) {
  379. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARd_TO_INBOUND);
  380. //                  } else if(hasTransprtOnly(user)) {
  381. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_TRANSPRT);
  382. //                  } else if(hasFinanceOnly(user)) {
  383. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_FINANCE);
  384. //                  } else if( (hasTransprtRead(user) || hasTransprtEdit(user) ) &&
  385. //                      (hasFinanceRead(user) || hasFinanceEdit(user) ) )  {
  386. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_TRANSPRT);
  387. //                  } else if(hasIatView(user) || hasIatEdit(user) || hasIatAdmin(user)) {
  388. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_IAT);
  389. //                  } else if(hasOsdView(user) || hasOsdEdit(user)) {
  390. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_OSD);
  391. //                  } else if(hasDcOpsView(user) || hasDcOpsEdit(user)) {
  392. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_DCOPS);
  393. //                  } else if(hasScmtRLViewOnly(user)) {
  394. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_RL);
  395. //                  } else if(hasOsdView(user) || hasAdjAdmin(user)) {
  396. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_ADJUSTMENTS);
  397. //                  } else if(hasReturnsView(user)) {
  398. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_RETURNS);
  399. //                  } else if(hasAutoDisp(user)) {
  400. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_AUTO_DISP);
  401. //                  } else if(hasGenericUser(user)) {
  402. //                      //modelAndWiew = new ModelAndView(new RedirectView(ScmtConstants.REDIERCT_TO_INBOUND));
  403. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARd_TO_INBOUND);
  404. //                  } else if(hasScmtCostOverridesOnly(user)) {
  405. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_OVERRIDES);
  406. //                  } else if(hasScmtPutInvBuffer(user)) {
  407. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_PUTINVENTORYBUFFER);
  408. //                        } else if(hasScmtUserAdmin(user)) {
  409. //                                modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_USER_ADMIN);
  410. //                  } else {
  411. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_SUCCESS);
  412. //                  }
  413. //              }
  414. //          }else {
  415. //              genericMessage.addMessage("login.failure",  new Object[]{}, locale);
  416. //              saveErrors(request, genericMessage);
  417. //               processLoginModel.put("processLogin", loginForm);
  418. //              modelAndWiew =new ModelAndView("login/login",processLoginModel);
  419. //          }
  420. //      return modelAndWiew;
  421. //  }
  422.  
  423. // 
  424. //  @RequestMapping(value="/ProcessLogin.htm")
  425. //    protected ModelAndView processLogin(@RequestBody SSOAuthorizeResponse ssoResponse, BindingResult  result,
  426. //                                                                   HttpServletRequest request,HttpServletResponse response)
  427. //          throws Exception {
  428. //
  429. //          BeanFactory beanfactory = new ClassPathXmlApplicationContext("context.xml");
  430. //          GenericMessage genericMessage = (GenericMessage) beanfactory.getBean("GenericMessage");
  431. //          Locale locale=RequestContextUtils.getLocale(request);
  432. //          Map<String, Object> processLoginModel=new HashMap<String,Object>();
  433. //          if (logger.isLoggable(Level.FINE)) {
  434. //              logger.log(Level.FINE, ssoResponse.toString());
  435. //          }                      
  436. //         
  437. //          // Not needed as Validation is covered at SSO page
  438. ////            processLoginValidator.validate(loginForm, result);
  439. ////            if (result.hasErrors()) {  //if validator failed
  440. ////               
  441. ////                processLoginModel.put("processLogin",loginForm);
  442. ////                return new ModelAndView("login/login", processLoginModel);
  443. ////            }
  444. //         
  445. //          ModelAndView modelAndWiew;
  446. //         
  447. //     
  448. //          RestTemplate restTemplate = new RestTemplate();
  449. //         
  450. //// Process login
  451. //          User user = null;
  452. //          try {
  453. //              user = User.loadByIscLoginPass(username, password, APP_ID);
  454. //  /* no longer used
  455. //              if(user!=null) {
  456. //                  ScmtDataManager.getInstance().syncUserRoleSecurityLogin(getUserRoles(user),"Y");
  457. //              } else {
  458. //                  ScmtDataManager.getInstance().syncUserRoleSecurityLogin(getEmptyUserRole(username),"N");
  459. //              }    
  460. //  */
  461. //          } catch (Throwable e) {
  462. //              e.printStackTrace();
  463. //          } // save in session, forward appropriately
  464. //          //ActionForward forward;
  465. //          if ((user != null)) { //success
  466. //              //no longer necessary user.logLastLogin();
  467. //              request.getSession().setAttribute(USER_KEY, user);
  468. //              try{
  469. //              TenantDataManagerInbound tenantDataManagerInbound=new TenantDataManagerInbound(user.getCountryCode().toLowerCase());
  470. //              cssStyle=tenantDataManagerInbound.lookUpCSSStyle(user.getTenantId(), lookupType, LookupCode);
  471. //              }
  472. //              catch(Exception e){
  473. //                  e.printStackTrace();
  474. //                  cssStyle="sbttn";
  475. //              }
  476. //              if(cssStyle==null|| cssStyle.equals("")){
  477. //                  cssStyle="sbttn";
  478. //              }
  479. //              request.getSession().setAttribute("cssBttnStyle", cssStyle);
  480. //              if (StringUtil.isNonBlank(destination)) {
  481. //                  modelAndWiew = new ModelAndView(new RedirectView(destination));
  482. //                 
  483. //              } else {
  484. //                  //check if a redirectUrl exists
  485. //                  if(request.getParameter("redirectUrl")!=null && request.getParameter("redirectUrl").length()>0) {
  486. //                      String queryStr = (request.getQueryString()==null?"":"?"+request.getQueryString());
  487. //                      String newURL = request.getParameter("redirectUrl")+queryStr+"acd";
  488. //                      try {
  489. //                          response.sendRedirect(newURL);
  490. //                      } catch (java.io.IOException e) {
  491. //                          e.printStackTrace();
  492. //                          genericMessage.addMessage("login.redirect.failure", new Object[]{request.getParameter("redirectUrl")},locale);
  493. //                          saveErrors(request, genericMessage);
  494. //                          processLoginModel.put("processLogin", loginForm);
  495. //                          modelAndWiew=new ModelAndView("login/login",processLoginModel);
  496. //                         
  497. //                      }
  498. //                      return null;
  499. //                  }    
  500. //                     
  501. //                  if(hasInboundRead(user) || hasInboundEdit(user) ||
  502. //                     hasWatchlistView(user) || hasWatchlistEdit(user)) {
  503. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_WATCHLIST);
  504. //                  } else if(hasAdmin(user)) {
  505. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARd_TO_INBOUND);
  506. //                  } else if(hasTransprtOnly(user)) {
  507. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_TRANSPRT);
  508. //                  } else if(hasFinanceOnly(user)) {
  509. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_FINANCE);
  510. //                  } else if( (hasTransprtRead(user) || hasTransprtEdit(user) ) &&
  511. //                      (hasFinanceRead(user) || hasFinanceEdit(user) ) )  {
  512. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_TRANSPRT);
  513. //                  } else if(hasIatView(user) || hasIatEdit(user) || hasIatAdmin(user)) {
  514. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_IAT);
  515. //                  } else if(hasOsdView(user) || hasOsdEdit(user)) {
  516. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_OSD);
  517. //                  } else if(hasDcOpsView(user) || hasDcOpsEdit(user)) {
  518. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_DCOPS);
  519. //                  } else if(hasScmtRLViewOnly(user)) {
  520. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_RL);
  521. //                  } else if(hasOsdView(user) || hasAdjAdmin(user)) {
  522. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_ADJUSTMENTS);
  523. //                  } else if(hasReturnsView(user)) {
  524. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_RETURNS);
  525. //                  } else if(hasAutoDisp(user)) {
  526. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_AUTO_DISP);
  527. //                  } else if(hasGenericUser(user)) {
  528. //                      //modelAndWiew = new ModelAndView(new RedirectView(ScmtConstants.REDIERCT_TO_INBOUND));
  529. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARd_TO_INBOUND);
  530. //                  } else if(hasScmtCostOverridesOnly(user)) {
  531. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_OVERRIDES);
  532. //                  } else if(hasScmtPutInvBuffer(user)) {
  533. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_PUTINVENTORYBUFFER);
  534. //                        } else if(hasScmtUserAdmin(user)) {
  535. //                                modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_USER_ADMIN);
  536. //                  } else {
  537. //                      modelAndWiew = new ModelAndView(ScmtConstants.FORWARD_TO_SUCCESS);
  538. //                  }    
  539. //              }
  540. //          }else {  
  541. //              genericMessage.addMessage("login.failure",  new Object[]{}, locale);
  542. //              saveErrors(request, genericMessage);
  543. //               processLoginModel.put("processLogin", loginForm);
  544. //              modelAndWiew =new ModelAndView("login/login",processLoginModel);
  545. //          }
  546. //      return modelAndWiew;
  547. //  }
  548.  
  549.      /** generate sql array of user roles to pass to isc_front_end_api_pkg.sync_user_role_security_login */
  550.         private UserRoles[] getUserRoles(User user) {
  551.             UserRoles[] retVal = null;
  552.             ArrayList<UserRoles> list = new ArrayList<UserRoles>();
  553.             Role[] userRoles = user.getRoles();
  554.             for(int i=0;i<userRoles.length;i++) {
  555.                 int userId = user.getUserId();
  556.                 String userLogin = user.getLogin();
  557.                 int roleId = userRoles[i].getRoleId();
  558.                 String roleName = userRoles[i].getRoleName();
  559.                 String userEmail = user.getEmail();
  560.                 String isActive = user.getActive();
  561.                 UserRoles ur = new UserRoles(userId, userLogin,
  562.                         roleId, roleName, userEmail, isActive, "TYP_USER_ROLE");
  563.                 list.add(ur);
  564.             }    
  565.             if (! list.isEmpty()){
  566.                 retVal = list.toArray(new UserRoles[list.size()]);
  567.             }
  568.             return retVal;
  569.         }        
  570.         /** if user is null generate empty sql array with username for isc_front_end_api_pkg.sync_user_role_security_login */
  571.         private UserRoles[] getEmptyUserRole(String username) {
  572.             UserRoles[] retVal = null;
  573.             ArrayList<UserRoles> list = new ArrayList<UserRoles>();
  574.             int userId = 0;
  575.             String userLogin = username;
  576.             int roleId = 0;
  577.             String roleName = null;
  578.             String userEmail = null;
  579.             String isActive = null;
  580.             UserRoles ur = new UserRoles(userId, userLogin,
  581.                     roleId, roleName, userEmail, isActive, "TYP_USER_ROLE");
  582.             list.add(ur);
  583.             if (! list.isEmpty()){
  584.                 retVal = list.toArray(new UserRoles[list.size()]);
  585.             }
  586.             return retVal;
  587.         }        
  588. }
Add Comment
Please, Sign In to add comment