Browse Source

chore: Support multi login

master
wangxiang 2 years ago
parent
commit
d97a224bcc
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 14
      kicc-auth/src/main/java/com/cloud/kicc/auth/provider/UserProviderTemplateImpl.java
  2. 4
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java
  3. 2
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/CustomAppAuthenticationProvider.java
  4. 2
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/KiccDaoAuthenticationProvider.java
  5. 1
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java
  6. 8
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteAppService.java
  7. 5
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteDictService.java
  8. 8
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteSsoUserService.java
  9. 16
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java
  10. 15
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictDataController.java
  11. 8
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java

14
kicc-auth/src/main/java/com/cloud/kicc/auth/provider/UserProviderTemplateImpl.java

@ -24,11 +24,8 @@ public class UserProviderTemplateImpl implements UserProviderTemplate<KiccUser> @@ -24,11 +24,8 @@ public class UserProviderTemplateImpl implements UserProviderTemplate<KiccUser>
@Override
public SsoUser selectByUserNameAndParam(String userName, Map<String, String> parameters) {
SsoUser ssoUser = new SsoUser()
.setUserName(userName)
.setIdentityProvider(parameters.get("identityProvider"));
ssoUser.setTenantId(parameters.get("tenantId"));
R<SsoUser> result = remoteSsoUserService.selectByUserNameAndSsoUser(ssoUser);
parameters.put("username", userName);
R<SsoUser> result = remoteSsoUserService.selectByUserNameAndSsoUser(parameters);
if (result.getCode() != R.SUCCESS) {
throw new SecurityCheckedException(ObjectUtil.defaultIfBlank(result.getMsg(), "SecurityProviderTemplateImpl invoke failed!"));
}
@ -37,11 +34,8 @@ public class UserProviderTemplateImpl implements UserProviderTemplate<KiccUser> @@ -37,11 +34,8 @@ public class UserProviderTemplateImpl implements UserProviderTemplate<KiccUser>
@Override
public SsoUser selectByPhoneAndParam(String phone, Map<String, String> parameters) {
SsoUser ssoUser = new SsoUser()
.setPhone(phone)
.setIdentityProvider(parameters.get("identityProvider"));
ssoUser.setTenantId(parameters.get("tenantId"));
R<SsoUser> result = remoteAppService.selectByPhoneAndSsoUser(ssoUser);
parameters.put("phone", phone);
R<SsoUser> result = remoteAppService.selectByPhoneAndSsoUser(parameters);
if (result.getCode() != R.SUCCESS) {
throw new SecurityCheckedException(ObjectUtil.defaultIfBlank(result.getMsg(), "SecurityProviderTemplateImpl invoke failed!"));
}

4
kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java

@ -109,6 +109,7 @@ public class CasUser extends User { @@ -109,6 +109,7 @@ public class CasUser extends User {
String email,
String phone,
String sex,
String identityProvider,
String avatar,
String loginIp,
LocalDateTime loginTime,
@ -126,6 +127,7 @@ public class CasUser extends User { @@ -126,6 +127,7 @@ public class CasUser extends User {
this.email = email;
this.phone = phone;
this.sex = sex;
this.identityProvider = identityProvider;
this.avatar = avatar;
this.loginIp = loginIp;
this.loginTime = loginTime;
@ -151,6 +153,7 @@ public class CasUser extends User { @@ -151,6 +153,7 @@ public class CasUser extends User {
String email,
String phone,
String sex,
String identityProvider,
String avatar,
String loginIp,
LocalDateTime loginTime,
@ -170,6 +173,7 @@ public class CasUser extends User { @@ -170,6 +173,7 @@ public class CasUser extends User {
this.email = email;
this.phone = phone;
this.sex = sex;
this.identityProvider = identityProvider;
this.avatar = avatar;
this.loginIp = loginIp;
this.loginTime = loginTime;

2
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/CustomAppAuthenticationProvider.java

@ -82,7 +82,7 @@ public class CustomAppAuthenticationProvider extends AbstractUserDetailsAuthenti @@ -82,7 +82,7 @@ public class CustomAppAuthenticationProvider extends AbstractUserDetailsAuthenti
// 手机号
String phone = authentication.getName();
UserDetails userDetails = optional.get().loadUserByParam(phone, (LinkedHashMap<String, String>)authentication.getCredentials());
UserDetails userDetails = optional.get().loadUserByParam(phone, (LinkedHashMap<String, String>)authentication.getDetails());
// userDetails 校验
preAuthenticationChecks.check(userDetails);

2
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/KiccDaoAuthenticationProvider.java

@ -102,7 +102,7 @@ public class KiccDaoAuthenticationProvider extends AbstractUserDetailsAuthentica @@ -102,7 +102,7 @@ public class KiccDaoAuthenticationProvider extends AbstractUserDetailsAuthentica
}
try {
UserDetails loadedUser = optional.get().loadUserByParam(username, (LinkedHashMap<String, String>)authentication.getCredentials());
UserDetails loadedUser = optional.get().loadUserByParam(username, (LinkedHashMap<String, String>)authentication.getDetails());
if (loadedUser == null) {
throw new InternalAuthenticationServiceException(
"UserDetailsService returned null, which is an interface contract violation");

1
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java

@ -70,6 +70,7 @@ public interface KiccUserDetailsService extends Ordered { @@ -70,6 +70,7 @@ public interface KiccUserDetailsService extends Ordered {
user.getEmail(),
user.getPhone(),
user.getSex(),
user.getIdentityProvider(),
user.getAvatar(),
user.getLoginIp(),
user.getLoginTime(),

8
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteAppService.java

@ -7,7 +7,9 @@ import com.cloud.kicc.common.core.constant.ServiceNameConstants; @@ -7,7 +7,9 @@ import com.cloud.kicc.common.core.constant.ServiceNameConstants;
import com.cloud.kicc.common.data.entity.SsoUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
/**
*<p>
@ -22,10 +24,10 @@ public interface RemoteAppService { @@ -22,10 +24,10 @@ public interface RemoteAppService {
/**
* 通过手机号码查询用户
* @param ssoUser sso用户
* @param param 参数
* @return R
*/
@GetMapping(value = AppConstants.APP_SYSTEM + "/app/selectByPhoneAndSsoUser", headers = SecurityConstants.HEADER_FROM_IN)
R<SsoUser> selectByPhoneAndSsoUser(SsoUser ssoUser);
R<SsoUser> selectByPhoneAndSsoUser(@RequestParam("param") Map<String, String> param);
}

5
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteDictService.java

@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.FeignClient; @@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -28,7 +29,7 @@ public interface RemoteDictService { @@ -28,7 +29,7 @@ public interface RemoteDictService {
* @param type 字典类型
* @return 返回字典项列表
*/
@GetMapping(value = AppConstants.APP_SYSTEM + "/dictData/getDictByType/{type}", headers = SecurityConstants.HEADER_FROM_IN)
R<List<DictData>> getDictByType(@PathVariable("type") String type);
@GetMapping(value = AppConstants.APP_SYSTEM + "/dictData/dictType")
R<List<DictData>> dictType(@RequestParam("type") String type, @RequestParam("tenantId") String tenantId);
}

8
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteSsoUserService.java

@ -8,6 +8,10 @@ import com.cloud.kicc.common.data.entity.SsoUser; @@ -8,6 +8,10 @@ import com.cloud.kicc.common.data.entity.SsoUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
/**
*<p>
@ -22,10 +26,10 @@ public interface RemoteSsoUserService { @@ -22,10 +26,10 @@ public interface RemoteSsoUserService {
/**
* 通过用户名查询用户
* @param ssoUser sso用户
* @param param 参数
* @return R
*/
@GetMapping(value = AppConstants.APP_SYSTEM + "/ssoUser/selectByUserNameAndSsoUser", headers = SecurityConstants.HEADER_FROM_IN)
R<SsoUser> selectByUserNameAndSsoUser(SsoUser ssoUser);
R<SsoUser> selectByUserNameAndSsoUser(@RequestParam("param") Map<String, String> param);
}

16
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
package com.cloud.kicc.system.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
@ -9,12 +10,10 @@ import com.cloud.kicc.system.service.AppService; @@ -9,12 +10,10 @@ import com.cloud.kicc.system.service.AppService;
import com.cloud.kicc.system.service.ISsoUserService;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
*<p>
@ -42,15 +41,16 @@ public class AppController { @@ -42,15 +41,16 @@ public class AppController {
/**
* 获取指定用户全部信息
* @param ssoUser SSO用户
* @param param 参数
* @return 用户信息
*/
@Inner
@GetMapping("/selectByPhoneAndSsoUser")
public R<SsoUser> selectByPhoneAndSsoUser(SsoUser ssoUser) {
public R<SsoUser> selectByPhoneAndSsoUser(@RequestParam Map<String, String> param) {
List<SsoUser> user = iSsoUserService.list(Wrappers.<SsoUser>lambdaQuery()
.eq(SsoUser::getPhone, ssoUser.getPhone())
.eq(SsoUser::getIdentityProvider, ssoUser.getIdentityProvider()));
.eq(SsoUser::getPhone, param.get("phone"))
.eq(SsoUser::getTenantId, param.get("tenantId"))
.eq(StrUtil.isNotBlank(param.get("identityProvider")) ,SsoUser::getIdentityProvider, param.get("identityProvider")));
if (user.isEmpty()) {
return R.error("该手机号不存在,请先注册!");
}

15
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictDataController.java

@ -57,16 +57,13 @@ public class DictDataController { @@ -57,16 +57,13 @@ public class DictDataController {
return R.ok(dictDataService.getById(id));
}
@Inner
@GetMapping("/getDictByType/{type}")
@Inner(false)
@GetMapping("/dictType")
@Cacheable(value = CacheConstants.DICT_DETAILS, key = "#type")
public R getDictByType(@PathVariable String type) {
return R.ok(dictDataService.list(Wrappers.<DictData>query().lambda().eq(DictData::getDictType, type)));
}
@GetMapping("/dictType/{dictType}")
public R dictType(@PathVariable String dictType) {
return remoteDictService.getDictByType(dictType);
public R dictType(String type, String tenantId) {
return R.ok(dictDataService.list(Wrappers.<DictData>query().lambda()
.eq(DictData::getDictType, type)
.eq(StrUtil.isNotBlank(tenantId), DictData::getTenantId, tenantId)));
}
@SysLog("字典数据新增")

8
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java

@ -21,6 +21,7 @@ import org.springframework.validation.annotation.Validated; @@ -21,6 +21,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.Map;
/**
*<p>
@ -90,10 +91,11 @@ public class SsoUserController { @@ -90,10 +91,11 @@ public class SsoUserController {
@Inner
@GetMapping("/selectByUserNameAndSsoUser")
public R selectByUserNameAndSsoUser(SsoUser ssoUser) {
public R selectByUserNameAndSsoUser(@RequestParam Map<String, String> param) {
SsoUser user = iSsoUserService.getOne(Wrappers.<SsoUser>lambdaQuery()
.eq(SsoUser::getUserName, ssoUser.getUserName())
.eq(SsoUser::getIdentityProvider, ssoUser.getIdentityProvider()));
.eq(SsoUser::getUserName, param.get("username"))
.eq(SsoUser::getTenantId, param.get("tenantId"))
.eq(StrUtil.isNotBlank(param.get("identityProvider")) ,SsoUser::getIdentityProvider, param.get("identityProvider")));
if (user == null) {
return R.error("该用户不存在,请注册!");
}

Loading…
Cancel
Save