diff --git a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java
index 18773d90..1ec8cc8d 100644
--- a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java
+++ b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java
@@ -53,23 +53,26 @@ public class CasUser extends User {
/** 最后登陆时间 */
private LocalDateTime loginTime;
+ /** 状态 */
+ private String ssoStatus;
+
/** 创建ID */
- private String $createById;
+ private String ssoCreateById;
/** 创建人 */
- private String $createByName;
+ private String ssoCreateByName;
/** 创建时间 */
- private LocalDateTime $createTime;
+ private LocalDateTime ssoCreateTime;
- /** 更新id */
- private String $updateById;
+ /** 更新ID */
+ private String ssoUpdateById;
- /** 更新者 */
- private String $updateByName;
+ /** 更新人 */
+ private String ssoUpdateByName;
/** 更新时间 */
- private LocalDateTime $updateTime;
+ private LocalDateTime ssoUpdateTime;
/** 备注 */
private String remarks;
@@ -107,12 +110,55 @@ public class CasUser extends User {
String avatar,
String loginIp,
LocalDateTime loginTime,
- String createById,
- String createByName,
- LocalDateTime createTime,
- String updateById,
- String updateByName,
- LocalDateTime updateTime,
+ String ssoStatus,
+ String ssoCreateById,
+ String ssoCreateByName,
+ LocalDateTime ssoCreateTime,
+ String ssoUpdateById,
+ String ssoUpdateByName,
+ LocalDateTime ssoUpdateTime,
+ String remarks) {
+ super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
+ this.id = id;
+ this.nickName = nickName;
+ this.email = email;
+ this.phone = phone;
+ this.sex = sex;
+ this.avatar = avatar;
+ this.loginIp = loginIp;
+ this.loginTime = loginTime;
+ this.ssoStatus = ssoStatus;
+ this.ssoCreateById = ssoCreateById;
+ this.ssoCreateByName = ssoCreateByName;
+ this.ssoCreateTime = ssoCreateTime;
+ this.ssoUpdateById = ssoUpdateById;
+ this.ssoUpdateByName = ssoUpdateByName;
+ this.ssoUpdateTime = ssoUpdateTime;
+ this.remarks = remarks;
+ }
+
+ public CasUser(String username,
+ String password,
+ boolean enabled,
+ boolean accountNonExpired,
+ boolean credentialsNonExpired,
+ boolean accountNonLocked,
+ Collection extends GrantedAuthority> authorities,
+ String id,
+ String nickName,
+ String email,
+ String phone,
+ String sex,
+ String avatar,
+ String loginIp,
+ LocalDateTime loginTime,
+ String ssoStatus,
+ String ssoCreateById,
+ String ssoCreateByName,
+ LocalDateTime ssoCreateTime,
+ String ssoUpdateById,
+ String ssoUpdateByName,
+ LocalDateTime ssoUpdateTime,
String remarks,
String roleId,
String tenantId) {
@@ -125,12 +171,13 @@ public class CasUser extends User {
this.avatar = avatar;
this.loginIp = loginIp;
this.loginTime = loginTime;
- this.$createById = createById;
- this.$createByName = createByName;
- this.$createTime = createTime;
- this.$updateById = updateById;
- this.$updateByName = updateByName;
- this.$updateTime = updateTime;
+ this.ssoStatus = ssoStatus;
+ this.ssoCreateById = ssoCreateById;
+ this.ssoCreateByName = ssoCreateByName;
+ this.ssoCreateTime = ssoCreateTime;
+ this.ssoUpdateById = ssoUpdateById;
+ this.ssoUpdateByName = ssoUpdateByName;
+ this.ssoUpdateTime = ssoUpdateTime;
this.remarks = remarks;
this.roleId = roleId;
this.tenantId = tenantId;
diff --git a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java
index c2028958..9a826c6d 100644
--- a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java
+++ b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java
@@ -67,22 +67,22 @@ public class KiccUser extends CasUser {
@ApiModelProperty("多租户ID集合")
private String[] tenantIds;
- /** 创建ID */
+ @ApiModelProperty("创建ID")
private String createById;
- /** 创建人 */
+ @ApiModelProperty("创建人")
private String createByName;
- /** 创建时间 */
+ @ApiModelProperty("创建时间")
private LocalDateTime createTime;
- /** 更新id */
+ @ApiModelProperty("更新ID")
private String updateById;
- /** 更新者 */
+ @ApiModelProperty("更新人")
private String updateByName;
- /** 更新时间 */
+ @ApiModelProperty("更新时间")
private LocalDateTime updateTime;
public KiccUser() {
diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/config/ResourceServerAutoConfiguration.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/config/ResourceServerAutoConfiguration.java
index fc3a759a..c2d763c7 100644
--- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/config/ResourceServerAutoConfiguration.java
+++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/config/ResourceServerAutoConfiguration.java
@@ -5,6 +5,7 @@ import com.cloud.kicc.common.security.exp.ResourceAuthExceptionEntryPoint;
import com.cloud.kicc.common.security.override.KiccBearerTokenExtractor;
import com.cloud.kicc.common.security.exp.KiccLocalResourceServerTokenServices;
import com.cloud.kicc.common.security.exp.PermissionService;
+import com.cloud.kicc.system.api.feign.RemoteUserService;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@@ -44,8 +45,8 @@ public class ResourceServerAutoConfiguration {
/** 扩展资源服务器令牌服务 */
@Bean
@Primary
- public ResourceServerTokenServices resourceServerTokenServices(TokenStore tokenStore) {
- return new KiccLocalResourceServerTokenServices(tokenStore);
+ public ResourceServerTokenServices resourceServerTokenServices(TokenStore tokenStore, RemoteUserService remoteUserService) {
+ return new KiccLocalResourceServerTokenServices(tokenStore, remoteUserService);
}
}
diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java
index 27cf6713..187ab539 100644
--- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java
+++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java
@@ -1,10 +1,24 @@
package com.cloud.kicc.common.security.exp;
+import cn.hutool.json.JSONUtil;
+import com.cloud.kicc.common.core.api.R;
+import com.cloud.kicc.common.core.constant.SecurityConstants;
+import com.cloud.kicc.common.core.enums.CasSystemEnum;
+import com.cloud.kicc.common.core.jackson.KiccJavaTimeModule;
import com.cloud.kicc.common.data.entity.CasUser;
+import com.cloud.kicc.common.data.entity.KiccUser;
+import com.cloud.kicc.common.security.exception.SecurityCheckedException;
+import com.cloud.kicc.common.security.override.jackson2.SimpleGrantedAuthorityMixin;
+import com.cloud.kicc.system.api.feign.RemoteUserService;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import org.springframework.beans.BeanUtils;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.common.exceptions.InvalidTokenException;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
@@ -12,6 +26,10 @@ import org.springframework.security.oauth2.provider.OAuth2Request;
import org.springframework.security.oauth2.provider.token.ResourceServerTokenServices;
import org.springframework.security.oauth2.provider.token.TokenStore;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
/**
*
* 本地资源服务器令牌服务
@@ -25,23 +43,70 @@ public class KiccLocalResourceServerTokenServices implements ResourceServerToken
private final TokenStore tokenStore;
+ private final RemoteUserService remoteUserService;
+
@Override
+ @SneakyThrows
public OAuth2Authentication loadAuthentication(String accessToken) throws AuthenticationException, InvalidTokenException {
// 根据token加载身份验证
OAuth2Authentication oAuth2Authentication = tokenStore.readAuthentication(accessToken);
if (oAuth2Authentication == null) {
return null;
}
-
OAuth2Request oAuth2Request = oAuth2Authentication.getOAuth2Request();
- // 检测是否是属于认证的CAS统一认证用户
+ // 检测是否是属于认证的CasUser实体用户
if (!(oAuth2Authentication.getPrincipal() instanceof CasUser)) {
return oAuth2Authentication;
}
-
CasUser casUser = (CasUser) oAuth2Authentication.getPrincipal();
+
+ // 设置SSO子系统扩展用户信息
+ if (casUser.getExPrincipals().get(CasSystemEnum.KICC) == null) {
+ R result = remoteUserService.selectByCasUserId(casUser.getId());
+ if (result.getCode() != R.SUCCESS) {
+ throw new SecurityCheckedException("找不到系统用户请联系您的系统管理员进行配置!");
+ }
+
+ KiccUser user = result.getData();
+ List authorities = Arrays.stream(user.getPermissions())
+ .map(SimpleGrantedAuthority::new)
+ .collect(Collectors.toList());
+ KiccUser kiccUser = new KiccUser(
+ casUser.getUsername(),
+ casUser.getPassword(),
+ casUser.isEnabled(),
+ casUser.isAccountNonExpired(),
+ casUser.isCredentialsNonExpired(),
+ casUser.isAccountNonLocked(),
+ authorities
+ );
+ BeanUtils.copyProperties(user, kiccUser);
+ casUser.getExPrincipals().put(CasSystemEnum.KICC, new ObjectMapper()
+ .registerModule(new KiccJavaTimeModule())
+ .setSerializationInclusion(JsonInclude.Include.NON_NULL)
+ .writeValueAsString(kiccUser));
+ tokenStore.storeAccessToken(tokenStore.getAccessToken(oAuth2Authentication), oAuth2Authentication);
+ }
+
+ // 覆盖casUser核心authorities
+ String str = casUser.getExPrincipals().get(CasSystemEnum.KICC);
+ if (!JSONUtil.isJson(str)) throw new RuntimeException("exPrincipals不是json字符串!");
+ KiccUser kiccUser = new ObjectMapper()
+ .registerModule(new KiccJavaTimeModule())
+ .addMixIn(SimpleGrantedAuthority.class, SimpleGrantedAuthorityMixin.class)
+ .readValue(str, KiccUser.class);
+ CasUser exCasUser = new CasUser(
+ casUser.getUsername(),
+ SecurityConstants.MOCK_PASSWORD,
+ casUser.isEnabled(),
+ casUser.isAccountNonExpired(),
+ casUser.isCredentialsNonExpired(),
+ casUser.isAccountNonLocked(),
+ kiccUser.getAuthorities());
+ BeanUtils.copyProperties(casUser, exCasUser);
+
// 每次请求前都预先加载用户名密码身份验证令牌
- Authentication userAuthentication = new UsernamePasswordAuthenticationToken(casUser, "N/A", casUser.getAuthorities());
+ Authentication userAuthentication = new UsernamePasswordAuthenticationToken(exCasUser, "N/A", exCasUser.getAuthorities());
OAuth2Authentication authentication = new OAuth2Authentication(oAuth2Request, userAuthentication);
authentication.setAuthenticated(true);
return authentication;
diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccCustomTokenServices.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccCustomTokenServices.java
index c79347e2..480dc4bb 100644
--- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccCustomTokenServices.java
+++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccCustomTokenServices.java
@@ -1,6 +1,5 @@
package com.cloud.kicc.common.security.override;
-import cn.hutool.core.map.MapUtil;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.Authentication;
@@ -16,7 +15,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.Date;
-import java.util.Map;
import java.util.Set;
import java.util.UUID;
diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java
index 83ed2cac..781d1a6a 100644
--- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java
+++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java
@@ -4,24 +4,15 @@ import cn.hutool.core.util.StrUtil;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.CommonConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants;
-import com.cloud.kicc.common.core.enums.CasSystemEnum;
-import com.cloud.kicc.common.core.jackson.KiccJavaTimeModule;
import com.cloud.kicc.common.data.entity.CasUser;
-import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.exception.SecurityCheckedException;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.cloud.kicc.system.api.entity.SsoUser;
import lombok.SneakyThrows;
-import org.springframework.beans.BeanUtils;
import org.springframework.core.Ordered;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
/**
*
* 用户详细信息服务
@@ -56,26 +47,23 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered {
* @return UserDetails
*/
@SneakyThrows
- default UserDetails getUserDetails(R result) {
-
+ default UserDetails getUserDetails(R result) {
// 验证请求是否成功
if (result.getCode() != R.SUCCESS) {
throw new SecurityCheckedException(result.getMsg());
}
- KiccUser user = result.getData();
- List authorities = Arrays.stream(user.getPermissions())
- .map(SimpleGrantedAuthority::new)
- .collect(Collectors.toList());
- CasUser casUser = new CasUser(
- user.getUsername(),
+ SsoUser user = result.getData();
+ // 构造security用户
+ return new CasUser(
+ user.getUserName(),
SecurityConstants.BCRYPT + user.getPassword(),
true,
true,
true,
StrUtil.equals(user.getStatus(), CommonConstants.STATUS_NORMAL),
- authorities,
- user.getCasUserId(),
+ AuthorityUtils.createAuthorityList(),
+ user.getId(),
user.getNickName(),
user.getEmail(),
user.getPhone(),
@@ -83,34 +71,15 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered {
user.getAvatar(),
user.getLoginIp(),
user.getLoginTime(),
+ user.getStatus(),
user.getCreateById(),
user.getCreateByName(),
user.getCreateTime(),
user.getUpdateById(),
user.getUpdateByName(),
user.getUpdateTime(),
- user.getRemarks(),
- String.join(",", user.getRoleIds()),
- String.join(",", user.getTenantIds())
+ user.getRemarks()
);
- KiccUser kiccUser = new KiccUser(
- casUser.getUsername(),
- casUser.getPassword(),
- casUser.isEnabled(),
- casUser.isAccountNonExpired(),
- casUser.isCredentialsNonExpired(),
- casUser.isAccountNonLocked(),
- authorities
- );
- BeanUtils.copyProperties(user, kiccUser);
- // 设置扩展用户数据
- casUser.getExPrincipals().put(CasSystemEnum.KICC, new ObjectMapper()
- .registerModule(new KiccJavaTimeModule())
- .setSerializationInclusion(JsonInclude.Include.NON_NULL)
- .writeValueAsString(kiccUser));
-
- // 构造security用户
- return casUser;
}
/**
diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java
index 0544745c..ec34e9a9 100644
--- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java
+++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java
@@ -3,9 +3,9 @@ package com.cloud.kicc.common.security.service.impl;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.data.entity.CasUser;
-import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.service.KiccUserDetailsService;
-import com.cloud.kicc.system.api.feign.RemoteUserService;
+import com.cloud.kicc.system.api.entity.SsoUser;
+import com.cloud.kicc.system.api.feign.RemoteAppService;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -23,7 +23,7 @@ import org.springframework.security.core.userdetails.UserDetails;
@RequiredArgsConstructor
public class KiccAppUserDetailsServiceImpl implements KiccUserDetailsService {
- private final RemoteUserService remoteUserService;
+ private final RemoteAppService remoteAppService;
/**
* 手机号登录
@@ -32,7 +32,7 @@ public class KiccAppUserDetailsServiceImpl implements KiccUserDetailsService {
@Override
@SneakyThrows
public UserDetails loadUserByUsername(String phone) {
- R result = remoteUserService.selectByPhone(phone);
+ R result = remoteAppService.selectByPhone(phone);
return getUserDetails(result);
}
diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java
index e231db57..f5f5c7c8 100644
--- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java
+++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java
@@ -1,9 +1,9 @@
package com.cloud.kicc.common.security.service.impl;
import com.cloud.kicc.common.core.api.R;
-import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.service.KiccUserDetailsService;
-import com.cloud.kicc.system.api.feign.RemoteUserService;
+import com.cloud.kicc.system.api.entity.SsoUser;
+import com.cloud.kicc.system.api.feign.RemoteSsoUserService;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -23,7 +23,7 @@ import org.springframework.security.core.userdetails.UserDetails;
@RequiredArgsConstructor
public class KiccUserDetailsServiceImpl implements KiccUserDetailsService {
- private final RemoteUserService remoteUserService;
+ private final RemoteSsoUserService remoteSsoUserService;
/**
* 用户名密码登录
@@ -32,7 +32,7 @@ public class KiccUserDetailsServiceImpl implements KiccUserDetailsService {
@Override
@SneakyThrows
public UserDetails loadUserByUsername(String username) {
- R result = remoteUserService.selectByUserName(username);
+ R result = remoteSsoUserService.selectByUserName(username);
return getUserDetails(result);
}
diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/util/SecurityUtils.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/util/SecurityUtils.java
index 22e56f0b..8da52b10 100644
--- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/util/SecurityUtils.java
+++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/util/SecurityUtils.java
@@ -146,12 +146,13 @@ public class SecurityUtils {
user.getAvatar(),
user.getLoginIp(),
user.getLoginTime(),
- user.getCreateById(),
- user.getCreateByName(),
- user.getCreateTime(),
- user.getUpdateById(),
- user.getUpdateByName(),
- user.getUpdateTime(),
+ user.getSsoStatus(),
+ user.getSsoCreateById(),
+ user.getSsoCreateByName(),
+ user.getSsoCreateTime(),
+ user.getSsoUpdateById(),
+ user.getSsoUpdateByName(),
+ user.getSsoUpdateTime(),
user.getRemarks(),
String.join(",", user.getRoleIds()),
String.join(",", user.getTenantIds())
diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java
index 4f73641c..2ec594a6 100644
--- a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java
@@ -45,7 +45,7 @@ public class SsoUser extends CommonEntity {
/** 手机号码 */
private String phone;
- /** 用户性别(0男 1女 2未知) */
+ /** 用户性别(0男 1女 2未知)*/
private String sex;
/** 头像路径 */
@@ -54,6 +54,9 @@ public class SsoUser extends CommonEntity {
/** 最后登陆IP */
private String loginIp;
+ /** 帐号状态(0正常 1停用)*/
+ private String status;
+
/** 最后登陆时间 */
private LocalDateTime loginTime;
diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteAppService.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteAppService.java
new file mode 100644
index 00000000..add88be8
--- /dev/null
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteAppService.java
@@ -0,0 +1,32 @@
+package com.cloud.kicc.system.api.feign;
+
+import com.cloud.kicc.common.core.api.R;
+import com.cloud.kicc.common.core.constant.AppConstants;
+import com.cloud.kicc.common.core.constant.SecurityConstants;
+import com.cloud.kicc.common.core.constant.ServiceNameConstants;
+import com.cloud.kicc.common.data.entity.KiccUser;
+import com.cloud.kicc.system.api.entity.SsoUser;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+/**
+ *
+ * 远程移动端api
+ *
+ *
+ * @Author: wangxiang4
+ * @Date: 2022/2/17
+ */
+@FeignClient(contextId = "remoteAppService", value = ServiceNameConstants.SYSTEM_SERVICE)
+public interface RemoteAppService {
+
+ /**
+ * 通过手机号码查询用户
+ * @param phone 手机号码
+ * @return R
+ */
+ @GetMapping(value = AppConstants.APP_SYSTEM + "/app/selectByPhone/{phone}", headers = SecurityConstants.HEADER_FROM_IN)
+ R selectByPhone(@PathVariable("phone") String phone);
+
+}
diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteSsoUserService.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteSsoUserService.java
new file mode 100644
index 00000000..f2837d4a
--- /dev/null
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteSsoUserService.java
@@ -0,0 +1,32 @@
+package com.cloud.kicc.system.api.feign;
+
+import com.cloud.kicc.common.core.api.R;
+import com.cloud.kicc.common.core.constant.AppConstants;
+import com.cloud.kicc.common.core.constant.SecurityConstants;
+import com.cloud.kicc.common.core.constant.ServiceNameConstants;
+import com.cloud.kicc.common.data.entity.KiccUser;
+import com.cloud.kicc.system.api.entity.SsoUser;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+/**
+ *
+ * 远程SSO用户api
+ *
+ *
+ * @Author: wangxiang4
+ * @Date: 2022/2/17
+ */
+@FeignClient(contextId = "remoteSsoUserService", value = ServiceNameConstants.SYSTEM_SERVICE)
+public interface RemoteSsoUserService {
+
+ /**
+ * 通过用户名查询用户
+ * @param userName 用户名
+ * @return R
+ */
+ @GetMapping(value = AppConstants.APP_SYSTEM + "/ssoUser/selectByUserName/{userName}", headers = SecurityConstants.HEADER_FROM_IN)
+ R selectByUserName(@PathVariable("userName") String userName);
+
+}
diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteUserService.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteUserService.java
index e98c544a..fe424b88 100644
--- a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteUserService.java
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteUserService.java
@@ -20,22 +20,6 @@ import org.springframework.web.bind.annotation.PathVariable;
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE)
public interface RemoteUserService {
- /**
- * 通过用户名查询用户
- * @param userName 用户名
- * @return R
- */
- @GetMapping(value = AppConstants.APP_SYSTEM + "/user/selectByUserName/{userName}", headers = SecurityConstants.HEADER_FROM_IN)
- R selectByUserName(@PathVariable("userName") String userName);
-
- /**
- * 通过手机号码查询用户
- * @param phone 手机号码
- * @return R
- */
- @GetMapping(value = AppConstants.APP_SYSTEM + "/user/selectByPhone/{phone}", headers = SecurityConstants.HEADER_FROM_IN)
- R selectByPhone(@PathVariable("phone") String phone);
-
/**
* 通过用户ID查询用户
* @param userid 用户id
@@ -44,4 +28,12 @@ public interface RemoteUserService {
@GetMapping(value = AppConstants.APP_SYSTEM + "/user/getUser/{userId}", headers = SecurityConstants.HEADER_FROM_IN)
R selectByUserId(@PathVariable("userId") String userid);
+ /**
+ * 通过CAS用户ID查询用户
+ * @param casUserId 用户id
+ * @return R
+ */
+ @GetMapping(value = AppConstants.APP_SYSTEM + "/user/getUserByCasUserId/{casUserId}", headers = SecurityConstants.HEADER_FROM_IN)
+ R selectByCasUserId(@PathVariable("casUserId") String casUserId);
+
}
diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/resources/META-INF/spring.factories b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/resources/META-INF/spring.factories
index b54ea42d..af22d1c2 100644
--- a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/resources/META-INF/spring.factories
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/resources/META-INF/spring.factories
@@ -1,3 +1,6 @@
com.cloud.kicc.common.feign.KiccFeignAutoConfiguration=\
com.cloud.kicc.system.api.feign.RemoteDictService,\
- com.cloud.kicc.system.api.feign.RemoteUserService
+ com.cloud.kicc.system.api.feign.RemoteUserService,\
+ com.cloud.kicc.system.api.feign.RemoteAppService,\
+ com.cloud.kicc.system.api.feign.RemoteRegionService,\
+ com.cloud.kicc.system.api.feign.RemoteSsoUserService
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java
index d41e4c7c..05975334 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java
@@ -1,11 +1,12 @@
package com.cloud.kicc.system.controller;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
-import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.annotation.Inner;
+import com.cloud.kicc.system.api.entity.SsoUser;
import com.cloud.kicc.system.service.AppService;
-import com.cloud.kicc.system.service.UserService;
+import com.cloud.kicc.system.service.ISsoUserService;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
@@ -17,11 +18,11 @@ import java.util.List;
/**
*
- * 移动端登录
+ * 移动端 控制器
*
*
* @Author: wangxiang4
- * @Date: 2022/2/24
+ * @Since: 2023/9/1
*/
@RestController
@AllArgsConstructor
@@ -31,7 +32,7 @@ public class AppController {
private final AppService appService;
- private final UserService userService;
+ private final ISsoUserService iSsoUserService;
@Inner(false)
@GetMapping("/sendSmsCode/{phone:\\d+}")
@@ -46,12 +47,12 @@ public class AppController {
*/
@Inner
@GetMapping("/selectByPhone/{phone:\\d+}")
- public R selectByPhone(@PathVariable String phone) {
- List user = userService.getUserByPhone(phone);
+ public R selectByPhone(@PathVariable String phone) {
+ List user = iSsoUserService.list(Wrappers.lambdaQuery().eq(SsoUser::getPhone, phone));
if (user.isEmpty()) {
- return R.error("该手机号不存在,请注册!");
+ return R.error("该手机号不存在,请先注册!");
}
- return R.ok(userService.getUserAuthority(user.get(0)));
+ return R.ok(user.get(0));
}
}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java
index 21302943..bffcce2d 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java
@@ -9,6 +9,7 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.log.annotation.SysLog;
+import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.system.api.entity.SsoUser;
import com.cloud.kicc.system.api.entity.User;
@@ -20,7 +21,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
-import java.util.List;
/**
*
@@ -88,6 +88,16 @@ public class SsoUserController {
return R.ok();
}
+ @Inner
+ @GetMapping("/selectByUserName/{userName}")
+ public R selectByUserName(@PathVariable String userName) {
+ SsoUser user = iSsoUserService.getOne(Wrappers.lambdaQuery().eq(SsoUser::getUserName, userName));
+ if (user == null) {
+ return R.error("该用户不存在,请注册!");
+ }
+ return R.ok(user);
+ }
+
@SysLog("用户密码重置")
@PutMapping("/resetPwd")
public R resetPwd(@Validated @RequestBody SsoUser ssoUser) {
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
index c1d31fe2..d6e975c7 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
@@ -105,17 +105,15 @@ public class UserController {
@GetMapping("/getUser/{id:\\w+}")
public R getUser(@PathVariable("id") String id) {
KiccUser user = userService.getUserById(id);
- if (user == null) return R.error("该用户不存在,请注册!");
+ if (user == null) return R.error("该用户不存在,请先注册!");
return R.ok(userService.getUserAuthority(user));
}
@Inner
- @GetMapping("/selectByUserName/{userName}")
- public R selectByUserName(@PathVariable String userName) {
- KiccUser user = userService.getUserByName(userName);
- if (user == null) {
- return R.error("该用户不存在,请注册!");
- }
+ @GetMapping("/getUserByCasUserId/{casUserId:\\w+}")
+ public R getUserByCasUserId(@PathVariable String casUserId) {
+ KiccUser user = userService.getUserByCasUserId(casUserId);
+ if (user == null) return R.error("该用户不存在,请先注册!");
return R.ok(userService.getUserAuthority(user));
}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java
index efea8f3f..b714b3fd 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java
@@ -73,6 +73,13 @@ public interface UserService extends IService {
*/
KiccUser getUserById(String userId);
+
+ /**
+ * 根据casUserId查询用户
+ * @param casUserId CAS用户ID
+ */
+ KiccUser getUserByCasUserId(String casUserId);
+
/**
* 根据名称查询用户
* @param userName 用户名称
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java
index 89290268..8268d03d 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java
@@ -211,6 +211,11 @@ public class UserServiceImpl extends ServiceImpl implements Us
return baseMapper.getUserByParam(MapUtil.builder("id", userId).build());
}
+ @Override
+ public KiccUser getUserByCasUserId(String casUserId) {
+ return baseMapper.getUserByParam(MapUtil.builder("casUserId", casUserId).build());
+ }
+
@Override
public KiccUser getUserByName(String userName) {
return baseMapper.getUserByParam(MapUtil.builder("userName", userName).build());