【7.2.3】增加默认OAuth2用户创建

pull/30/head
fengshuonan 2022-07-01 19:03:45 +08:00
parent 3238c3b9c8
commit bbed4bd535
5 changed files with 146 additions and 1 deletions

View File

@ -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);
}

View File

@ -77,4 +77,14 @@ public interface SystemConstants {
*/
String THEME_GUNS_PLATFORM = "GUNS_PLATFORM";
/**
* OAuth2id
*/
Long OAUTH2_USER_ORG_ID = 1339554696976781407L;
/**
* OAuth2id
*/
Long OAUTH2_USER_ROLE_ID = 1339550467939639305L;
}

View File

@ -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 {
/**
* iduuid + 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;
}

View File

@ -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;
}
}

View File

@ -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);
}
/**
*
*