| | |
| | | |
| | | 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; |
| | |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.web.server.ServerWebExchange; |
| | | import reactor.core.publisher.Mono; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> |
| | |
| | | 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!=null && 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"; |