mirror of https://gitee.com/stylefeng/roses
【7.2.3】增加默认OAuth2用户创建
parent
3238c3b9c8
commit
bbed4bd535
|
@ -25,6 +25,7 @@
|
|||
package cn.stylefeng.roses.kernel.system.api;
|
||||
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.OAuth2AuthUserDTO;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.OnlineUserDTO;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.UserLoginInfoDTO;
|
||||
|
@ -159,4 +160,12 @@ public interface UserServiceApi {
|
|||
*/
|
||||
String getUserAvatarUrlByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 创建并保存OAuth2用户信息
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/7/1 19:03
|
||||
*/
|
||||
void createAndSaveOAuth2User(OAuth2AuthUserDTO oAuth2AuthUserDTO);
|
||||
|
||||
}
|
||||
|
|
|
@ -77,4 +77,14 @@ public interface SystemConstants {
|
|||
*/
|
||||
String THEME_GUNS_PLATFORM = "GUNS_PLATFORM";
|
||||
|
||||
/**
|
||||
* 默认OAuth2用户组织机构id
|
||||
*/
|
||||
Long OAUTH2_USER_ORG_ID = 1339554696976781407L;
|
||||
|
||||
/**
|
||||
* 默认OAuth2用户角色id
|
||||
*/
|
||||
Long OAUTH2_USER_ROLE_ID = 1339550467939639305L;
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
package cn.stylefeng.roses.kernel.system.api.pojo.user;
|
||||
|
||||
import cn.stylefeng.roses.kernel.rule.enums.SexEnum;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 第三方OAuth2用户信息
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/7/1 18:05
|
||||
*/
|
||||
@Data
|
||||
public class OAuth2AuthUserDTO implements Serializable {
|
||||
/**
|
||||
* 用户第三方系统的唯一id。在调用方集成该组件时,可以用uuid + source唯一确定一个用户
|
||||
*/
|
||||
private String uuid;
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 用户头像
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 用户邮箱
|
||||
*/
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* 用户备注(各平台中的用户个人介绍)
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
private SexEnum sexEnum;
|
||||
|
||||
/**
|
||||
* 用户来源
|
||||
*/
|
||||
private String source;
|
||||
|
||||
/**
|
||||
* 第三方平台返回的原始用户信息
|
||||
*/
|
||||
private JSONObject rawUserInfo;
|
||||
|
||||
}
|
|
@ -26,14 +26,16 @@ package cn.stylefeng.roses.kernel.system.modular.user.factory;
|
|||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.SexEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||
import cn.stylefeng.roses.kernel.system.api.enums.UserStatusEnum;
|
||||
import cn.stylefeng.roses.kernel.system.api.expander.SystemConfigExpander;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.OAuth2AuthUserDTO;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
|
||||
|
||||
/**
|
||||
* 用户信息填充,用于创建和修改用户时,添加一些基础信息
|
||||
|
@ -118,4 +120,35 @@ public class SysUserCreateFactory {
|
|||
sysUser.setPhone(sysUserRequest.getPhone());
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建第三方应用在本应用的用户
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @Date 2019/6/9 19:11
|
||||
*/
|
||||
public static SysUser createOAuth2User(OAuth2AuthUserDTO oAuth2AuthUserDTO) {
|
||||
|
||||
SysUser systemUser = new SysUser();
|
||||
|
||||
// 设置名字
|
||||
systemUser.setRealName(oAuth2AuthUserDTO.getNickname());
|
||||
systemUser.setNickName(oAuth2AuthUserDTO.getNickname());
|
||||
|
||||
// 设置账号
|
||||
systemUser.setAccount("OAUTH2_" + oAuth2AuthUserDTO.getSource() + "_" + oAuth2AuthUserDTO.getUsername());
|
||||
|
||||
// 设置密码
|
||||
PasswordStoredEncryptApi passwordStoredEncryptApi = SpringUtil.getBean(PasswordStoredEncryptApi.class);
|
||||
systemUser.setPassword(passwordStoredEncryptApi.encrypt(RandomUtil.randomString(20)));
|
||||
|
||||
// 设置性别
|
||||
systemUser.setSex(oAuth2AuthUserDTO.getSexEnum().getCode());
|
||||
|
||||
// 设置邮箱电话
|
||||
systemUser.setEmail(oAuth2AuthUserDTO.getEmail());
|
||||
systemUser.setPhone("未设置");
|
||||
|
||||
return systemUser;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -68,6 +68,8 @@ import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleDTO;
|
|||
import cn.stylefeng.roses.kernel.system.api.pojo.user.*;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.OnlineUserRequest;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.UserOrgRequest;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.UserRoleRequest;
|
||||
import cn.stylefeng.roses.kernel.system.api.util.DataScopeUtil;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserDataScope;
|
||||
|
@ -99,6 +101,9 @@ import java.util.Set;
|
|||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.stylefeng.roses.kernel.system.api.constants.SystemConstants.OAUTH2_USER_ORG_ID;
|
||||
import static cn.stylefeng.roses.kernel.system.api.constants.SystemConstants.OAUTH2_USER_ROLE_ID;
|
||||
|
||||
/**
|
||||
* 用户服务实现类
|
||||
*
|
||||
|
@ -942,6 +947,32 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
return this.getUserAvatarUrl(sysUser.getAvatar());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createAndSaveOAuth2User(OAuth2AuthUserDTO oAuth2AuthUserDTO) {
|
||||
|
||||
// 请求bean转为实体,填充一些基本属性
|
||||
SysUser oAuth2User = SysUserCreateFactory.createOAuth2User(oAuth2AuthUserDTO);
|
||||
SysUserCreateFactory.fillAddSysUser(oAuth2User);
|
||||
|
||||
// 设置用户默认头像
|
||||
oAuth2User.setAvatar(FileConstants.DEFAULT_AVATAR_FILE_ID);
|
||||
|
||||
// 保存用户
|
||||
this.save(oAuth2User);
|
||||
|
||||
// 设置OAuth2用户默认绑定的角色,默认绑定的公司信息
|
||||
UserRoleRequest userRoleRequest = new UserRoleRequest();
|
||||
userRoleRequest.setUserId(oAuth2User.getUserId());
|
||||
userRoleRequest.setRoleId(OAUTH2_USER_ROLE_ID);
|
||||
this.sysUserRoleService.add(userRoleRequest);
|
||||
|
||||
// 保存默认公司信息
|
||||
UserOrgRequest userOrgRequest = new UserOrgRequest();
|
||||
userOrgRequest.setUserId(oAuth2User.getUserId());
|
||||
userOrgRequest.setOrgId(OAUTH2_USER_ORG_ID);
|
||||
this.sysUserOrgService.add(userOrgRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统用户
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue