diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java
index 16130e17e..aef8cc40a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
@@ -50,7 +50,7 @@ public class SysAuthController {
@Resource
private SysPermissionService permissionService;
@Resource
- private SysSocialService socialService;
+ private SysSocialCoreService socialCoreService;
@PostMapping("/login")
@ApiOperation("使用账号密码登录")
@@ -102,7 +102,7 @@ public class SysAuthController {
})
public CommonResult socialAuthRedirect(@RequestParam("type") Integer type,
@RequestParam("redirectUri") String redirectUri) {
- return CommonResult.success(socialService.getAuthorizeUrl(type, redirectUri));
+ return CommonResult.success(socialCoreService.getAuthorizeUrl(type, redirectUri));
}
@PostMapping("/social-login")
@@ -133,7 +133,7 @@ public class SysAuthController {
@DeleteMapping("/social-unbind")
@ApiOperation("取消社交绑定")
public CommonResult socialUnbind(@RequestBody SysAuthSocialUnbindReqVO reqVO) {
- socialService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId(), UserTypeEnum.ADMIN);
+ socialCoreService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId(), UserTypeEnum.ADMIN);
return CommonResult.success(true);
}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java
index 48236a7ab..0b85016c1 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java
@@ -15,7 +15,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleSer
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
@@ -56,7 +56,7 @@ public class SysUserProfileController {
@Resource
private SysRoleService roleService;
@Resource
- private SysSocialService socialService;
+ private SysSocialCoreService socialService;
@GetMapping("/get")
@ApiOperation("获得登录用户信息")
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
index 6060f7e23..83ab8699f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
@@ -19,7 +19,7 @@ import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
@@ -60,6 +60,8 @@ import static java.util.Collections.singleton;
@Slf4j
public class SysAuthServiceImpl implements SysAuthService {
+ private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.ADMIN;
+
@Resource
@Lazy // 延迟加载,因为存在相互依赖的问题
private AuthenticationManager authenticationManager;
@@ -79,10 +81,8 @@ public class SysAuthServiceImpl implements SysAuthService {
@Resource
private SysPostService postService;
@Resource
- private SysSocialService socialService;
+ private SysSocialCoreService socialService;
- // TODO @timfruit:静态枚举类,需要都大写,例如说 USER_TYPE_ENUM;静态变量,放在普通变量前面;这个实践不错哈。
- private static final UserTypeEnum userTypeEnum = UserTypeEnum.ADMIN;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
@@ -216,7 +216,7 @@ public class SysAuthServiceImpl implements SysAuthService {
// 如果未绑定 SysSocialUserDO 用户,则无法自动登录,进行报错
String unionId = socialService.getAuthUserUnionId(authUser);
- List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, userTypeEnum);
+ List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, USER_TYPE_ENUM);
if (CollUtil.isEmpty(socialUsers)) {
throw exception(AUTH_THIRD_LOGIN_NOT_BIND);
}
@@ -232,7 +232,7 @@ public class SysAuthServiceImpl implements SysAuthService {
LoginUser loginUser = this.buildLoginUser(user);
// 绑定社交用户(更新)
- socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum);
+ socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM);
// 缓存登录用户到 Redis 中,返回 sessionId 编号
return userSessionCoreService.createUserSession(loginUser, userIp, userAgent);
@@ -248,7 +248,7 @@ public class SysAuthServiceImpl implements SysAuthService {
LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword());
// 绑定社交用户(新增)
- socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum);
+ socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM);
// 缓存登录用户到 Redis 中,返回 sessionId 编号
return userSessionCoreService.createUserSession(loginUser, userIp, userAgent);
@@ -261,7 +261,7 @@ public class SysAuthServiceImpl implements SysAuthService {
Assert.notNull(authUser, "授权用户不为空");
// 绑定社交用户(新增)
- socialService.bindSocialUser(userId, reqVO.getType(), authUser, userTypeEnum);
+ socialService.bindSocialUser(userId, reqVO.getType(), authUser, USER_TYPE_ENUM);
}
@Override
@@ -282,7 +282,7 @@ public class SysAuthServiceImpl implements SysAuthService {
reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType());
reqDTO.setTraceId(TracerUtils.getTraceId());
reqDTO.setUserId(userId);
- reqDTO.setUserType(userTypeEnum.getValue());
+ reqDTO.setUserType(USER_TYPE_ENUM.getValue());
reqDTO.setUsername(username);
reqDTO.setUserAgent(ServletUtils.getUserAgent());
reqDTO.setUserIp(ServletUtils.getClientIP());
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java
index 11696fe25..6e213a57d 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java
+++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java
@@ -12,7 +12,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.security.core.LoginUser;
@@ -68,7 +68,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
@MockBean
private SysUserSessionCoreService userSessionCoreService;
@MockBean
- private SysSocialService socialService;
+ private SysSocialCoreService socialService;
@MockBean
private SysPostService postService;
diff --git a/yudao-core-service/pom.xml b/yudao-core-service/pom.xml
index f8a5bf7f0..ccb1e1600 100644
--- a/yudao-core-service/pom.xml
+++ b/yudao-core-service/pom.xml
@@ -101,12 +101,6 @@
guava
-
-
- com.xkcoding.justauth
- justauth-spring-boot-starter
-
-
diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserCoreMapper.java
similarity index 89%
rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java
rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserCoreMapper.java
index ee8db4eac..727c38e67 100644
--- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java
+++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserCoreMapper.java
@@ -8,9 +8,8 @@ import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
import java.util.List;
-// TODO @timfruit:SysSocialUserCoreMapper 改名,方便区分
@Mapper
-public interface SysSocialUserMapper extends BaseMapperX {
+public interface SysSocialUserCoreMapper extends BaseMapperX {
default List selectListByTypeAndUnionId(Integer userType, Collection types, String unionId) {
return selectList(new QueryWrapper().eq("user_type", userType)
diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java
index 514281071..0c033f89e 100644
--- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java
+++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java
@@ -10,9 +10,8 @@ import javax.annotation.Resource;
import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyCoreConstants.SOCIAL_AUTH_USER;
-// TODO @timfruit,这里的 AuthUser 还是保留全路径,主要想体现出来,不是自己定义的
/**
- * 社交 {@link AuthUser} 的 RedisDAO
+ * 社交 {@link me.zhyd.oauth.model.AuthUser} 的 RedisDAO
*
* @author 芋道源码
*/
diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreService.java
similarity index 91%
rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java
rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreService.java
index 8a8df27d6..17634b320 100644
--- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java
+++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreService.java
@@ -15,8 +15,7 @@ import java.util.List;
*
* @author 芋道源码
*/
-// TODO @timfruit:SysSocialCoreService 改名,方便区分
-public interface SysSocialService {
+public interface SysSocialCoreService {
/**
* 获得社交平台的授权 URL
@@ -50,6 +49,7 @@ public interface SysSocialService {
* @param type 社交平台的类型 {@link SysSocialTypeEnum}
* @param unionId 社交平台的 unionId
* @return 社交用户列表
+ * @param userTypeEnum 全局用户类型
*/
List getAllSocialUserList(Integer type, String unionId, UserTypeEnum userTypeEnum);
@@ -58,6 +58,7 @@ public interface SysSocialService {
*
* @param userId 用户编号
* @return 社交用户列表
+ * @param userTypeEnum 全局用户类型
*/
List getSocialUserList(Long userId, UserTypeEnum userTypeEnum);
@@ -67,6 +68,7 @@ public interface SysSocialService {
* @param userId 用户编号
* @param type 社交平台的类型 {@link SysSocialTypeEnum}
* @param authUser 授权用户
+ * @param userTypeEnum 全局用户类型
*/
void bindSocialUser(Long userId, Integer type, AuthUser authUser, UserTypeEnum userTypeEnum);
@@ -76,8 +78,8 @@ public interface SysSocialService {
* @param userId 用户编号
* @param type 社交平台的类型 {@link SysSocialTypeEnum}
* @param unionId 社交平台的 unionId
+ * @param userTypeEnum 全局用户类型
*/
- void unbindSocialUser(Long userId, Integer type, String unionId,UserTypeEnum userTypeEnum);
- // TODO @timfruit:逗号后面要有空格;缺少了 @userTypeEnum 的注释,都补充下哈。
+ void unbindSocialUser(Long userId, Integer type, String unionId, UserTypeEnum userTypeEnum);
}
diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialCoreServiceImpl.java
similarity index 97%
rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java
rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialCoreServiceImpl.java
index bde40c3c4..2d0979912 100644
--- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java
+++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialCoreServiceImpl.java
@@ -2,10 +2,10 @@ package cn.iocoder.yudao.coreservice.modules.system.service.social.impl;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserMapper;
+import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserCoreMapper;
import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO;
import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
@@ -38,7 +38,7 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString
@Service
@Validated
@Slf4j
-public class SysSocialServiceImpl implements SysSocialService {
+public class SysSocialCoreServiceImpl implements SysSocialCoreService {
@Resource
private AuthRequestFactory authRequestFactory;
@@ -47,7 +47,7 @@ public class SysSocialServiceImpl implements SysSocialService {
private SysSocialAuthUserRedisDAO authSocialUserRedisDAO;
@Resource
- private SysSocialUserMapper socialUserMapper;
+ private SysSocialUserCoreMapper socialUserMapper;
@Override
public String getAuthorizeUrl(Integer type, String redirectUri) {
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java
similarity index 92%
rename from yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java
rename to yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java
index cec84c1ed..2a33dd869 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java
+++ b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java
@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.social;
+package cn.iocoder.yudao.coreservice.modules.system.service.social;
-import cn.iocoder.yudao.adminserver.BaseDbAndRedisUnitTest;
+import cn.iocoder.yudao.coreservice.BaseDbAndRedisUnitTest;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserMapper;
+import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserCoreMapper;
import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO;
import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.impl.SysSocialServiceImpl;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.impl.SysSocialCoreServiceImpl;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import com.xkcoding.justauth.AuthRequestFactory;
import me.zhyd.oauth.model.AuthUser;
@@ -23,20 +23,19 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
import static org.junit.jupiter.api.Assertions.assertEquals;
-// TODO @timfruit:这个单元测试,挪到 yudao-core-service
/**
- * {@link SysSocialServiceImpl} 的单元测试类
+ * {@link SysSocialCoreServiceImpl} 的单元测试类
*
* @author 芋道源码
*/
-@Import({SysSocialServiceImpl.class, SysSocialAuthUserRedisDAO.class})
-public class SysSocialServiceTest extends BaseDbAndRedisUnitTest {
+@Import({SysSocialCoreServiceImpl.class, SysSocialAuthUserRedisDAO.class})
+public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest {
@Resource
- private SysSocialServiceImpl socialService;
+ private SysSocialCoreServiceImpl socialService;
@Resource
- private SysSocialUserMapper socialUserMapper;
+ private SysSocialUserCoreMapper socialUserMapper;
@MockBean
private AuthRequestFactory authRequestFactory;
diff --git a/yudao-core-service/src/test/resources/sql/clean.sql b/yudao-core-service/src/test/resources/sql/clean.sql
index e92bf3e43..b11f374ef 100644
--- a/yudao-core-service/src/test/resources/sql/clean.sql
+++ b/yudao-core-service/src/test/resources/sql/clean.sql
@@ -8,3 +8,4 @@ DELETE FROM "sys_user_session";
DELETE FROM "sys_dict_data";
DELETE FROM "sys_sms_template";
DELETE FROM "sys_sms_log";
+DELETE FROM "sys_social_user";
diff --git a/yudao-core-service/src/test/resources/sql/create_tables.sql b/yudao-core-service/src/test/resources/sql/create_tables.sql
index f70251f38..633c0d936 100644
--- a/yudao-core-service/src/test/resources/sql/create_tables.sql
+++ b/yudao-core-service/src/test/resources/sql/create_tables.sql
@@ -177,3 +177,23 @@ CREATE TABLE IF NOT EXISTS `sys_login_log` (
"tenant_id" bigint not null default '0',
PRIMARY KEY (`id`)
) COMMENT ='系统访问记录';
+
+CREATE TABLE IF NOT EXISTS "sys_social_user" (
+ "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+ "user_id" bigint NOT NULL,
+ "user_type" tinyint NOT NULL DEFAULT '0',
+ "type" tinyint NOT NULL,
+ "openid" varchar(32) NOT NULL,
+ "token" varchar(256) DEFAULT NULL,
+ "union_id" varchar(32) NOT NULL,
+ "raw_token_info" varchar(1024) NOT NULL,
+ "nickname" varchar(32) NOT NULL,
+ "avatar" varchar(255) DEFAULT NULL,
+ "raw_user_info" varchar(1024) NOT NULL,
+ "creator" varchar(64) DEFAULT '',
+ "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updater" varchar(64) DEFAULT '',
+ "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "deleted" bit NOT NULL DEFAULT FALSE,
+ PRIMARY KEY ("id")
+) COMMENT '社交用户';
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml
new file mode 100644
index 000000000..7588af0c3
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml
@@ -0,0 +1,50 @@
+
+
+
+ cn.iocoder.boot
+ yudao-framework
+ ${revision}
+
+ jar
+ 4.0.0
+
+ yudao-spring-boot-starter-biz-social
+ ${artifactId}
+
+
+
+ cn.iocoder.boot
+ yudao-common
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+ com.xkcoding.justauth
+ justauth-spring-boot-starter
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-redis
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/config/YudaoSocialAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/config/YudaoSocialAutoConfiguration.java
new file mode 100644
index 000000000..a6c468af5
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/config/YudaoSocialAutoConfiguration.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.framework.social.config;
+
+import cn.iocoder.yudao.framework.social.core.YudaoAuthRequestFactory;
+import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
+import lombok.extern.slf4j.Slf4j;
+import me.zhyd.oauth.cache.AuthStateCache;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 社交自动装配类
+ *
+ * @author timfruit
+ * @date 2021-10-30
+ */
+@Slf4j
+@Configuration
+@EnableConfigurationProperties(JustAuthProperties.class)
+public class YudaoSocialAutoConfiguration {
+
+ @Bean
+ @ConditionalOnProperty(prefix = "justauth", value = "enabled", havingValue = "true", matchIfMissing = true)
+ public YudaoAuthRequestFactory yudaoAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
+ return new YudaoAuthRequestFactory(properties, authStateCache);
+ }
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java
new file mode 100644
index 000000000..8f3cf5d51
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java
@@ -0,0 +1,86 @@
+package cn.iocoder.yudao.framework.social.core;
+
+import cn.hutool.core.util.EnumUtil;
+import cn.hutool.core.util.ReflectUtil;
+import cn.iocoder.yudao.framework.social.core.enums.AuthExtendSource;
+import cn.iocoder.yudao.framework.social.core.request.AuthWeChatMiniProgramRequest;
+import com.xkcoding.justauth.AuthRequestFactory;
+import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
+import me.zhyd.oauth.cache.AuthStateCache;
+import me.zhyd.oauth.config.AuthConfig;
+import me.zhyd.oauth.config.AuthSource;
+import me.zhyd.oauth.request.AuthRequest;
+
+import java.lang.reflect.Method;
+
+/**
+ * 第三方授权拓展 request 工厂类
+ * 为使得拓展配置 {@link AuthConfig} 和默认配置齐平,所以自定义本工厂类
+ *
+ * @author timfruit
+ * @date 2021-10-31
+ */
+// TODO @timfruit:单测
+public class YudaoAuthRequestFactory extends AuthRequestFactory {
+
+ protected JustAuthProperties properties;
+ protected AuthStateCache authStateCache;
+
+ /**
+ * 由于父类 configureHttpConfig 方法是 private 修饰,所以获取后,进行反射调用
+ */
+ private final Method configureHttpConfigMethod = ReflectUtil.getMethod(AuthRequestFactory.class,
+ "configureHttpConfig", String.class, AuthConfig.class, JustAuthProperties.JustAuthHttpConfig.class);
+
+ public YudaoAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
+ super(properties, authStateCache);
+ this.properties = properties;
+ this.authStateCache = authStateCache;
+ }
+
+ /**
+ * 返回 AuthRequest 对象
+ *
+ * @param source {@link AuthSource}
+ * @return {@link AuthRequest}
+ */
+ public AuthRequest get(String source) {
+ // 先尝试获取自定义扩展的
+ AuthRequest authRequest = getExtendRequest(source);
+ // 找不到,使用默认拓展
+ if (authRequest == null) {
+ authRequest = super.get(source);
+ }
+ return authRequest;
+ }
+
+ protected AuthRequest getExtendRequest(String source) {
+ AuthExtendSource authExtendSource;
+ try {
+ authExtendSource = EnumUtil.fromString(AuthExtendSource.class, source.toUpperCase());
+ } catch (IllegalArgumentException e) {
+ // 无自定义匹配
+ return null;
+ }
+
+ // 拓展配置和默认配置齐平,properties 放在一起
+ AuthConfig config = properties.getType().get(authExtendSource.name());
+ // 找不到对应关系,直接返回空
+ if (config == null) {
+ return null;
+ }
+ // 配置 http config
+ ReflectUtil.invoke(this, configureHttpConfigMethod,
+ authExtendSource.name(), config, properties.getHttpConfig());
+
+ // 获得拓展的 Request
+ // noinspection SwitchStatementWithTooFewBranches
+ switch (authExtendSource) {
+ case WECHAT_MINI_PROGRAM:
+ return new AuthWeChatMiniProgramRequest(config, authStateCache);
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendSource.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java
similarity index 78%
rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendSource.java
rename to yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java
index e005114ac..ce61bca40 100644
--- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendSource.java
+++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java
@@ -1,13 +1,21 @@
-package cn.iocoder.yudao.coreservice.modules.system.compent.justauth;
+package cn.iocoder.yudao.framework.social.core.enums;
import me.zhyd.oauth.config.AuthSource;
+/**
+ * 拓展JustAuth各api需要的url, 用枚举类分平台类型管理
+ *
+ * 默认配置 {@link me.zhyd.oauth.config.AuthDefaultSource}
+ *
+ * @author timfruit
+ */
public enum AuthExtendSource implements AuthSource {
/**
* 微信小程序授权登录
*/
- WECHAT_MINI_PROGRAM{
+ WECHAT_MINI_PROGRAM {
+
@Override
public String authorize() {
// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
@@ -28,6 +36,4 @@ public enum AuthExtendSource implements AuthSource {
}
}
- ;
-
}
diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendToken.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java
similarity index 62%
rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendToken.java
rename to yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java
index 2ecb0d461..2c0f4f403 100644
--- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendToken.java
+++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java
@@ -1,10 +1,11 @@
-package cn.iocoder.yudao.coreservice.modules.system.compent.justauth;
+package cn.iocoder.yudao.framework.social.core.model;
import lombok.*;
import me.zhyd.oauth.model.AuthToken;
/**
- * TODO @timfruit:类注释
+ * 授权所需的 token 拓展类
+ *
* @author timfruit
* @date 2021-10-29
*/
@@ -15,7 +16,7 @@ import me.zhyd.oauth.model.AuthToken;
public class AuthExtendToken extends AuthToken {
/**
- * 微信小程序 会话密钥
+ * 微信小程序 - 会话密钥
*/
private String miniSessionKey;
diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthWeChatMiniProgramRequest.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java
similarity index 67%
rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthWeChatMiniProgramRequest.java
rename to yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java
index 664f9157f..e5bbfcaad 100644
--- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthWeChatMiniProgramRequest.java
+++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java
@@ -1,6 +1,10 @@
-package cn.iocoder.yudao.coreservice.modules.system.compent.justauth;
+package cn.iocoder.yudao.framework.social.core.request;
-import com.alibaba.fastjson.JSONObject;
+import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
+import cn.iocoder.yudao.framework.social.core.enums.AuthExtendSource;
+import cn.iocoder.yudao.framework.social.core.model.AuthExtendToken;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.exception.AuthException;
@@ -11,9 +15,6 @@ import me.zhyd.oauth.request.AuthDefaultRequest;
import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.utils.UrlBuilder;
-// TODO @timfruit:新建一个 yudao-spring-boot-starter-biz-social 包,把这个拓展拿进去哈。另外,可以思考下。
-// 1. application-local.yaml 的配置里,justauth.extend.enum-class 能否不配置,而是自动配置好
-// 2. application-local.yaml 的配置里,justauth.extend.extend.config.WECHAT_MINI_PROGRAM 有办法和 justauth.type.WECHAT_MP 持平
/**
* 微信小程序登陆
*
@@ -34,14 +35,14 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
protected AuthToken getAccessToken(AuthCallback authCallback) {
// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl(authCallback.getCode()));
- JSONObject accessTokenObject = JSONObject.parseObject(response); // TODO @timfruit:使用 JsonUtils,项目尽量避免直接使用某个 json 库
+ CodeSessionResponse accessTokenObject = JsonUtils.parseObject(response, CodeSessionResponse.class);
this.checkResponse(accessTokenObject);
AuthExtendToken token = new AuthExtendToken();
- token.setMiniSessionKey(accessTokenObject.getString("session_key"));
- token.setOpenId(accessTokenObject.getString("openid"));
- token.setUnionId(accessTokenObject.getString("unionid"));
+ token.setMiniSessionKey(accessTokenObject.sessionKey);
+ token.setOpenId(accessTokenObject.openid);
+ token.setUnionId(accessTokenObject.unionid);
return token;
}
@@ -64,10 +65,9 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
*
* @param object 请求响应内容
*/
- private void checkResponse(JSONObject object) {
- int code = object.getIntValue("errcode");
- if(code != 0){ // TODO @timfruit:if (code != 0) { ,注意空格
- throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg"));
+ private void checkResponse(CodeSessionResponse object) {
+ if (object.errcode != 0) {
+ throw new AuthException(object.errcode, object.errmsg);
}
}
@@ -87,4 +87,14 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
.build();
}
+ @Data
+ private static class CodeSessionResponse {
+ private int errcode;
+ private String errmsg;
+ @JsonProperty("session_key")
+ private String sessionKey;
+ private String openid;
+ private String unionid;
+ }
+
}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/resources/META-INF/spring.factories b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/resources/META-INF/spring.factories
new file mode 100644
index 000000000..dcd4dcf71
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ cn.iocoder.yudao.framework.social.config.YudaoSocialAutoConfiguration
diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java
index 9e6b9f450..79e8a55a1 100644
--- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java
+++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java
@@ -1,6 +1,6 @@
package cn.iocoder.yudao.userserver.modules.system.controller.auth;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
@@ -38,7 +38,7 @@ public class SysAuthController {
@Resource
private SysSmsCodeService smsCodeService;
@Resource
- private SysSocialService socialService;
+ private SysSocialCoreService socialService;
@PostMapping("/login")
@ApiOperation("使用手机 + 密码登录")
@@ -115,19 +115,6 @@ public class SysAuthController {
return CommonResult.success(socialService.getAuthorizeUrl(type, redirectUri));
}
- // TODO @timfruit:这个接口,是要删除的么?
- @GetMapping("/social-login-get")
- @ApiOperation("微信公众号授权回调地址,输出social-login2的必要参数用于测试,使用 code 授权码")
- @ResponseBody
- @Deprecated
- public CommonResult socialLoginGet(HttpServletRequest request,String code,String state) {
- // 返回结果
- MbrAuthSocialLoginReqVO reqVO = MbrAuthSocialLoginReqVO.builder().state(state).code(code).build();
- reqVO.setType(12);
- //输出social-login2的必要参数用于测试
- System.out.println(JSON.toJSON(reqVO));
- return success(reqVO);
- }
@PostMapping("/social-login")
@ApiOperation("社交登录,使用 code 授权码")
@@ -136,10 +123,9 @@ public class SysAuthController {
return success(SysAuthLoginRespVO.builder().token(token).build());
}
- // TODO @timfruit:社交登陆时,使用手机验证码来验证哈。这块我当时没设计好,改改,嘿嘿。
@PostMapping("/social-login2")
- @ApiOperation("社交登录,使用 code 授权码 + 账号密码")
+ @ApiOperation("社交登录,使用 手机号 + 手机验证码")
public CommonResult socialLogin2(@RequestBody @Valid MbrAuthSocialLogin2ReqVO reqVO) {
String token = authService.socialLogin2(reqVO, getClientIP(), getUserAgent());
return success(SysAuthLoginRespVO.builder().token(token).build());
diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java
index 584df7ed1..1da763ed3 100644
--- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java
+++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java
@@ -34,15 +34,16 @@ public class MbrAuthSocialLogin2ReqVO {
@NotEmpty(message = "state 不能为空")
private String state;
- @ApiModelProperty(value = "账号", required = true, example = "yudaoyuanma")
- @NotEmpty(message = "登录账号不能为空")
- @Length(min = 4, max = 16, message = "账号长度为 4-16 位")
- @Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
- private String username;
+ @ApiModelProperty(value = "手机号", required = true, example = "15119100000")
+ @NotEmpty(message = "手机号不能为空")
+ @Length(min = 11, max = 11, message = "手机号是11位数字")
+ private String mobile;
+
+ @ApiModelProperty(value = "手机验证码", required = true, example = "1024")
+ @NotEmpty(message = "手机验证码不能为空")
+ @Length(min = 4, max = 6, message = "手机验证码长度为 4-6 位")
+ @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字")
+ private String smsCode;
- @ApiModelProperty(value = "密码", required = true, example = "buzhidao")
- @NotEmpty(message = "密码不能为空")
- @Length(min = 4, max = 16, message = "密码长度为 4-16 位")
- private String password;
}
diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java
index 33664d351..a81bfdeeb 100644
--- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java
+++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java
@@ -46,7 +46,7 @@ public interface SysAuthService extends SecurityAuthFrameworkService {
String socialLogin(@Valid MbrAuthSocialLoginReqVO reqVO, String userIp, String userAgent);
/**
- * 社交登录,使用 code 授权码 + 账号密码
+ * 社交登录,使用 手机号 + 手机验证码
*
* @param reqVO 登录信息
* @param userIp 用户 IP
diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
index f4193b35b..a0b1c09cf 100644
--- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
+++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEn
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
-import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService;
+import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
@@ -57,6 +57,8 @@ import static cn.iocoder.yudao.userserver.modules.system.enums.SysErrorCodeConst
@Slf4j
public class SysAuthServiceImpl implements SysAuthService {
+ private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.MEMBER;
+
@Resource
@Lazy // 延迟加载,因为存在相互依赖的问题
private AuthenticationManager authenticationManager;
@@ -70,7 +72,8 @@ public class SysAuthServiceImpl implements SysAuthService {
@Resource
private SysUserSessionCoreService userSessionCoreService;
@Resource
- private SysSocialService socialService;
+ private SysSocialCoreService socialService;
+
@Resource
private StringRedisTemplate stringRedisTemplate;
@Resource
@@ -127,7 +130,7 @@ public class SysAuthServiceImpl implements SysAuthService {
// 如果未绑定 SysSocialUserDO 用户,则无法自动登录,进行报错
String unionId = socialService.getAuthUserUnionId(authUser);
- List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, userTypeEnum);
+ List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, USER_TYPE_ENUM);
if (CollUtil.isEmpty(socialUsers)) {
throw exception(AUTH_THIRD_LOGIN_NOT_BIND);
}
@@ -143,7 +146,7 @@ public class SysAuthServiceImpl implements SysAuthService {
LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user);
// 绑定社交用户(更新)
- socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum);
+ socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM);
// 缓存登录用户到 Redis 中,返回 sessionId 编号
return userSessionCoreService.createUserSession(loginUser, userIp, userAgent);
@@ -151,19 +154,21 @@ public class SysAuthServiceImpl implements SysAuthService {
@Override
public String socialLogin2(MbrAuthSocialLogin2ReqVO reqVO, String userIp, String userAgent) {
- // 使用 code 授权码,进行登录
AuthUser authUser = socialService.getAuthUser(reqVO.getType(), reqVO.getCode(), reqVO.getState());
org.springframework.util.Assert.notNull(authUser, "授权用户不为空");
- // 使用账号密码,进行登录。
- LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword());
-// loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表
+ // 使用手机号、手机验证码登录
+ SysAuthSmsLoginReqVO loginReqVO = SysAuthSmsLoginReqVO
+ .builder()
+ .mobile(reqVO.getMobile())
+ .code(reqVO.getSmsCode())
+ .build();
+ String sessionId = this.smsLogin(loginReqVO, userIp, userAgent);
+ LoginUser loginUser = userSessionCoreService.getLoginUser(sessionId);
// 绑定社交用户(新增)
- socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum);
-
- // 缓存登录用户到 Redis 中,返回 sessionId 编号
- return userSessionCoreService.createUserSession(loginUser, userIp, userAgent);
+ socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM);
+ return sessionId;
}
@Override
@@ -173,7 +178,7 @@ public class SysAuthServiceImpl implements SysAuthService {
org.springframework.util.Assert.notNull(authUser, "授权用户不为空");
// 绑定社交用户(新增)
- socialService.bindSocialUser(userId, reqVO.getType(), authUser, userTypeEnum);
+ socialService.bindSocialUser(userId, reqVO.getType(), authUser, USER_TYPE_ENUM);
}
private LoginUser login0(String username, String password) {
@@ -347,7 +352,7 @@ public class SysAuthServiceImpl implements SysAuthService {
reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType());
reqDTO.setTraceId(TracerUtils.getTraceId());
reqDTO.setUserId(userId);
- reqDTO.setUserType(userTypeEnum.getValue());
+ reqDTO.setUserType(USER_TYPE_ENUM.getValue());
reqDTO.setUsername(username);
reqDTO.setUserAgent(ServletUtils.getUserAgent());
reqDTO.setUserIp(getClientIP());
diff --git a/yudao-user-server/src/main/resources/application-dev.yaml b/yudao-user-server/src/main/resources/application-dev.yaml
index 8419e1976..7e6aa355e 100644
--- a/yudao-user-server/src/main/resources/application-dev.yaml
+++ b/yudao-user-server/src/main/resources/application-dev.yaml
@@ -150,24 +150,16 @@ yudao:
justauth:
enabled: true
- type: # TODO @timfruit:GITEE、DINGTALK、WECHAT_ENTERPRISE 这个几个,对于用户端是不需要的哈,可以删除噢
- GITEE: # Gitee
- client-id: ee61f0374a4c6c404a8717094caa7a410d76950e45ff60348015830c519ba5c1
- client-secret: 7c044a5671be3b051414db0cf2cec6ad702dd298d2416ba24ceaf608e6fa26f9
- ignore-check-redirect-uri: true
- DINGTALK: # 钉钉
- client-id: dingvrnreaje3yqvzhxg
- client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
- ignore-check-redirect-uri: true
- WECHAT_ENTERPRISE: # 企业微信
- client-id: wwd411c69a39ad2e54
- client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
- agent-id: 1000004
- ignore-check-redirect-uri: true
- WECHAT_MP: # 微信公众平台 - H5 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
+ type:
+ WECHAT_MP: # 微信公众平台 - 移动端 H5 https://www.yuque.com/docs/share/a795bef6-ee8a-494a-8dc4-2ef41927743b?#%20%E3%80%8A%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E6%B5%8B%E8%AF%95%E3%80%8B
client-id: wxa5a05b85ac361f96
client-secret: 247073c7cebb67f27f0e769195c2a57e
ignore-check-redirect-uri: true
+ WECHAT_MINI_PROGRAM: # 微信小程序 https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa?#%20%E3%80%8A%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E3%80%8B
+ client-id: wx44d047d87e6284d8
+ client-secret: 21c3b7a8a51ee1b8f5cf875848ed4466
+ ignore-check-redirect-uri: true
+ ignore-check-state: true
cache:
type: REDIS
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
diff --git a/yudao-user-server/src/main/resources/application-local.yaml b/yudao-user-server/src/main/resources/application-local.yaml
index dc1b90712..7f3a6fec4 100644
--- a/yudao-user-server/src/main/resources/application-local.yaml
+++ b/yudao-user-server/src/main/resources/application-local.yaml
@@ -170,17 +170,13 @@ justauth:
# client-id: wx5b23ba7a5589ecbb # TODO 芋艿:自己的测试,后续可以删除
# client-secret: 2a7b3b20c537e52e74afd395eb85f61f
ignore-check-redirect-uri: true
- extend:
- enum-class: cn.iocoder.yudao.coreservice.modules.system.compent.justauth.AuthExtendSource
- config:
- WECHAT_MINI_PROGRAM: # 微信小程序 https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa?#%20%E3%80%8A%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E3%80%8B
- request-class: cn.iocoder.yudao.coreservice.modules.system.compent.justauth.AuthWeChatMiniProgramRequest
- client-id: wx44d047d87e6284d8
- client-secret: 21c3b7a8a51ee1b8f5cf875848ed4466
-# client-id: wx63c280fe3248a3e7 # TODO 芋艿:自己的测试,后续可以删除
-# client-secret: 6f270509224a7ae1296bbf1c8cb97aed
- ignore-check-redirect-uri: true
- ignore-check-state: true
+ WECHAT_MINI_PROGRAM: # 微信小程序 https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa?#%20%E3%80%8A%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E3%80%8B
+ client-id: wx44d047d87e6284d8
+ client-secret: 21c3b7a8a51ee1b8f5cf875848ed4466
+ # client-id: wx63c280fe3248a3e7 # TODO 芋艿:自己的测试,后续可以删除
+ # client-secret: 6f270509224a7ae1296bbf1c8cb97aed
+ ignore-check-redirect-uri: true
+ ignore-check-state: true
cache:
type: REDIS
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
diff --git a/yudao-user-server/src/main/resources/static/READMD.md b/yudao-user-server/src/main/resources/static/READMD.md
new file mode 100644
index 000000000..2cf46688d
--- /dev/null
+++ b/yudao-user-server/src/main/resources/static/READMD.md
@@ -0,0 +1,13 @@
+## 微信公众号
+
+参考文章:https://www.yuque.com/docs/share/0e2966dd-89f8-4b69-980d-b876168725df
+
+① 访问 social-login.html 选择【微信公众号】
+
+② 微信公众号授权完成后,跳转回 social-login2.html,输入手机号 + 密码,进行绑定
+
+## 微信小程序
+
+参考文章:https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa
+
+① 暂时使用 mini-program-test 项目
diff --git a/yudao-user-server/src/main/resources/static/social-login.html b/yudao-user-server/src/main/resources/static/social-login.html
index 2570d7084..7cf09f00e 100644
--- a/yudao-user-server/src/main/resources/static/social-login.html
+++ b/yudao-user-server/src/main/resources/static/social-login.html
@@ -13,14 +13,16 @@
+点击如下按钮,授权登录
+
+ 手机号
+ 手机验证码
+
+
+
+
+