thiszhc
2023-06-17 98aa0b9f1813ee3dfe9a8be04084efc785ebf024
add 查看授权列表
已添加1个文件
已修改5个文件
310 ■■■■ 文件已修改
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-dev.yml 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SocialUserController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
@@ -25,7 +25,6 @@
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 @@
    @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 + "平台账号暂不支持");
@@ -191,9 +182,6 @@
        Boolean rows = socialUserService.deleteWithValidById(socialId);
        return rows ? R.ok() : R.fail("取消授权失败");
    }
    /**
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -34,11 +34,9 @@
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 @@
    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 @@
     * @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 @@
            socialUserBo.setNickName(authUserData.getNickname());
            socialUserBo.setAvatar(authUserData.getAvatar());
            socialUserBo.setOpenId(authUserData.getUuid());
            BeanUtils.copyProperties(authUserData, socialUserBo);
            BeanUtils.copyProperties(authUserData.getToken(), socialUserBo);
            socialUserService.insertByBo(socialUserBo);
ruoyi-admin/src/main/resources/application-dev.yml
@@ -184,3 +184,152 @@
    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
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));
    }
}
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;
/**
@@ -18,6 +12,17 @@
 * @date 2023-06-12
 */
public interface ISocialUserService {
    /**
     * æŸ¥è¯¢ç¤¾ä¼šåŒ–关系
     */
    SocialUserVo queryById(String id);
    /**
     * æŸ¥è¯¢ç¤¾ä¼šåŒ–关系列表
     */
    List<SocialUserVo> queryList();
    /**
     * æ–°å¢žæŽˆæƒå…³ç³»
@@ -29,12 +34,6 @@
     * åˆ é™¤ç¤¾ä¼šåŒ–关系信息
     */
    Boolean deleteWithValidById(Long id);
    /**
     * æ ¹æ®ç”¨æˆ·ID查询授权关系
     */
    Boolean isExistByUserIdAndSource(Long userId, String source);
    /**
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 @@
    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 @@
        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 @@
        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查询用户信息