diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 8cb96cd69..515ec1b21 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -25,7 +25,6 @@ import org.dromara.common.social.utils.SocialUtils; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.system.domain.bo.SysTenantBo; import org.dromara.system.domain.vo.SysTenantVo; -import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISocialUserService; import org.dromara.system.service.ISysConfigService; import org.dromara.system.service.ISysTenantService; @@ -139,14 +138,6 @@ public class AuthController { @GetMapping("/binding/{source}") @ResponseBody public R authBinding(@PathVariable("source") String source, HttpServletRequest request){ - SysUserVo userLoding = new SysUserVo(); - if (ObjectUtil.isNull(userLoding)) { - return R.fail("授权失败,请先登录再绑定"); - } - if (socialUserService.isExistByUserIdAndSource(userLoding.getUserId(),source)) - { - return R.fail(source + "平台账号已经被账号绑定"); - } SocialLoginConfigProperties obj = socialProperties.getType().get(source); if (ObjectUtil.isNull(obj)){ return R.fail(source + "平台账号暂不支持"); @@ -193,9 +184,6 @@ public class AuthController { } - - - /** * 退出登录 */ diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index 479c390f3..e4aec24f1 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -34,11 +34,9 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.web.config.properties.CaptchaProperties; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.bo.SocialUserBo; -import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.vo.SocialUserVo; import org.dromara.system.domain.vo.SysTenantVo; import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.mapper.SocialUserMapper; import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.service.ISocialUserService; import org.dromara.system.service.ISysPermissionService; @@ -66,7 +64,6 @@ public class SysLoginService { private final SysUserMapper userMapper; private final ISocialUserService socialUserService; - private final ISysUserService userService; private final CaptchaProperties captchaProperties; private final ISysPermissionService permissionService; private final ISysTenantService tenantService; @@ -176,22 +173,20 @@ public class SysLoginService { * @param request Http请求对象 * @return 统一响应实体 */ - public R socialLogin(String source, AuthResponse authUser, HttpServletRequest request) throws IOException { + public R socialLogin(String source, AuthResponse authUser, HttpServletRequest request) { // 判断授权响应是否成功 if (!authUser.ok()) { return R.fail("对不起,授权信息验证不通过,请退出重试!"); } AuthUser authUserData = authUser.getData(); - String authId = source + authUserData.getUuid(); - - SocialUserVo user = socialUserService.selectSocialUserByAuthId(authId); + SocialUserVo user = socialUserService.selectSocialUserByAuthId(authUserData.getSource() + authUserData.getUuid()); if (ObjectUtil.isNotNull(user)) { //执行登录和记录登录信息操作 return loginAndRecord(user.getTenantId(), user.getUserName(), authUserData); } else { // 判断是否已登录 if (LoginHelper.getUserId() == null) { - return R.fail("授权失败,请先登录再绑定"); + return R.fail("授权失败,请先登录才能绑定"); } SocialUserBo socialUserBo = new SocialUserBo(); socialUserBo.setUserId(LoginHelper.getUserId()); @@ -201,7 +196,6 @@ public class SysLoginService { socialUserBo.setNickName(authUserData.getNickname()); socialUserBo.setAvatar(authUserData.getAvatar()); socialUserBo.setOpenId(authUserData.getUuid()); - BeanUtils.copyProperties(authUserData, socialUserBo); BeanUtils.copyProperties(authUserData.getToken(), socialUserBo); socialUserService.insertByBo(socialUserBo); diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5adc8aed8..bbd9e1734 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -184,3 +184,152 @@ sms: sdkAppId: appid #地域信息默认为 ap-guangzhou 如无特殊改变可不用设置 territory: ap-guangzhou + + + +justauth: + enabled: true + type: + QQ: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/qq/callback + union-id: false + WEIBO: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/weibo/callback + gitee: + client-id: 38eaaa1b77b5e064313057a2f5745ce3a9f3e7686d9bd302c7df2f308ef6db81 + client-secret: 2e633af8780cb9fe002c4c7291b722db944402e271efb99b062811f52d7da1ff + redirect-uri: http://localhost:80/social-login?source=gitee + DINGTALK: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/dingtalk/callback + BAIDU: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/baidu/callback + CSDN: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/csdn/callback + CODING: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/coding/callback + coding-group-name: xx + OSCHINA: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/oschina/callback + ALIPAY: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/alipay/callback + alipay-public-key: MIIB**************DAQAB + WECHAT_OPEN: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/wechat_open/callback + WECHAT_MP: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/wechat_mp/callback + WECHAT_ENTERPRISE: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/wechat_enterprise/callback + agent-id: 1000002 + TAOBAO: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/taobao/callback + GOOGLE: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/google/callback + FACEBOOK: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/facebook/callback + DOUYIN: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/douyin/callback + LINKEDIN: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/linkedin/callback + MICROSOFT: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/microsoft/callback + MI: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/mi/callback + TOUTIAO: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/toutiao/callback + TEAMBITION: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/teambition/callback + RENREN: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/renren/callback + PINTEREST: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/pinterest/callback + STACK_OVERFLOW: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/stack_overflow/callback + stack-overflow-key: asd*********asd + HUAWEI: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/huawei/callback + KUJIALE: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/kujiale/callback + GITLAB: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/gitlab/callback + MEITUAN: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/meituan/callback + ELEME: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/eleme/callback + TWITTER: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/twitter/callback + XMLY: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/xmly/callback + # 设备唯一标识ID + device-id: xxxxxxxxxxxxxx + # 客户端操作系统类型,1-iOS系统,2-Android系统,3-Web + client-os-type: 3 + # 客户端包名,如果 clientOsType 为1或2时必填。对Android客户端是包名,对IOS客户端是Bundle ID + #pack-id: xxxx + FEISHU: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/feishu/callback + JD: + client-id: 10**********6 + client-secret: 1f7d08**********5b7**********29e + redirect-uri: http://oauth.xkcoding.com/demo/oauth/jd/callback diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SocialUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SocialUserController.java new file mode 100644 index 000000000..38cc14ce9 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SocialUserController.java @@ -0,0 +1,57 @@ +package org.dromara.system.controller.system; + +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.vo.SocialUserVo; +import org.dromara.system.service.ISocialUserService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 社会化关系 + * + * @author thiszhc + * @date 2023-06-16 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/social") +public class SocialUserController extends BaseController { + + private final ISocialUserService socialUserService; + + /** + * 查询社会化关系列表 + */ +// 这里改成用户默认的。只能查看自己的权限更好哦 +// @SaCheckPermission("system:user:list") + @GetMapping("/list") + public R> list() { + return R.ok(socialUserService.queryList()); + } + + + /** + * 获取社会化关系详细信息 + * + * @param id 主键 + */ +// 这里改成用户默认的。只能查看自己的权限更好哦 +// @SaCheckPermission("system:user:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String id) { + return R.ok(socialUserService.queryById(id)); + } + + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java index d9e87f7d7..00c4a5fd4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java @@ -1,14 +1,8 @@ package org.dromara.system.service; -import org.dromara.system.domain.SocialUser; -import org.dromara.system.domain.bo.SysUserBo; -import org.dromara.system.domain.vo.SocialUserVo; import org.dromara.system.domain.bo.SocialUserBo; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.domain.vo.SocialUserVo; -import java.util.Collection; import java.util.List; /** @@ -19,6 +13,17 @@ import java.util.List; */ public interface ISocialUserService { + + /** + * 查询社会化关系 + */ + SocialUserVo queryById(String id); + + /** + * 查询社会化关系列表 + */ + List queryList(); + /** * 新增授权关系 */ @@ -31,12 +36,6 @@ public interface ISocialUserService { Boolean deleteWithValidById(Long id); - /** - * 根据用户ID查询授权关系 - */ - Boolean isExistByUserIdAndSource(Long userId, String source); - - /** * 根据authId查询SocialUser表和SysUser表,返回SocialUserAuthResult映射的对象 * @param authId 认证ID diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java index fc342445b..df71064e0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java @@ -1,25 +1,15 @@ package org.dromara.system.service.impl; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.dromara.system.domain.bo.SysUserBo; -import org.dromara.system.domain.vo.SysUserVo; -import org.springframework.stereotype.Service; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.system.domain.SocialUser; import org.dromara.system.domain.bo.SocialUserBo; import org.dromara.system.domain.vo.SocialUserVo; -import org.dromara.system.domain.SocialUser; import org.dromara.system.mapper.SocialUserMapper; import org.dromara.system.service.ISocialUserService; +import org.springframework.stereotype.Service; import java.util.List; -import java.util.Map; -import java.util.Collection; /** * 社会化关系Service业务层处理 @@ -33,6 +23,25 @@ public class SocialUserServiceImpl implements ISocialUserService { private final SocialUserMapper baseMapper; + + /** + * 查询社会化关系 + */ + @Override + public SocialUserVo queryById(String id){ + return baseMapper.selectVoById(id); + } + + /** + * 授权列表 + */ + @Override + public List queryList() { + return baseMapper.selectVoList(); + } + + + /** * 新增社会化关系 */ @@ -42,7 +51,11 @@ public class SocialUserServiceImpl implements ISocialUserService { validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { - bo.setId(add.getId()); + if (add != null) { + bo.setId(add.getId()); + }else { + return false; + } } return flag; } @@ -64,20 +77,6 @@ public class SocialUserServiceImpl implements ISocialUserService { return baseMapper.deleteById(id) > 0; } - /** - * 根据用户id和来源查询用户是否存在 - * - * @param userId 用户id - * @param source 来源 - * @return 是否存在 - */ - @Override - public Boolean isExistByUserIdAndSource(Long userId, String source) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SocialUser::getUserId, userId); - lqw.eq(SocialUser::getSource, source); - return baseMapper.selectCount(lqw) > 0; - } /** * 根据authId查询用户信息