Browse Source

feat: support Independence sso

master
wangxiang 1 year ago
parent
commit
d2f0be8001
  1. 29
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/enums/IdentityProviderEnum.java
  2. 20
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  3. 5
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java
  4. 8
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java
  5. 13
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java

29
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/enums/IdentityProviderEnum.java

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
package com.cloud.kicc.system.api.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
*<p>
* 登陆身份提供商
*</p>
*
* @Author: wangxiang4
* @Since: 2024/1/3
*/
@Getter
@RequiredArgsConstructor
public enum IdentityProviderEnum {
ROOT("root", "超级管理员"),
CUSTOMER("customer", "普通用户");
private final String value;
private final String description;
}

20
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -13,11 +13,13 @@ import com.cloud.kicc.common.core.api.R; @@ -13,11 +13,13 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.data.entity.SsoUser;
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.commonbiz.api.feign.RemotePushConcernFanService;
import com.cloud.kicc.system.api.entity.*;
import com.cloud.kicc.system.api.enums.IdentityProviderEnum;
import com.cloud.kicc.system.api.enums.UserTypeEnum;
import com.cloud.kicc.system.api.vo.ResultVo;
import com.cloud.kicc.system.service.*;
@ -27,6 +29,7 @@ import io.swagger.annotations.ApiOperation; @@ -27,6 +29,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@ -114,6 +117,8 @@ public class UserController { @@ -114,6 +117,8 @@ public class UserController {
@GetMapping("/oneClickAccess/{casUserId:\\w+}")
public R oneClickAccess(@PathVariable String casUserId) {
if (ObjectUtil.isNotEmpty(iSsoUserService.getById(casUserId)) && ObjectUtil.isEmpty(userService.getOne(Wrappers.<User>lambdaQuery().eq(User::getCasUserId, casUserId)))) {
SsoUser kicsSsoUser = iSsoUserService.getKicsSsoUser(casUserId);
Optional.ofNullable(kicsSsoUser).orElseThrow(() -> new CheckedException("当前casUserId无效请重新检查配置!"));
String initDeptId = configService.getValueByKey("app.init.deptId");
Dept dept = deptService.getById(initDeptId);
Optional.ofNullable(dept).orElseThrow(() -> new CheckedException("当前部门无效请重新在参数管理中配置!"));
@ -123,6 +128,21 @@ public class UserController { @@ -123,6 +128,21 @@ public class UserController {
String initUserType = configService.getValueByKey("app.init.normal.userType");
String initTenantId = configService.getValueByKey("app.init.tenantId");
String initRoleIds = configService.getValueByKey("app.init.roleIds");
String initPassword = configService.getValueByKey("appid.password");
// 修改扩展用户信息
SsoUser ssoUser = new SsoUser();
ssoUser.setUserName(kicsSsoUser.getUserName());
ssoUser.setNickName(kicsSsoUser.getNickName());
ssoUser.setPassword(new BCryptPasswordEncoder().encode(initPassword));
ssoUser.setEmail(kicsSsoUser.getEmail());
ssoUser.setPhone(kicsSsoUser.getPhone());
ssoUser.setIdentityProvider(IdentityProviderEnum.CUSTOMER.getValue());
ssoUser.setAvatar(kiccUser.getAvatar());
ssoUser.setTenantId(initTenantId);
ssoUser.setCreateById(kiccUser.getUsername());
ssoUser.setCreateByName(kiccUser.getId());
iSsoUserService.save(ssoUser);
User user = new User();
user.setCasUserId(casUserId);

5
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java

@ -28,4 +28,9 @@ public interface ISsoUserService extends IService<SsoUser> { @@ -28,4 +28,9 @@ public interface ISsoUserService extends IService<SsoUser> {
*/
List<SsoUser> selectBindSsoUserList();
/**
* 查询kics的sso用户
*/
SsoUser getKicsSsoUser(String casUserId);
}

8
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java

@ -1,12 +1,10 @@ @@ -1,12 +1,10 @@
package com.cloud.kicc.system.service.impl;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.javaer.aliyun.sms.SmsClient;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.CacheConstants;
@ -15,7 +13,6 @@ import com.cloud.kicc.common.core.exception.CheckedException; @@ -15,7 +13,6 @@ import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.core.exception.ValidateCodeException;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.data.entity.SsoUser;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.feign.RemotePushConcernFanService;
import com.cloud.kicc.system.api.entity.Dept;
import com.cloud.kicc.system.api.entity.User;
@ -27,6 +24,7 @@ import lombok.extern.slf4j.Slf4j; @@ -27,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
@ -74,7 +72,7 @@ public class AppServiceImpl implements AppService { @@ -74,7 +72,7 @@ public class AppServiceImpl implements AppService {
return R.ok(Boolean.TRUE);
}
@DSTransactional
@Transactional(rollbackFor = Exception.class)
public SsoUser phoneRegister(String phone, String captcha, String identityProvider) {
// 设置不区分大小写,全部以小写验证
Validator.validateMobile(phone, "手机号码不合法");

13
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
package com.cloud.kicc.system.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.common.data.entity.KiccUser;
@ -12,6 +11,7 @@ import com.cloud.kicc.system.service.ISsoUserService; @@ -12,6 +11,7 @@ import com.cloud.kicc.system.service.ISsoUserService;
import com.cloud.kicc.system.service.UserService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -25,13 +25,12 @@ import java.util.List; @@ -25,13 +25,12 @@ import java.util.List;
*/
@Service
@AllArgsConstructor
@DS("mysql_kics")
public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> implements ISsoUserService {
private final UserService userService;
@Override
@DSTransactional
@Transactional(rollbackFor = Exception.class)
public void updateSsoUserAndExUser(KiccUser kiccUser) {
// 修改SSO用户信息
SsoUser ssoUser = new SsoUser()
@ -58,9 +57,15 @@ public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> impl @@ -58,9 +57,15 @@ public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> impl
}
@Override
@DS("master")
public List<SsoUser> selectBindSsoUserList() {
return baseMapper.selectBindSsoUserList();
}
@Override
@DS("mysql_kics")
public SsoUser getKicsSsoUser(String casUserId) {
return super.getById(casUserId);
}
}

Loading…
Cancel
Save