diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/AuthService.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/AuthService.java index 5ca30d36..aea366c1 100644 --- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/AuthService.java +++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/AuthService.java @@ -132,4 +132,13 @@ public interface AuthService { * @date 2020/9/20 15:21 **/ SysLoginUser genSysLoginUser(SysUser sysUser); + + /** + * 新增用户的数据授权范围 + * + * @author yubaoshan + * @date 2021/7/20 14:50 + */ + void refreshUserDataScope(Long orgId); + } diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java index 416602cd..ecacb291 100644 --- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java +++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java @@ -37,6 +37,8 @@ import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCrypt; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import vip.xiaonuo.core.consts.CommonConstant; import vip.xiaonuo.core.context.constant.ConstantContextHolder; import vip.xiaonuo.core.dbs.CurrentDataSourceContext; @@ -359,4 +361,14 @@ public class AuthServiceImpl implements AuthService, UserDetailsService { String redisLoginUserKey = jwtPayLoad.getUuid(); userCache.put(redisLoginUserKey, sysLoginUser, Convert.toLong(ConstantContextHolder.getSessionTokenExpireSec())); } + + @Override + public void refreshUserDataScope(Long orgId) { + // request获取到token + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = this.getTokenFromRequest(request); + SysLoginUser sysLoginUser = this.getLoginUserByToken(token); + sysLoginUser.getDataScopes().add(orgId); + this.cacheLoginUser(JwtTokenUtil.getJwtPayLoad(token), sysLoginUser); + } } diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java index 7cd83d41..9b3edbb8 100644 --- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java +++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java @@ -47,6 +47,7 @@ import vip.xiaonuo.core.pojo.node.AntdBaseTreeNode; import vip.xiaonuo.core.pojo.page.PageResult; import vip.xiaonuo.core.util.PoiUtil; import vip.xiaonuo.sys.core.enums.DataScopeTypeEnum; +import vip.xiaonuo.sys.modular.auth.service.AuthService; import vip.xiaonuo.sys.modular.emp.service.SysEmpExtOrgPosService; import vip.xiaonuo.sys.modular.emp.service.SysEmpService; import vip.xiaonuo.sys.modular.org.entity.SysOrg; @@ -82,6 +83,9 @@ public class SysOrgServiceImpl extends ServiceImpl impleme @Resource private SysUserDataScopeService sysUserDataScopeService; + @Resource + private AuthService authService; + @Override public PageResult page(SysOrgParam sysOrgParam) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -192,6 +196,7 @@ public class SysOrgServiceImpl extends ServiceImpl impleme this.fillPids(sysOrg); sysOrg.setStatus(CommonStatusEnum.ENABLE.getCode()); this.save(sysOrg); + this.authService.refreshUserDataScope(sysOrg.getId()); } @Transactional(rollbackFor = Exception.class) @@ -202,7 +207,7 @@ public class SysOrgServiceImpl extends ServiceImpl impleme Long id = sysOrg.getId(); boolean superAdmin = LoginContextHolder.me().isSuperAdmin(); if (!superAdmin) { - List dataScope = sysOrgParam.getDataScope(); + List dataScope = LoginContextHolder.me().getLoginUserDataScopeIdList(); //数据范围为空 if (ObjectUtil.isEmpty(dataScope)) { throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);