27 changed files with 545 additions and 125 deletions
@ -0,0 +1,125 @@
|
||||
/* |
||||
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, |
||||
* this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above copyright |
||||
* notice, this list of conditions and the following disclaimer in the |
||||
* documentation and/or other materials provided with the distribution. |
||||
* Neither the name of the dreamlu.net developer nor the names of its |
||||
* contributors may be used to endorse or promote products derived from |
||||
* this software without specific prior written permission. |
||||
* Author: Chill 庄骞 (smallchill@163.com) |
||||
*/ |
||||
package org.springblade.auth.granter; |
||||
|
||||
import me.zhyd.oauth.model.AuthCallback; |
||||
import me.zhyd.oauth.model.AuthResponse; |
||||
import me.zhyd.oauth.model.AuthUser; |
||||
import me.zhyd.oauth.request.AuthRequest; |
||||
import org.springblade.auth.constant.AuthConstant; |
||||
import org.springblade.auth.service.BladeUserDetails; |
||||
import org.springblade.auth.utils.TokenUtil; |
||||
import org.springblade.core.social.props.SocialProperties; |
||||
import org.springblade.core.social.utils.SocialUtil; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springblade.core.tool.utils.BeanUtil; |
||||
import org.springblade.core.tool.utils.Func; |
||||
import org.springblade.core.tool.utils.WebUtil; |
||||
import org.springblade.system.user.entity.User; |
||||
import org.springblade.system.user.entity.UserInfo; |
||||
import org.springblade.system.user.entity.UserOauth; |
||||
import org.springblade.system.user.feign.IUserClient; |
||||
import org.springframework.security.authentication.AbstractAuthenticationToken; |
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; |
||||
import org.springframework.security.core.Authentication; |
||||
import org.springframework.security.core.authority.AuthorityUtils; |
||||
import org.springframework.security.oauth2.common.exceptions.InvalidGrantException; |
||||
import org.springframework.security.oauth2.provider.*; |
||||
import org.springframework.security.oauth2.provider.token.AbstractTokenGranter; |
||||
import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import java.util.LinkedHashMap; |
||||
import java.util.Map; |
||||
import java.util.Objects; |
||||
|
||||
/** |
||||
* 第三方登录认证类 |
||||
* |
||||
* @author Chill |
||||
*/ |
||||
public class SocialTokenGranter extends AbstractTokenGranter { |
||||
private static final String GRANT_TYPE = "social"; |
||||
private static final Integer AUTH_SUCCESS_CODE = 2000; |
||||
|
||||
private final IUserClient userClient; |
||||
private final SocialProperties socialProperties; |
||||
|
||||
protected SocialTokenGranter(AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, IUserClient userClient, SocialProperties socialProperties) { |
||||
super(tokenServices, clientDetailsService, requestFactory, GRANT_TYPE); |
||||
this.userClient = userClient; |
||||
this.socialProperties = socialProperties; |
||||
} |
||||
|
||||
@Override |
||||
protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) { |
||||
// 请求头租户信息
|
||||
HttpServletRequest request = WebUtil.getRequest(); |
||||
String tenantId = Func.toStr(request.getHeader(TokenUtil.TENANT_HEADER_KEY), TokenUtil.DEFAULT_TENANT_ID); |
||||
|
||||
Map<String, String> parameters = new LinkedHashMap<>(tokenRequest.getRequestParameters()); |
||||
// 开放平台来源
|
||||
String source = parameters.get("source"); |
||||
// 开放平台授权码
|
||||
String code = parameters.get("code"); |
||||
// 开放平台状态吗
|
||||
String state = parameters.get("state"); |
||||
|
||||
// 获取开放平台授权数据
|
||||
AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties); |
||||
AuthCallback authCallback = new AuthCallback(); |
||||
authCallback.setCode(code); |
||||
authCallback.setState(state); |
||||
AuthResponse authResponse = authRequest.login(authCallback); |
||||
AuthUser authUser; |
||||
if (authResponse.getCode() == AUTH_SUCCESS_CODE) { |
||||
authUser = (AuthUser) authResponse.getData(); |
||||
} else { |
||||
throw new InvalidGrantException("social grant failure, auth response is not success"); |
||||
} |
||||
|
||||
// 组装数据
|
||||
UserOauth userOauth = Objects.requireNonNull(BeanUtil.copy(authUser, UserOauth.class)); |
||||
userOauth.setSource(authUser.getSource()); |
||||
userOauth.setTenantId(tenantId); |
||||
|
||||
// 远程调用,获取认证信息
|
||||
R<UserInfo> result = userClient.userAuthInfo(userOauth); |
||||
BladeUserDetails bladeUserDetails; |
||||
if (result.isSuccess()) { |
||||
User user = result.getData().getUser(); |
||||
if (user == null) { |
||||
throw new InvalidGrantException("social grant failure, user is null"); |
||||
} |
||||
bladeUserDetails = new BladeUserDetails(user.getId(), |
||||
tenantId, result.getData().getOauthId(), user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(result.getData().getRoles()), Func.toStr(userOauth.getAvatar(), TokenUtil.DEFAULT_AVATAR), |
||||
userOauth.getUsername(), AuthConstant.ENCRYPT + user.getPassword(), true, true, true, true, |
||||
AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); |
||||
} else { |
||||
throw new InvalidGrantException("social grant failure, feign client return error"); |
||||
} |
||||
|
||||
// 组装认证数据,关闭密码校验
|
||||
Authentication userAuth = new UsernamePasswordAuthenticationToken(bladeUserDetails, null, bladeUserDetails.getAuthorities()); |
||||
((AbstractAuthenticationToken) userAuth).setDetails(parameters); |
||||
OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest); |
||||
|
||||
// 返回 OAuth2Authentication
|
||||
return new OAuth2Authentication(storedOAuth2Request, userAuth); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,104 @@
|
||||
/* |
||||
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, |
||||
* this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above copyright |
||||
* notice, this list of conditions and the following disclaimer in the |
||||
* documentation and/or other materials provided with the distribution. |
||||
* Neither the name of the dreamlu.net developer nor the names of its |
||||
* contributors may be used to endorse or promote products derived from |
||||
* this software without specific prior written permission. |
||||
* Author: Chill 庄骞 (smallchill@163.com) |
||||
*/ |
||||
package org.springblade.system.user.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType; |
||||
import com.baomidou.mybatisplus.annotation.TableId; |
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* 实体类 |
||||
* |
||||
* @author Chill |
||||
*/ |
||||
@Data |
||||
@TableName("blade_user_oauth") |
||||
public class UserOauth implements Serializable { |
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
|
||||
/** |
||||
* 主键 |
||||
*/ |
||||
@JsonSerialize(using = ToStringSerializer.class) |
||||
@ApiModelProperty(value = "主键") |
||||
@TableId(value = "id", type = IdType.ID_WORKER) |
||||
private Long id; |
||||
|
||||
/** |
||||
* 租户ID |
||||
*/ |
||||
private String tenantId; |
||||
|
||||
/** |
||||
* 用户名 |
||||
*/ |
||||
@JsonSerialize(using = ToStringSerializer.class) |
||||
@ApiModelProperty(value = "主键") |
||||
@TableId(value = "id", type = IdType.ID_WORKER) |
||||
private Long userId; |
||||
|
||||
/** |
||||
* 用户名 |
||||
*/ |
||||
private String username; |
||||
/** |
||||
* 用户昵称 |
||||
*/ |
||||
private String nickname; |
||||
/** |
||||
* 用户头像 |
||||
*/ |
||||
private String avatar; |
||||
/** |
||||
* 用户网址 |
||||
*/ |
||||
private String blog; |
||||
/** |
||||
* 所在公司 |
||||
*/ |
||||
private String company; |
||||
/** |
||||
* 位置 |
||||
*/ |
||||
private String location; |
||||
/** |
||||
* 用户邮箱 |
||||
*/ |
||||
private String email; |
||||
/** |
||||
* 用户备注(各平台中的用户个人介绍) |
||||
*/ |
||||
private String remark; |
||||
/** |
||||
* 性别 |
||||
*/ |
||||
private String gender; |
||||
/** |
||||
* 用户来源 |
||||
*/ |
||||
private String source; |
||||
|
||||
|
||||
} |
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
<mapper namespace="org.springblade.system.user.mapper.UserOauthMapper"> |
||||
|
||||
<!-- 通用查询映射结果 --> |
||||
<resultMap id="userResultMap" type="org.springblade.system.user.entity.UserOauth"> |
||||
<result column="id" property="id"/> |
||||
<result column="tenant_id" property="tenantId"/> |
||||
<result column="user_id" property="userId"/> |
||||
<result column="username" property="username"/> |
||||
<result column="nickname" property="nickname"/> |
||||
<result column="avatar" property="avatar"/> |
||||
<result column="blog" property="blog"/> |
||||
<result column="company" property="company"/> |
||||
<result column="location" property="location"/> |
||||
<result column="email" property="email"/> |
||||
<result column="remark" property="remark"/> |
||||
<result column="gender" property="gender"/> |
||||
<result column="source" property="source"/> |
||||
</resultMap> |
||||
|
||||
</mapper> |
@ -0,0 +1,30 @@
|
||||
/* |
||||
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, |
||||
* this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above copyright |
||||
* notice, this list of conditions and the following disclaimer in the |
||||
* documentation and/or other materials provided with the distribution. |
||||
* Neither the name of the dreamlu.net developer nor the names of its |
||||
* contributors may be used to endorse or promote products derived from |
||||
* this software without specific prior written permission. |
||||
* Author: Chill 庄骞 (smallchill@163.com) |
||||
*/ |
||||
package org.springblade.system.user.service; |
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import org.springblade.system.user.entity.UserOauth; |
||||
|
||||
/** |
||||
* 服务类 |
||||
* |
||||
* @author Chill |
||||
*/ |
||||
public interface IUserOauthService extends IService<UserOauth> { |
||||
|
||||
} |
@ -0,0 +1,36 @@
|
||||
/* |
||||
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, |
||||
* this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above copyright |
||||
* notice, this list of conditions and the following disclaimer in the |
||||
* documentation and/or other materials provided with the distribution. |
||||
* Neither the name of the dreamlu.net developer nor the names of its |
||||
* contributors may be used to endorse or promote products derived from |
||||
* this software without specific prior written permission. |
||||
* Author: Chill 庄骞 (smallchill@163.com) |
||||
*/ |
||||
package org.springblade.system.user.service.impl; |
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import lombok.AllArgsConstructor; |
||||
import org.springblade.system.user.entity.UserOauth; |
||||
import org.springblade.system.user.mapper.UserOauthMapper; |
||||
import org.springblade.system.user.service.IUserOauthService; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* 服务实现类 |
||||
* |
||||
* @author Chill |
||||
*/ |
||||
@Service |
||||
@AllArgsConstructor |
||||
public class UserOauthServiceImpl extends ServiceImpl<UserOauthMapper, UserOauth> implements IUserOauthService { |
||||
|
||||
} |
@ -1,102 +0,0 @@
|
||||
|
||||
-- ---------------------------- |
||||
-- 增加多租户参数配置 |
||||
-- ---------------------------- |
||||
INSERT INTO `blade_param`(`id`, `param_name`, `param_key`, `param_value`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1238706101399142402, '租户默认管理密码', 'tenant.default.password', 'admin', NULL, 1123598821738675201, 1123598813738675201, '2020-03-14 13:58:43', 1123598821738675201, '2020-03-14 13:58:43', 1, 0); |
||||
INSERT INTO `blade_param`(`id`, `param_name`, `param_key`, `param_value`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1238706160295559170, '租户默认账号额度', 'tenant.default.accountNumber', '100', NULL, 1123598821738675201, 1123598813738675201, '2020-03-14 13:58:57', 1123598821738675201, '2020-03-14 13:58:57', 1, 0); |
||||
INSERT INTO `blade_param`(`id`, `param_name`, `param_key`, `param_value`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1238706330076790786, '租户默认菜单集合', 'tenant.default.menuCode', 'desk,flow,work,monitor,resource,role,user,dept,post,dictbiz,topmenu', NULL, 1123598821738675201, 1123598813738675201, '2020-03-14 13:59:38', 1123598821738675201, '2020-03-14 13:59:38', 1, 0); |
||||
|
||||
-- ---------------------------- |
||||
-- 增加用户表字段 |
||||
-- ---------------------------- |
||||
ALTER TABLE `blade_user` |
||||
ADD COLUMN `code` varchar(12) NULL COMMENT '用户编号' AFTER `tenant_id`, |
||||
ADD COLUMN `post_id` varchar(1000) NULL COMMENT '岗位id' AFTER `dept_id`; |
||||
|
||||
-- ---------------------------- |
||||
-- 增加岗位管理表 |
||||
-- ---------------------------- |
||||
CREATE TABLE `blade_post` ( |
||||
`id` bigint(64) NOT NULL COMMENT '主键', |
||||
`tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID', |
||||
`category` int(11) NULL DEFAULT NULL COMMENT '岗位类型', |
||||
`post_code` varchar(12) NULL COMMENT '岗位编号', |
||||
`post_name` varchar(64) NULL COMMENT '岗位名称', |
||||
`sort` int(2) NULL COMMENT '岗位排序', |
||||
`remark` varchar(255) NULL COMMENT '岗位描述', |
||||
`create_user` bigint(64) NULL DEFAULT NULL COMMENT '创建人', |
||||
`create_dept` bigint(64) NULL DEFAULT NULL COMMENT '创建部门', |
||||
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', |
||||
`update_user` bigint(64) NULL DEFAULT NULL COMMENT '修改人', |
||||
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', |
||||
`status` int(2) NULL DEFAULT NULL COMMENT '状态', |
||||
`is_deleted` int(2) NULL DEFAULT NULL COMMENT '是否已删除', |
||||
PRIMARY KEY (`id`) |
||||
) COMMENT = '岗位表'; |
||||
|
||||
-- ---------------------------- |
||||
-- 增加岗位管理表数据 |
||||
-- ---------------------------- |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675201, '000000', 1, 'ceo', '首席执行官', 1, '总经理', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675202, '000000', 1, 'coo', '首席运营官', 2, '常务总经理', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675203, '000000', 1, 'cfo', '首席财务官', 3, '财务总经理', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675204, '000000', 1, 'cto', '首席技术官', 4, '技术总监', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675205, '000000', 1, 'cio', '首席信息官', 5, '信息总监', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675206, '000000', 2, 'pm', '技术经理', 6, '研发和产品是永远的朋友', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675207, '000000', 2, 'hrm', '人力经理', 7, '人力资源部门工作管理者', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
INSERT INTO `blade_post`(`id`, `tenant_id`, `category`, `post_code`, `post_name`, `sort`, `remark`, `create_user`, `create_dept`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) |
||||
VALUES (1123598817738675208, '000000', 3, 'staff', '普通员工', 8, '普通员工', 1123598821738675201, 1123598813738675201, '2020-04-01 00:00:00', 1123598821738675201, '2020-04-01 00:00:00', 1, 0); |
||||
|
||||
-- ---------------------------- |
||||
-- 增加岗位管理菜单数据 |
||||
-- ---------------------------- |
||||
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) |
||||
VALUES ('1164733389668962251', '1123598815738675203', 'post', '岗位管理', 'menu', '/system/post', 'iconfont iconicon_message', 2, 1, 0, 1, NULL, 0); |
||||
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) |
||||
VALUES ('1164733389668962252', '1164733389668962251', 'post_add', '新增', 'add', '/system/post/add', 'plus', 1, 2, 1, 1, NULL, 0); |
||||
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) |
||||
VALUES ('1164733389668962253', '1164733389668962251', 'post_edit', '修改', 'edit', '/system/post/edit', 'form', 2, 2, 2, 1, NULL, 0); |
||||
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) |
||||
VALUES ('1164733389668962254', '1164733389668962251', 'post_delete', '删除', 'delete', '/api/blade-system/post/remove', 'delete', 3, 2, 3, 1, NULL, 0); |
||||
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) |
||||
VALUES ('1164733389668962255', '1164733389668962251', 'post_view', '查看', 'view', '/system/post/view', 'file-text', 4, 2, 2, 1, NULL, 0); |
||||
|
||||
-- ---------------------------- |
||||
-- 增加岗位管理菜单权限数据 |
||||
-- ---------------------------- |
||||
INSERT INTO `blade_role_menu`(`id`,`menu_id`,`role_id`) |
||||
VALUES ('1161272893875225001', '1164733389668962251', '1123598816738675201'); |
||||
INSERT INTO `blade_role_menu`(`id`,`menu_id`,`role_id`) |
||||
VALUES ('1161272893875225002', '1164733389668962252', '1123598816738675201'); |
||||
INSERT INTO `blade_role_menu`(`id`,`menu_id`,`role_id`) |
||||
VALUES ('1161272893875225003', '1164733389668962253', '1123598816738675201'); |
||||
INSERT INTO `blade_role_menu`(`id`,`menu_id`,`role_id`) |
||||
VALUES ('1161272893875225004', '1164733389668962254', '1123598816738675201'); |
||||
INSERT INTO `blade_role_menu`(`id`,`menu_id`,`role_id`) |
||||
VALUES ('1161272893875225005', '1164733389668962255', '1123598816738675201'); |
||||
INSERT INTO `blade_role_menu`(`id`,`menu_id`,`role_id`) |
||||
VALUES ('1161272893875225006', '1164733389668962256', '1123598816738675201'); |
||||
|
||||
-- ---------------------------- |
||||
-- 增加岗位类型字典数据 |
||||
-- ---------------------------- |
||||
INSERT INTO `blade_dict`(`id`, `parent_id`, `code`, `dict_key`, `dict_value`, `sort`, `remark`, `is_sealed`, `is_deleted`) |
||||
VALUES (1123598814738777220, 0, 'post_category', '-1', '岗位类型', 12, NULL, 0, 0); |
||||
INSERT INTO `blade_dict`(`id`, `parent_id`, `code`, `dict_key`, `dict_value`, `sort`, `remark`, `is_sealed`, `is_deleted`) |
||||
VALUES (1123598814738777221, 1123598814738777220, 'post_category', '1', '高层', 1, NULL, 0, 0); |
||||
INSERT INTO `blade_dict`(`id`, `parent_id`, `code`, `dict_key`, `dict_value`, `sort`, `remark`, `is_sealed`, `is_deleted`) |
||||
VALUES (1123598814738777222, 1123598814738777220, 'post_category', '2', '中层', 2, NULL, 0, 0); |
||||
INSERT INTO `blade_dict`(`id`, `parent_id`, `code`, `dict_key`, `dict_value`, `sort`, `remark`, `is_sealed`, `is_deleted`) |
||||
VALUES (1123598814738777223, 1123598814738777220, 'post_category', '3', '基层', 3, NULL, 0, 0); |
||||
INSERT INTO `blade_dict`(`id`, `parent_id`, `code`, `dict_key`, `dict_value`, `sort`, `remark`, `is_sealed`, `is_deleted`) |
||||
VALUES (1123598814738777224, 1123598814738777220, 'post_category', '4', '其他', 4, NULL, 0, 0); |
@ -0,0 +1,27 @@
|
||||
-- ---------------------------- |
||||
-- 增加第三方登陆配置 |
||||
-- ---------------------------- |
||||
UPDATE blade_client set authorized_grant_types = 'refresh_token,password,authorization_code,captcha,social'; |
||||
|
||||
|
||||
-- ---------------------------- |
||||
-- 创建用户第三方登陆表 |
||||
-- ---------------------------- |
||||
CREATE TABLE `blade_user_oauth` ( |
||||
`id` bigint(64) NOT NULL COMMENT '主键', |
||||
`tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户ID', |
||||
`user_id` bigint(64) NULL DEFAULT NULL COMMENT '用户主键', |
||||
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '账号', |
||||
`nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名', |
||||
`avatar` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像', |
||||
`blog` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应用主页', |
||||
`company` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公司名', |
||||
`location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地址', |
||||
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮件', |
||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', |
||||
`gender` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别', |
||||
`source` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '来源', |
||||
PRIMARY KEY (`id`) USING BTREE |
||||
) COMMENT = '用户第三方认证表' ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; |
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1; |
Loading…
Reference in new issue