Browse Source

增加签名验签和权限

fuyuhchuan 1 year ago
parent
commit
49fcebb091

+ 18 - 6
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysUserController.java

@@ -1,6 +1,7 @@
 package com.usky.system.controller.web;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.exception.BusinessErrorCode;
@@ -109,20 +110,15 @@ public class SysUserController extends BaseController {
         sysCheckCode.setUserName(user.getUserName());
         sysCheckCode.setDeptId(user.getDeptId());
         sysCheckCode.setTenantId(user.getTenantId());
-        try {
-            sysCheckCode.setCheckCode(operation.CBCMAC(user.getPhonenumber().getBytes("UTF-8")));//存手机校验码
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
         sysCheckCode.setPlaintext(user.getPhonenumber());
         try {
+            sysCheckCode.setCheckCode(operation.CBCMAC(user.getPhonenumber().getBytes("UTF-8")));//存手机校验码
             sysCheckCode.setCiphertext(operation.SM4CBCEnc(user.getPhonenumber().getBytes("UTF-8")));//存手机号密文
         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         }
         sysCheckCode.setCheckCodeType(2);
         sysCheckCodeMapper.insert(sysCheckCode);
-
         return toAjax(row);
     }
 
@@ -164,6 +160,22 @@ public class SysUserController extends BaseController {
             try {
                 sysCheckCode.setCiphertext(operation.SM4CBCEnc(user.getPhonenumber().getBytes("UTF-8")));
                 sysCheckCode.setCheckCode(operation.CBCMAC(user.getPhonenumber().getBytes("UTF-8")));
+                String SignatureValue = operation.HMAC(user.toString().getBytes("UTF-8"));//存入第一次计算的签名值
+                SysCheckCode sysCheckCode1 = new SysCheckCode();
+                sysCheckCode1.setUserId(user.getUserId());
+                sysCheckCode1.setDeptId(user.getDeptId());
+                sysCheckCode1.setTenantId(user.getTenantId());
+                sysCheckCode1.setUserName(user.getUserName());//被修改手机号用户名
+                sysCheckCode1.setCheckCode(SignatureValue);
+                sysCheckCode1.setPlaintext("更新手机号");
+                sysCheckCode1.setCheckCodeType(6);
+                sysCheckCodeMapper.insert(sysCheckCode1);
+                String SignatureValue1 = operation.HMAC(user.toString().getBytes("UTF-8"));
+                if (SignatureValue.equals(SignatureValue1)) {
+                    sysCheckCode.setVerificationResults(1);
+                } else {
+                    sysCheckCode.setVerificationResults(2);
+                }
             } catch (UnsupportedEncodingException e) {
                 e.printStackTrace();
             }

+ 14 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/domain/SysCheckCode.java

@@ -62,10 +62,23 @@ public class SysCheckCode implements Serializable {
     private String userName;
 
     /**
-     * 校验码类型(1:密码校验码;2:手机号校验码;3:登录日志校验码;4:操作日志校验码,5:文件校验码
+     * 校验码类型(1:密码校验码;2:手机号校验码;3:登录日志校验码;4:操作日志校验码,5:文件校验码;6:签名值)
      */
     private Integer checkCodeType;
 
+    /**
+     * 验签结果(0:默认;1:验签成功:2:验签失败)
+     */
+    private Integer verificationResults;
+
+    public Integer getVerificationResults() {
+        return verificationResults;
+    }
+
+    public void setVerificationResults(Integer verificationResults) {
+        this.verificationResults = verificationResults;
+    }
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }

+ 48 - 26
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysRoleServiceImpl.java

@@ -9,22 +9,20 @@ import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.system.domain.*;
 import com.usky.system.domain.constants.UserConstants;
-import com.usky.system.mapper.SysRoleDeptMapper;
-import com.usky.system.mapper.SysRoleMapper;
-import com.usky.system.mapper.SysRoleMenuMapper;
-import com.usky.system.mapper.SysMobileRoleMenuMapper;
-import com.usky.system.mapper.SysUserRoleMapper;
+import com.usky.system.mapper.*;
 import com.usky.system.service.ISysRoleService;
 import com.usky.system.service.SysTenantMenuService;
+import com.usky.system.service.util.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.UnsupportedEncodingException;
 import java.util.*;
 
 /**
  * 角色 业务层处理
- * 
+ *
  * @author yq
  */
 @Service
@@ -48,9 +46,13 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
     @Autowired
     SysTenantMenuService SysTenantMenuService;
 
+    @Autowired
+    private SysCheckCodeMapper checkCodeMapper;
+
+    Operation operation = new Operation();
     /**
      * 根据条件分页查询角色数据
-     * 
+     *
      * @param role 角色信息
      * @return 角色数据集合信息
      */
@@ -63,7 +65,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 根据用户ID查询角色
-     * 
+     *
      * @param userId 用户ID
      * @return 角色列表
      */
@@ -88,7 +90,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 根据用户ID查询权限
-     * 
+     *
      * @param userId 用户ID
      * @return 权限列表
      */
@@ -109,7 +111,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 查询所有角色
-     * 
+     *
      * @return 角色列表
      */
     @Override
@@ -120,7 +122,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 根据用户ID获取角色选择框列表
-     * 
+     *
      * @param userId 用户I
      * @return 选中角色ID列表
      */
@@ -132,7 +134,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 通过角色ID查询角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 角色对象信息
      */
@@ -144,7 +146,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 校验角色名称是否唯一
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -162,7 +164,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 校验角色权限是否唯一
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -180,7 +182,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 校验角色是否允许操作
-     * 
+     *
      * @param role 角色信息
      */
     @Override
@@ -194,7 +196,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 通过角色ID查询角色使用数量
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
@@ -206,7 +208,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 新增保存角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -221,7 +223,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 修改保存角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -229,6 +231,26 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
     @Transactional
     public int updateRole(SysRole role)
     {
+        SysCheckCode sysCheckCode = new SysCheckCode();
+        try {
+            String SignatureValue = operation.HMAC(role.toString().getBytes("UTF-8"));
+            String SignatureValue1 = operation.HMAC(role.toString().getBytes("UTF-8"));
+            sysCheckCode.setCheckCode(SignatureValue);
+            sysCheckCode.setUserName(SecurityUtils.getUsername());
+            sysCheckCode.setUserId(SecurityUtils.getUserId());
+            sysCheckCode.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
+            sysCheckCode.setTenantId(SecurityUtils.getTenantId());
+            sysCheckCode.setCheckCodeType(6);
+            sysCheckCode.setPlaintext("权限分配");
+            if (SignatureValue.equals(SignatureValue1)){
+                sysCheckCode.setVerificationResults(1);
+            } else {
+                sysCheckCode.setVerificationResults(2);
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        checkCodeMapper.insert(sysCheckCode);
         // 修改角色信息
         roleMapper.updateRole(role);
         // 删除角色与菜单关联
@@ -238,7 +260,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 修改角色状态
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -250,7 +272,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 修改数据权限信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -268,7 +290,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 新增角色菜单信息
-     * 
+     *
      * @param role 角色对象
      */
     public int insertRoleMenu(SysRole role)
@@ -330,7 +352,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 通过角色ID删除角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
@@ -347,7 +369,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 批量删除角色信息
-     * 
+     *
      * @param roleIds 需要删除的角色ID
      * @return 结果
      */
@@ -375,7 +397,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 取消授权用户角色
-     * 
+     *
      * @param userRole 用户和角色关联信息
      * @return 结果
      */
@@ -387,7 +409,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 批量取消授权用户角色
-     * 
+     *
      * @param roleId 角色ID
      * @param userIds 需要取消授权的用户数据ID
      * @return 结果
@@ -400,7 +422,7 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
 
     /**
      * 批量选择授权用户角色
-     * 
+     *
      * @param roleId 角色ID
      * @param userIds 需要删除的用户数据ID
      * @return 结果

+ 1 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/util/App.java

@@ -46,7 +46,7 @@ public class App
 		System.out.println(">>>>访问控制信息存储MAC计算:");
 
 		//访问控制信息的获取
-		String str1 = "YT_admin123";
+		String str1 = "Mh_admin123_YT";
 		System.out.println("        测试数据: [ "+str1+" ] ");
 
 		//访问控制信息校验码计算