Pārlūkot izejas kodu

add 查看授权列表

thiszhc 2 gadi atpakaļ
vecāks
revīzija
98aa0b9f18

+ 0 - 12
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<LoginVo> 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 {
     }
 
 
-
-
-
     /**
      * 退出登录
      */

+ 3 - 9
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<String> socialLogin(String source, AuthResponse<AuthUser> authUser, HttpServletRequest request) throws IOException {
+    public R<String> socialLogin(String source, AuthResponse<AuthUser> 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);

+ 149 - 0
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

+ 57 - 0
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<SocialUserVo>> list() {
+        return R.ok(socialUserService.queryList());
+    }
+
+
+    /**
+     * 获取社会化关系详细信息
+     *
+     * @param id 主键
+     */
+//    这里改成用户默认的。只能查看自己的权限更好哦
+//    @SaCheckPermission("system:user:query")
+    @GetMapping("/{id}")
+    public R<SocialUserVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String id) {
+        return R.ok(socialUserService.queryById(id));
+    }
+
+
+
+}

+ 12 - 13
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,22 +13,27 @@ import java.util.List;
  */
 public interface ISocialUserService {
 
+
     /**
-     * 新增授权关系
+     * 查询社会化关系
      */
-    Boolean insertByBo(SocialUserBo bo);
+    SocialUserVo queryById(String id);
 
+    /**
+     * 查询社会化关系列表
+     */
+    List<SocialUserVo> queryList();
 
     /**
-     * 删除社会化关系信息
+     * 新增授权关系
      */
-    Boolean deleteWithValidById(Long id);
+    Boolean insertByBo(SocialUserBo bo);
 
 
     /**
-     * 根据用户ID查询授权关系
+     * 删除社会化关系信息
      */
-    Boolean isExistByUserIdAndSource(Long userId, String source);
+    Boolean deleteWithValidById(Long id);
 
 
     /**

+ 27 - 28
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<SocialUserVo> 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<SocialUser> lqw = Wrappers.lambdaQuery();
-        lqw.eq(SocialUser::getUserId, userId);
-        lqw.eq(SocialUser::getSource, source);
-        return baseMapper.selectCount(lqw) > 0;
-    }
 
     /**
      * 根据authId查询用户信息