zhou-hao 7 роки тому
батько
коміт
a19f439324

+ 5 - 0
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/pom.xml

@@ -41,6 +41,11 @@
             <artifactId>hsweb-system-organizational-entity</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.hswebframework.web</groupId>
+            <artifactId>hsweb-system-authorization-service-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 
 

+ 1 - 9
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/DefaultPersonnelAuthorizationSupplier.java

@@ -34,17 +34,9 @@ public class DefaultPersonnelAuthorizationSupplier implements PersonnelAuthoriza
 
     @Override
     public PersonnelAuthorization get() {
-        /*
-            获取逻辑: 优先获取登录用户的权限信息中Authentication的personId属性;
-            如果不存在,则根据用户id获取.如果还不存在则返回null
-         */
         //TreadLocal Cache
         return ThreadLocalUtils.get(threadLocalCacheKey, () ->
-                Authentication.current().map(authentication ->
-                        authentication.getAttribute(PersonAttachEntity.personId)
-                                .map(String::valueOf)
-                                .map(this::getByPersonId)
-                                .orElseGet(() -> getByUserId(authentication.getUser().getId())))
+                Authentication.current().map(authentication -> getByUserId(authentication.getUser().getId()))
                         .orElse(null));
     }
 }

+ 6 - 2
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/OrganizationalAuthorizationAutoConfiguration.java

@@ -11,8 +11,6 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
 @Configuration
@@ -88,9 +86,15 @@ public class OrganizationalAuthorizationAutoConfiguration implements BeanPostPro
     @Configuration
     @ConditionalOnBean(PersonnelAuthorizationManager.class)
     public static class PersonnelAuthorizationSupplierAutoConfiguration {
+
         @Bean
         public DefaultPersonnelAuthorizationSupplier personnelAuthorizationManager(PersonnelAuthorizationManager personnelAuthorizationManager) {
             return new DefaultPersonnelAuthorizationSupplier(personnelAuthorizationManager);
         }
+
+        @Bean
+        public PersonnelAuthorizationSettingTypeSupplier personnelAuthorizationSettingTypeSupplier() {
+            return new PersonnelAuthorizationSettingTypeSupplier();
+        }
     }
 }

+ 65 - 0
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-authorization/src/main/java/org/hswebframework/web/organizational/authorization/PersonnelAuthorizationSettingTypeSupplier.java

@@ -0,0 +1,65 @@
+package org.hswebframework.web.organizational.authorization;
+
+import org.hswebframework.web.service.authorization.AuthorizationSettingTypeSupplier;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class PersonnelAuthorizationSettingTypeSupplier implements AuthorizationSettingTypeSupplier {
+    public static final String SETTING_TYPE_PERSON = "person";
+
+    public static final String SETTING_TYPE_DEPARTMENT = "department";
+
+    public static final String SETTING_TYPE_ORG = "org";
+
+    public static final String SETTING_TYPE_DISTRICT = "district";
+
+    public static final String SETTING_TYPE_POSITION = "position";
+
+    @Autowired
+    private PersonnelAuthorizationManager personnelAuthorizationManager;
+
+    @Override
+    public Set<SettingInfo> get(String userId) {
+        //支持职位和人员 设置权限
+        PersonnelAuthorization authorization = personnelAuthorizationManager.getPersonnelAuthorizationByUserId(userId);
+        if (authorization == null) {
+            return new HashSet<>();
+        }
+        Set<SettingInfo> settingInfo = new HashSet<>();
+
+
+        //人员
+        SettingInfo personSetting = new SettingInfo(SETTING_TYPE_PERSON, authorization.getPersonnel().getId());
+        settingInfo.add(personSetting);
+
+        //岗位
+        settingInfo.addAll(authorization.getAllPositionId()
+                .stream()
+                .map(id -> new SettingInfo(SETTING_TYPE_POSITION, id))
+                .collect(Collectors.toSet()));
+
+        //部门
+        settingInfo.addAll(authorization.getAllDepartmentId()
+                .stream()
+                .map(id -> new SettingInfo(SETTING_TYPE_DEPARTMENT, id))
+                .collect(Collectors.toSet()));
+
+        //机构
+        settingInfo.addAll(authorization.getAllOrgId()
+                .stream()
+                .map(id -> new SettingInfo(SETTING_TYPE_ORG, id))
+                .collect(Collectors.toSet()));
+
+        //行政区域
+        settingInfo.addAll(authorization.getAllDistrictId()
+                .stream()
+                .map(id -> new SettingInfo(SETTING_TYPE_DISTRICT, id))
+                .collect(Collectors.toSet()));
+
+        return settingInfo;
+    }
+}

+ 2 - 25
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-service/hsweb-system-organizational-service-simple/src/main/java/org/hswebframework/web/service/organizational/simple/SimplePersonService.java

@@ -60,10 +60,8 @@ import static org.springframework.util.StringUtils.isEmpty;
 @Service("personService")
 @CacheConfig(cacheNames = "person")
 public class SimplePersonService extends GenericEntityService<PersonEntity, String>
-        implements PersonService, PersonnelAuthorizationManager, AuthorizationSettingTypeSupplier {
+        implements PersonService, PersonnelAuthorizationManager {
 
-    private static String SETTING_TYPE_PERSON   = "person";
-    private static String SETTING_TYPE_POSITION = "position";
 
     @Autowired
     private PersonDao personDao;
@@ -457,26 +455,5 @@ public class SimplePersonService extends GenericEntityService<PersonEntity, Stri
         return getPersonnelAuthorizationByPersonId(entity.getId());
     }
 
-    @Override
-    public Set<SettingInfo> get(String userId) {
-        //支持职位和人员 设置权限
-        PersonEntity entity = createQuery().where(PersonEntity.userId, userId).single();
-        if (entity == null) {
-            return new HashSet<>();
-        }
-        Set<SettingInfo> settingInfo = new HashSet<>();
-        //岗位设置
-        //TODO 2017/06/08 是否将子级岗位的设置也放进来??
-        DefaultDSLQueryService.createQuery(personPositionDao)
-                .where(PersonPositionEntity.personId, entity.getId())
-                .listNoPaging()
-                .stream()
-                .map(position -> new SettingInfo(SETTING_TYPE_POSITION, position.getPositionId()))
-                .forEach(settingInfo::add);
-        //其他设置支持?
-
-        //人员配置
-        settingInfo.add(new SettingInfo(SETTING_TYPE_PERSON, entity.getId()));
-        return settingInfo;
-    }
+
 }