wenhongquan 3 年 前
コミット
0fd1c9fd32

+ 11 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java

@@ -3,10 +3,7 @@ package com.ruoyi.web.controller.system;
 import java.util.List;
 import java.util.Set;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysMenu;
@@ -51,6 +48,16 @@ public class SysLoginController
         return ajax;
     }
 
+    @PostMapping("/loginbydingding")
+    public AjaxResult loginDingding(@RequestParam("code") String requestAuthCode)
+    {
+        AjaxResult ajax = AjaxResult.success();
+        // 生成令牌
+        String token = loginService.logindingding(requestAuthCode);
+        ajax.put(Constants.TOKEN, token);
+        return ajax;
+    }
+
     /**
      * 获取用户信息
      * 

+ 4 - 0
ruoyi-framework/pom.xml

@@ -68,6 +68,10 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-system</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-quartz</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -97,7 +97,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage").anonymous()
+                .antMatchers("/login","/loginbydingding", "/register", "/captchaImage").anonymous()
                 .antMatchers(
                         HttpMethod.GET,
                         "/",

+ 28 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -1,6 +1,10 @@
 package com.ruoyi.framework.web.service;
 
 import javax.annotation.Resource;
+
+import com.ruoyi.quartz.task.RyTask;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -33,6 +37,7 @@ import com.ruoyi.system.service.ISysUserService;
 @Component
 public class SysLoginService
 {
+    private static final Logger log = LoggerFactory.getLogger(SysLoginService.class);
     @Autowired
     private TokenService tokenService;
 
@@ -48,6 +53,9 @@ public class SysLoginService
     @Autowired
     private ISysConfigService configService;
 
+    @Autowired
+    private RyTask ryTask;
+
     /**
      * 登录验证
      * 
@@ -93,6 +101,26 @@ public class SysLoginService
         return tokenService.createToken(loginUser);
     }
 
+    public String logindingding(String code)
+    {
+
+        SysUser user =  ryTask.getUserByCode(code);
+        // 用户验证
+        if(user==null){
+            AsyncManager.me().execute(AsyncFactory.recordLogininfor(code, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+            throw new UserPasswordNotMatchException();
+        }
+
+
+        LoginUser loginUser = new LoginUser();
+        loginUser.setUser(user);
+        String token = tokenService.createToken(loginUser);
+        log.info("token:"+token);
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+        // 生成token
+        return token;
+    }
+
     /**
      * 校验验证码
      * 

+ 21 - 0
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java

@@ -54,6 +54,27 @@ public class RyTask
     private String  appSecret = "9_NL7MkSkxQJwlFp9wo2VX8oSxU55hxSOG2Xv8Vk6r_OcLATjMewPNRfPCIuXWNI";
 
 
+    public SysUser getUserByCode(String code){
+        if(token.equals("")||(new Date().getTime()/1000 - tokentime)>exp){
+            getToken();
+        }
+
+        try{
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo");
+            OapiUserGetuserinfoRequest request = new OapiUserGetuserinfoRequest();
+            request.setCode(code);
+            request.setHttpMethod("GET");
+            OapiUserGetuserinfoResponse response = client.execute(request, token);
+
+            return iSysUserService.selectUserByUserName(response.getUserid());
+
+        }catch (Exception e){
+
+        }
+        return  null;
+
+
+    }
 
     private String token="";
     private Long tokentime=0L;