From b921722c2aa2b489531e367b195e58af2f05d157 Mon Sep 17 00:00:00 2001 From: pengjie <17373303529@163.com> Date: Fri, 10 Nov 2023 18:46:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/SystemUserAuthController.java | 32 ++++++ .../controller/admin/VideoOpController.java | 23 ++++- .../enterprise/EntMonitorDevController.java | 1 + .../GovAcceptInspectRecordController.java | 2 +- .../project/MonitorDevController.java | 3 - .../basicdata/mapper/xml/SystemUserMapper.xml | 2 +- .../service/impl/SystemUserServiceImpl.java | 1 + .../push/service/impl/UniPushServiceImpl.java | 6 +- .../zhgd/xmgl/security/JwtTokenFilter.java | 20 +++- .../zhgd/xmgl/security/WebSecurityConfig.java | 21 +++- .../sso/jwt/JwtAuthenticationConfigurer.java | 67 +++++++++++++ .../jwt/JwtAuthenticationFailureHandler.java | 34 +++++++ .../xmgl/sso/jwt/JwtAuthenticationFilter.java | 77 +++++++++++++++ .../sso/jwt/JwtAuthenticationProvider.java | 93 ++++++++++++++++++ .../jwt/JwtAuthenticationSuccessHandler.java | 38 ++++++++ .../xmgl/sso/jwt/JwtAuthenticationToken.java | 61 ++++++++++++ .../java/com/zhgd/xmgl/util/JwtUtils.java | 97 +++++++++++++++++++ src/main/resources/sign.cer | 22 +++++ 18 files changed, 586 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/sso/jwt/JwtAuthenticationConfigurer.java create mode 100644 src/main/java/com/zhgd/xmgl/sso/jwt/JwtAuthenticationFailureHandler.java create mode 100644 src/main/java/com/zhgd/xmgl/sso/jwt/JwtAuthenticationFilter.java create mode 100644 src/main/java/com/zhgd/xmgl/sso/jwt/JwtAuthenticationProvider.java create mode 100644 src/main/java/com/zhgd/xmgl/sso/jwt/JwtAuthenticationSuccessHandler.java create mode 100644 src/main/java/com/zhgd/xmgl/sso/jwt/JwtAuthenticationToken.java create mode 100644 src/main/java/com/zhgd/xmgl/util/JwtUtils.java create mode 100644 src/main/resources/sign.cer diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/SystemUserAuthController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/SystemUserAuthController.java index 8f52cef..4bc4013 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/SystemUserAuthController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/SystemUserAuthController.java @@ -7,6 +7,7 @@ import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.constant.CommonConstant; import com.zhgd.mybatis.Aes; +import com.zhgd.xmgl.handler.exception.CustomException; import com.zhgd.xmgl.modules.basicdata.dto.SystemUserAuthDto; import com.zhgd.xmgl.modules.basicdata.entity.Government; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; @@ -20,6 +21,7 @@ import com.zhgd.xmgl.security.JwtTokenProvider; import com.zhgd.xmgl.security.SecurityUser; import com.zhgd.xmgl.security.SecurityUtil; import com.zhgd.xmgl.util.CommonUtil; +import com.zhgd.xmgl.util.JwtUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -27,12 +29,20 @@ import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.cert.CertificateException; +import java.security.interfaces.RSAPublicKey; import java.util.Date; import java.util.Map; @@ -229,4 +239,26 @@ public class SystemUserAuthController { return RestResult.fail().message("用户暂未登录"); } } + + @OperLog(operModul = "用户身份认证", operType="登录", operDesc = "用户身份认证") + @Operation(summary = "用户身份认证", description = "用户身份认证") + @PostMapping("/ssoLogin") + public void ssoLogin(@RequestParam Map map, HttpServletResponse response) throws IOException { + String token = MapUtils.getString(map, "id_token"); + String targetUrl = MapUtils.getString(map, "target_url"); + if (StringUtils.isEmpty(token)) { + throw new CustomException("id_token 参数不存在"); + } + // 公钥 + RSAPublicKey publicKey; + try { + ClassPathResource res = new ClassPathResource("sign.cer"); + publicKey = (RSAPublicKey) JwtUtils.readPublicKey(new String( + FileCopyUtils.copyToByteArray(res.getInputStream()), StandardCharsets.UTF_8)); + } catch (CertificateException | IOException e) { + throw new RuntimeException(e); + } + String username = JwtUtils.getUserNameFromToken(token, publicKey); + response.sendRedirect("http://jxjzw.zhgdyun.com:6080/#/home"); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/VideoOpController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/VideoOpController.java index 29f563f..ef4dd24 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/VideoOpController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/admin/VideoOpController.java @@ -3,12 +3,17 @@ package com.zhgd.xmgl.modules.basicdata.controller.admin; import cn.xuyanwu.spring.file.storage.FileInfo; import cn.xuyanwu.spring.file.storage.FileStorageService; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.xmgl.modules.basicdata.api.camera.MonitorApi; -import com.zhgd.xmgl.modules.basicdata.entity.VideoConfig; -import com.zhgd.xmgl.modules.basicdata.service.IVideoConfigService; +import com.zhgd.xmgl.modules.basicdata.entity.GovernmentConfig; +import com.zhgd.xmgl.modules.basicdata.service.IGovernmentConfigService; +import com.zhgd.xmgl.modules.basicdata.service.IGovernmentService; +import com.zhgd.xmgl.security.SecurityUser; +import com.zhgd.xmgl.security.SecurityUtil; import com.zhgd.xmgl.util.HttpUtil; +import com.zhgd.xmgl.util.ParamEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -42,7 +47,10 @@ public class VideoOpController { private FileStorageService fileStorageService; @Autowired - private IVideoConfigService videoConfigService; + private IGovernmentService governmentService; + + @Autowired + private IGovernmentConfigService governmentConfigService; /** * 获取监控点预览取流 @@ -52,8 +60,13 @@ public class VideoOpController { @OperLog(operModul = "视频操作管理", operType = "查询", operDesc = "获取配置信息") @ApiOperation(value = " 获取配置信息", notes = "获取配置信息", httpMethod = "GET") @GetMapping(value = "/getConfig") - public Result getConfig() { - return Result.success(videoConfigService.list().get(0)); + public Result getConfig() { + SecurityUser user = SecurityUtil.getUser(); + String governmentSn = governmentService.getGovByUser(user.getAccountType(), user.getSn()).getGovernmentSn(); + GovernmentConfig config = governmentConfigService.getOne(Wrappers.lambdaQuery() + .eq(GovernmentConfig::getGovernmentSn, governmentSn) + .eq(GovernmentConfig::getConfigKey, ParamEnum.GovernmentConfig.VIDEO)); + return Result.success(JSONObject.parseObject(config.getValue())); } /** diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/enterprise/EntMonitorDevController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/enterprise/EntMonitorDevController.java index 4ac9ff4..ef047e8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/enterprise/EntMonitorDevController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/enterprise/EntMonitorDevController.java @@ -194,6 +194,7 @@ public class EntMonitorDevController { if (StringUtils.isNotBlank(engineeringName)) { wrapper.eq(Engineering::getEngineeringName, engineeringName); } + wrapper.eq(Engineering::getExamineState, 3); List engineeringList = engineeringService.list(wrapper); List monitorTrees = monitorDevService.treeByEngineering(engineeringList); return Result.success(monitorTrees); diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/government/GovAcceptInspectRecordController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/government/GovAcceptInspectRecordController.java index 027da64..c0bcc9f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/government/GovAcceptInspectRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/government/GovAcceptInspectRecordController.java @@ -77,7 +77,7 @@ public class GovAcceptInspectRecordController { public Result> queryPageList(@ApiIgnore @RequestBody Map map) { Page page = PageUtil.getPage(map); QueryWrapper wrapper = Wrappers.query(); - wrapper.lambda().apply("FIND_IN_SET({0}, inspect_user)", SecurityUtil.getUser().getUserId()); + wrapper.lambda().apply("FIND_IN_SET({0}, inspect_user) OR create_by = {0}", SecurityUtil.getUser().getUserId()); IPage pageList = acceptInspectRecordService.pageList(page, wrapper); return Result.success(pageList); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/project/MonitorDevController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/project/MonitorDevController.java index a7a230e..700fff1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/project/MonitorDevController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/project/MonitorDevController.java @@ -1,7 +1,6 @@ package com.zhgd.xmgl.modules.basicdata.controller.project; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -12,7 +11,6 @@ import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.jeecg.common.util.PageUtil; import com.zhgd.xmgl.modules.basicdata.constant.ParamConstants; import com.zhgd.xmgl.modules.basicdata.dto.MonitorTreeDto; -import com.zhgd.xmgl.modules.basicdata.entity.Engineering; import com.zhgd.xmgl.modules.wisdom.entity.MonitorDev; import com.zhgd.xmgl.modules.wisdom.service.IMonitorDevService; import com.zhgd.xmgl.security.SecurityUser; @@ -202,7 +200,6 @@ public class MonitorDevController { @PostMapping(value = "/tree") public Result> tree(@ApiIgnore @RequestBody Map map) { String monitorName = MapUtils.getString(map, "monitorName"); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); List monitorTrees = monitorDevService.treeByEngineering(monitorName); return Result.success(monitorTrees); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml index 4293938..73083bd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml @@ -2,7 +2,7 @@ - u.user_id, u.account, u.create_time, u.real_name, u.user_tel, u.department, u.state, u.password, u.email, u.sex, u.job_name, u.remark + u.user_id, u.account, u.create_time, u.real_name, u.user_tel, u.department, u.state, u.password, u.show_password, u.email, u.sex, u.job_name, u.remark