From 78fd64d27a37b519a3ef4c3aa946b7d06418d623 Mon Sep 17 00:00:00 2001 From: MaxKey Date: Fri, 19 Aug 2022 13:07:36 +0800 Subject: [PATCH] fix refreshAllDynamicRoles --- .../persistence/service/RolesService.java | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/RolesService.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/RolesService.java index 0394e7266..d57bbe2f0 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/RolesService.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/RolesService.java @@ -18,12 +18,14 @@ package org.maxkey.persistence.service; import java.io.Serializable; +import java.sql.Types; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.List; import org.apache.mybatis.jpa.persistence.JpaBaseService; import org.maxkey.constants.ConstsStatus; +import org.maxkey.entity.Institutions; import org.maxkey.entity.Roles; import org.maxkey.persistence.mapper.RolesMapper; import org.maxkey.util.StringUtils; @@ -46,6 +48,9 @@ public class RolesService extends JpaBaseService implements Serializable @Autowired RoleMemberService roleMemberService; + @Autowired + InstitutionsService institutionsService; + public RolesService() { super(RolesMapper.class); } @@ -95,9 +100,22 @@ public class RolesService extends JpaBaseService implements Serializable } - if(StringUtils.isNotBlank(dynamicRole.getOrgIdsList())) { - dynamicRole.setOrgIdsList("'"+dynamicRole.getOrgIdsList().replace(",", "','")+"'"); + if(StringUtils.isNotBlank(dynamicRole.getOrgIdsList())) { + String []orgIds = dynamicRole.getOrgIdsList().split(","); + StringBuffer orgIdFilters = new StringBuffer(); + for(String orgId : orgIds) { + if(StringUtils.isNotBlank(orgId)) { + if(orgIdFilters.length() > 0) { + orgIdFilters.append(","); + } + orgIdFilters.append("'").append(orgId).append("'"); + } + } + if(orgIdFilters.length() > 0) { + dynamicRole.setOrgIdsList(orgIdFilters.toString()); + } } + String filters = dynamicRole.getFilters(); if(StringUtils.isNotBlank(filters)) { if(StringUtils.filtersSQLInjection(filters.toLowerCase())) { @@ -125,11 +143,17 @@ public class RolesService extends JpaBaseService implements Serializable } public void refreshAllDynamicRoles(){ - List groupsList = queryDynamicRoles(null); - for(Roles group : groupsList) { - _logger.debug("group " + group); - refreshDynamicRoles(group); - } + List instList = + institutionsService.find("where status = ? ", new Object[]{ConstsStatus.ACTIVE}, new int[]{Types.INTEGER}); + for(Institutions inst : instList) { + Roles role = new Roles(); + role.setId(inst.getId()); + List rolesList = queryDynamicRoles(role); + for(Roles r : rolesList) { + _logger.debug("role " + rolesList); + refreshDynamicRoles(r); + } + } } }