AppController.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package com.ghsc.partybuild.controller;
  2. import com.ghsc.partybuild.AppConfig;
  3. import com.ghsc.partybuild.model.CfUsers;
  4. import com.ghsc.partybuild.service.LogService;
  5. import com.ghsc.partybuild.service.RoleService;
  6. import com.ghsc.partybuild.service.UserService;
  7. import com.ghsc.partybuild.shiro.JwtUtils;
  8. import com.ghsc.partybuild.util.RemoteHelper;
  9. import com.ghsc.partybuild.util.StringUtils;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.GetMapping;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import javax.servlet.http.Cookie;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpServletResponse;
  21. import java.io.FileInputStream;
  22. import java.io.UnsupportedEncodingException;
  23. import java.net.URLEncoder;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. @Slf4j
  28. @Controller
  29. @RequestMapping(value = "/")
  30. public class AppController {
  31. private final Logger logger;
  32. @Autowired
  33. private AppConfig appConfig;
  34. @Autowired
  35. private UserService userService;
  36. @Autowired
  37. private JwtUtils jwtUtils;
  38. @Autowired
  39. private RoleService roleService;
  40. @Autowired
  41. private LogService logService;
  42. @Autowired
  43. RemoteHelper remoteHelper;
  44. @Autowired
  45. private StringUtils stringUtils;
  46. public AppController() {
  47. logger = LoggerFactory.getLogger(this.getClass());
  48. }
  49. @GetMapping("")
  50. public String app(HttpServletRequest request, HttpServletResponse response, String ticket) {
  51. if (appConfig.isPortalLogin && !stringUtils.IsNullOrEmpty(ticket)) {
  52. if (portalLogin(request, response, ticket)) {
  53. return "redirect:/app/main/index.html#!/portalLogin";
  54. }
  55. }
  56. return "redirect:/app/main/index.html";
  57. }
  58. @GetMapping("web")
  59. public String web(HttpServletRequest request, HttpServletResponse response, String ticket) {
  60. if (appConfig.isPortalLogin && !stringUtils.IsNullOrEmpty(ticket)) {
  61. if (portalLogin(request, response, ticket)) {
  62. return "redirect:/app/main/index.html#!/portalLogin";
  63. }
  64. }
  65. return "redirect:/app/main/index.html";
  66. }
  67. @GetMapping("mobile")
  68. public String mobile(String routePath, String code) throws UnsupportedEncodingException {
  69. log.info("mobile:routePath=" + routePath + ",code=" + code);
  70. if (!stringUtils.IsNullOrEmpty(routePath))
  71. return "redirect:/mobile/index.html/#/index?routePath=" + URLEncoder.encode(routePath, "UTF-8") + "&code=" + code;
  72. return "redirect:/mobile/index.html/#/index?code=" + (!stringUtils.IsNullOrEmpty(code) ? code : "");
  73. }
  74. /**
  75. * 单点登录,验证ticket
  76. *
  77. * @param request
  78. * @param response
  79. * @param ticket
  80. * @return
  81. */
  82. public Boolean portalLogin(HttpServletRequest request, HttpServletResponse response, String ticket) {
  83. Boolean result = false;
  84. try {
  85. String validateUrl = appConfig.portal_oauthUrl + "/lyuapServer/serviceValidate";
  86. logger.info("JXCasLogin,ticket:" + ticket);
  87. Map<String, String> mapParams = new HashMap<>();
  88. mapParams.put("ticket", ticket);
  89. mapParams.put("service", appConfig.portal_webUrl);
  90. FileInputStream streamCer = new FileInputStream(appConfig.certPath + "/_.gzws.edu.cn.crt");
  91. String reqData = remoteHelper.SSLGet(mapParams, validateUrl, "UTF-8", streamCer);
  92. //String reqData="<cas:authenticationSuccess><cas:user>2001001www</cas:user><cas:attributes>...</cas:attributes></cas:authenticationSuccess>";
  93. logger.info("PortalLogin,reqData:" + reqData);
  94. int i = reqData.indexOf("<cas:user>");
  95. int j = reqData.indexOf("</cas:user>");
  96. String userId = reqData.substring(i + "<cas:user>".length(), j);
  97. /*String userId = "測試賬號";*/
  98. logger.info("PortalLogin,userId:" + userId);
  99. CfUsers User = userService.getUserByKey(userId);
  100. if (org.apache.commons.lang3.StringUtils.isBlank(User.getUserid())) {
  101. User = userService.getUserByOAName(userId);
  102. }
  103. if (User != null && org.apache.commons.lang3.StringUtils.isNotBlank(User.getUsername())) {
  104. Cookie cookie = new Cookie(jwtUtils.getTokenName(), jwtUtils.generateToken(User.getUserid()));
  105. cookie.setHttpOnly(true);
  106. cookie.setPath("/");
  107. response.addCookie(cookie);
  108. List<HashMap<String, Object>> roleList = this.roleService.getRoleByUserName(User.getUsername());
  109. if (roleList == null || roleList.isEmpty()) {
  110. this.roleService.insertUserRole(User.getUsername(), "0b45886a-a8db-4f85-af76-61a8ea7c1dab");
  111. }
  112. userService.loginForceStatu(User.getUserid(), 0);
  113. logService.log("用户单点登录", User.getUserid(), "PortalLogin");
  114. result = true;
  115. } else {
  116. logger.info("PortalLogin,单点登陆失败!");
  117. }
  118. } catch (Exception ex) {
  119. logger.error("单点登陆异常:" + ex);
  120. }
  121. return result;
  122. }
  123. }