From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 25 六月 2025 11:51:38 +0800 Subject: [PATCH] Merge branch 'mdc_hyjs_master' --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 111 insertions(+), 0 deletions(-) diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java new file mode 100644 index 0000000..c1e760d --- /dev/null +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java @@ -0,0 +1,111 @@ +package org.jeecg.modules.cas.controller; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.modules.cas.util.CasServiceUtil; +import org.jeecg.modules.cas.util.XmlUtils; +import org.jeecg.modules.system.entity.SysDepart; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysDepartService; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.alibaba.fastjson.JSONObject; + +import lombok.extern.slf4j.Slf4j; + +/** + * <p> + * CAS鍗曠偣鐧诲綍瀹㈡埛绔櫥褰曡璇� + * </p> + * + * @Author zhoujf + * @since 2018-12-20 + */ +@Slf4j +@RestController +@RequestMapping("/sys/cas/client") +public class CasClientController { + + @Autowired + private ISysUserService sysUserService; + @Autowired + private ISysDepartService sysDepartService; + @Autowired + private RedisUtil redisUtil; + + @Value("${cas.prefixUrl}") + private String prefixUrl; + + + @GetMapping("/validateLogin") + public Object validateLogin(@RequestParam(name="ticket") String ticket, + @RequestParam(name="service") String service, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + Result<JSONObject> result = new Result<JSONObject>(); + log.info("Rest api login."); + try { + String validateUrl = prefixUrl+"/p3/serviceValidate"; + String res = CasServiceUtil.getStValidate(validateUrl, ticket, service); + log.info("res."+res); + final String error = XmlUtils.getTextForElement(res, "authenticationFailure"); + if(StringUtils.isNotEmpty(error)) { + throw new Exception(error); + } + final String principal = XmlUtils.getTextForElement(res, "user"); + if (StringUtils.isEmpty(principal)) { + throw new Exception("No principal was found in the response from the CAS server."); + } + log.info("-------token----username---"+principal); + //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 + SysUser sysUser = sysUserService.getUserByName(principal); + result = sysUserService.checkUserIsEffective(sysUser, null); + if(!result.isSuccess()) { + return result; + } + String token = JwtUtil.sign(sysUser.getUsername(), sysUser.getPassword()); + // 璁剧疆瓒呮椂鏃堕棿 + redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); + redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME*2 / 1000); + + //鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅 + JSONObject obj = new JSONObject(); + List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId()); + obj.put("departs", departs); + if (departs == null || departs.size() == 0) { + obj.put("multi_depart", 0); + } else if (departs.size() == 1) { + sysUserService.updateUserDepart(principal, departs.get(0).getOrgCode()); + obj.put("multi_depart", 1); + } else { + obj.put("multi_depart", 2); + } + obj.put("token", token); + obj.put("userInfo", sysUser); + result.setResult(obj); + result.success("鐧诲綍鎴愬姛"); + + } catch (Exception e) { + //e.printStackTrace(); + result.error500(e.getMessage()); + } + return new HttpEntity<>(result); + } + + +} -- Gitblit v1.9.3