From 13883507228e344c870ab26da2c6b744d495b2a9 Mon Sep 17 00:00:00 2001
From: 克 刘 <4345453@qq.com>
Date: Tue, 31 Mar 2020 18:19:34 +0800
Subject: [PATCH] 扩展当前登录用户组织机构信息 1、组织机构ID、名称 2、部门ID、名称

---
 kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/auth/Oauth2AuthSuccessHandler.java |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/auth/Oauth2AuthSuccessHandler.java b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/auth/Oauth2AuthSuccessHandler.java
index 8bb30f4..a7a8bd7 100644
--- a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/auth/Oauth2AuthSuccessHandler.java
+++ b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/auth/Oauth2AuthSuccessHandler.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.kidgrow.common.constant.SecurityConstants;
+import com.kidgrow.common.model.SysOrganization;
 import com.kidgrow.common.model.SysUser;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.security.core.Authentication;
@@ -12,6 +13,8 @@
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.server.ServerWebExchange;
 import reactor.core.publisher.Mono;
+
+import java.util.List;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -26,19 +29,29 @@
     public Mono<Void> onAuthenticationSuccess(WebFilterExchange webFilterExchange, Authentication authentication) {
         MultiValueMap<String, String> headerValues = new LinkedMultiValueMap(4);
         Object principal = authentication.getPrincipal();
+        String tenantId="";
         //客户端模式只返回一个clientId
         if (principal instanceof SysUser) {
             SysUser user = (SysUser)authentication.getPrincipal();
             headerValues.add(SecurityConstants.USER_ID_HEADER, String.valueOf(user.getId()));
             headerValues.add(SecurityConstants.USER_HEADER, user.getUsername());
+
+            List<SysOrganization> organizations = (List<SysOrganization>)user.getOrganizations();
+            //如果有组织架构
+            if(organizations.size()==2){
+                headerValues.add(SecurityConstants.USER_ORG_ID_HEADER,String.valueOf(organizations.get(0).getId()));
+                headerValues.add(SecurityConstants.USER_ORG_NAME_HEADER,organizations.get(0).getOrgName());
+                headerValues.add(SecurityConstants.USER_DEP_ID_HEADER,String.valueOf(organizations.get(1).getId()));
+                headerValues.add(SecurityConstants.USER_DEP_NAME_HEADER,organizations.get(1).getOrgName());
+                tenantId=String.valueOf(organizations.get(0).getId());
+            }
         }
         OAuth2Authentication oauth2Authentication = (OAuth2Authentication)authentication;
         String clientId = oauth2Authentication.getOAuth2Request().getClientId();
-        String tenantId="";
         //保存租户id,租户id根据业务尽进行替换
         switch (clientId){
             case "hospital":
-                tenantId="1";
+                tenantId=tenantId;
                 break;
             case "webApp":
                 tenantId="webApp";

--
Gitblit v1.8.0