소스 검색

钉钉登录授权

sunlupeng 1 년 전
부모
커밋
a93a92bfd4
6개의 변경된 파일144개의 추가작업 그리고 12개의 파일을 삭제
  1. 3 1
      .env.prod
  2. 2 0
      package.json
  3. 1 0
      public/index.html
  4. 9 0
      src/api/login.js
  5. 47 11
      src/permission.js
  6. 82 0
      yarn.lock

+ 3 - 1
.env.prod

@@ -5,7 +5,9 @@ NODE_ENV = 'production'
 VUE_APP_TITLE = 智企云
 
 # 爱思系统/生产环境
-VUE_APP_BASE_API = 'https://isaas.dgtiscloud.com'
+# VUE_APP_BASE_API = 'https://isaas.dgtiscloud.com'
+VUE_APP_BASE_API = 'http://47.103.79.143:48081'
+
 
 # 根据服务器或域名修改
 # PUBLIC_PATH = 'http://47.103.79.143:48081'

+ 2 - 0
package.json

@@ -52,6 +52,8 @@
     "bpmn-js-token-simulation": "0.10.0",
     "clipboard": "2.0.8",
     "core-js": "^3.26.0",
+    "dingtalk-design-libs": "^0.2.0",
+    "dingtalk-jsapi": "^3.0.29",
     "crypto-js": "^4.0.0",
     "echarts": "5.4.0",
     "element-ui": "2.15.12",

+ 1 - 0
public/index.html

@@ -7,6 +7,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title><%= webpackConfig.name %></title>
+    <script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.0.57/dingtalk.open.js"></script>
     <!--[if lt IE 11]><script>window.location.href='html/ie.html';</script><![endif]-->
     <style>
     html,

+ 9 - 0
src/api/login.js

@@ -1,6 +1,15 @@
 import request from '@/utils/request'
 import { getRefreshToken } from '@/utils/auth'
 import service from '@/utils/request'
+
+// DD第三方-授权登录
+export function authLogin(data) {
+  return request({
+    url: '/auth/ding/authLogin',
+    method: 'post',
+    data: data
+  })
+}
 //根据类型获得平台协议type:1服务条款 2隐私声明
 export function agreement(type) {
   return request({

+ 47 - 11
src/permission.js

@@ -3,9 +3,11 @@ import store from './store'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
-import { getAccessToken } from '@/utils/auth'
+import { setToken,setTenantId,getAccessToken } from '@/utils/auth'
 import { isRelogin } from '@/utils/request'
-
+import { authLogin } from "@/api/login";
+import { openAuth } from "dingtalk-design-libs/biz/openAuth";
+import * as dd from "dingtalk-jsapi";
 NProgress.configure({ showSpinner: false })
 // const menus = [
 //     {
@@ -67,6 +69,9 @@ NProgress.configure({ showSpinner: false })
 const whiteList = ['/login','/register','/password/forget','/password/reset','/social-login',  '/auth-redirect', '/bind',  '/oauthLogin/gitee']
 
 router.beforeEach((to, from, next) => {
+  debugger
+  console.log(to);
+  let corpId = to.query;
   NProgress.start()
   if (getAccessToken()) {
     to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
@@ -108,15 +113,46 @@ router.beforeEach((to, from, next) => {
       }
     }
   } else {
-    // 没有token
-    if (whiteList.indexOf(to.path) !== -1) {
-      // 在免登录白名单,直接进入
-      next()
-    } else {
-      const redirect = encodeURIComponent(to.fullPath) // 编码 URI,保证参数跳转回去后,可以继续带上
-      next(`/login?redirect=${redirect}`) // 否则全部重定向到登录页
-      NProgress.done()
-    }
+      if (dd.env.platform !== "notInDingTalk") {
+        return new Promise((resolve, reject) => {
+          dd.ready(function () {
+            // 钉钉免登录认证-第三方企业
+            // let corpId = that.$store.state.app.corpId;
+            // console.log("corpId====", corpId);
+            // 唤起授权--统一授权套件SDK
+            openAuth({
+              clientId: "suite7tssbigaaqsejgth", // 应用ID(唯一标识)
+              corpId: corpId, // 当前组织的corpId
+              rpcScope: "Contact.User.Read", //通讯录
+              fieldScope: "Contact.User.mobile", //手机号
+              type: 0, // 0 标识授权个人信息;1 标识授权组织信息
+            }).then((res) => {
+              // 处理返回数据
+              console.log("统一授权套件SDK==res=", res);
+              authLogin({ code: res.result.authCode, corpId: corpId })
+                .then((res) => {
+                  debugger
+                  console.log("===登录授权=", res);
+                  setToken(res.data);
+                  setTenantId(res.msg)
+                  next({ path: '/' })
+                  resolve();
+                })
+                .catch((err) => {
+                  reject();
+                });
+            });
+          });
+        });
+      }
+    // if (whiteList.indexOf(to.path) !== -1) {
+    //   // 在免登录白名单,直接进入
+    //   next()
+    // } else {
+    //   const redirect = encodeURIComponent(to.fullPath) // 编码 URI,保证参数跳转回去后,可以继续带上
+    //   next(`/login?redirect=${redirect}`) // 否则全部重定向到登录页
+    //   NProgress.done()
+    // }
   }
 })
 

+ 82 - 0
yarn.lock

@@ -993,6 +993,35 @@
     minimatch "^3.0.4"
     strip-json-comments "^3.1.1"
 
+"@fullcalendar/core@^6.1.15":
+  version "6.1.15"
+  resolved "https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.15.tgz#6c3f5259fc4589870228853072131219bb533f6e"
+  integrity sha512-BuX7o6ALpLb84cMw1FCB9/cSgF4JbVO894cjJZ6kP74jzbUZNjtwffwRdA+Id8rrLjT30d/7TrkW90k4zbXB5Q==
+  dependencies:
+    preact "~10.12.1"
+
+"@fullcalendar/daygrid@~6.1.15":
+  version "6.1.15"
+  resolved "https://registry.npmmirror.com/@fullcalendar/daygrid/-/daygrid-6.1.15.tgz#91208b0955ba805ddad285a53ee6f53855146963"
+  integrity sha512-j8tL0HhfiVsdtOCLfzK2J0RtSkiad3BYYemwQKq512cx6btz6ZZ2RNc/hVnIxluuWFyvx5sXZwoeTJsFSFTEFA==
+
+"@fullcalendar/interaction@^6.1.15":
+  version "6.1.15"
+  resolved "https://registry.npmmirror.com/@fullcalendar/interaction/-/interaction-6.1.15.tgz#1c685d5c269388d4877b75ab2185e97d7c386cc7"
+  integrity sha512-DOTSkofizM7QItjgu7W68TvKKvN9PSEEvDJceyMbQDvlXHa7pm/WAVtAc6xSDZ9xmB1QramYoWGLHkCYbTW1rQ==
+
+"@fullcalendar/timegrid@^6.1.15":
+  version "6.1.15"
+  resolved "https://registry.npmmirror.com/@fullcalendar/timegrid/-/timegrid-6.1.15.tgz#c4630b7c03c813065154c6e3981f8d51d9d692e5"
+  integrity sha512-61ORr3A148RtxQ2FNG7JKvacyA/TEVZ7z6I+3E9Oeu3dqTf6M928bFcpehRTIK6zIA6Yifs7BeWHgOE9dFnpbw==
+  dependencies:
+    "@fullcalendar/daygrid" "~6.1.15"
+
+"@fullcalendar/vue@^6.1.15":
+  version "6.1.15"
+  resolved "https://registry.npmmirror.com/@fullcalendar/vue/-/vue-6.1.15.tgz#3f8069f63769ebb0eb0fa9f3696f226223965781"
+  integrity sha512-ptTyhJMwY0kgUQSQtR7Nh8AMdUOdEYUmQu7aU604m776glDh80U6bfm/xLdZKG7EmlAbFAtXnymOUSSxnsGhEQ==
+
 "@gar/promisify@^1.0.1":
   version "1.1.3"
   resolved "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz"
@@ -2187,6 +2216,13 @@ axios@0.27.2:
     follow-redirects "^1.14.9"
     form-data "^4.0.0"
 
+axios@^0.21.1:
+  version "0.21.4"
+  resolved "https://registry.npmmirror.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
+  integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+  dependencies:
+    follow-redirects "^1.14.0"
+
 babel-eslint@10.1.0:
   version "10.1.0"
   resolved "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz"
@@ -3785,6 +3821,23 @@ diffie-hellman@^5.0.0:
     miller-rabin "^4.0.0"
     randombytes "^2.0.0"
 
+dingtalk-design-libs@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.npmmirror.com/dingtalk-design-libs/-/dingtalk-design-libs-0.2.0.tgz#aee1af5c8b6faad0f8ced0a064983a4ad34aa547"
+  integrity sha512-A5w1sOqtyfB6SfqdXVmZ6Ml3oNOZN+sYTnm377nC0Bc2qcPYzt3pfPwZ/dsCV1kqTgbdCgGj8n3mzd2NxP7zuw==
+  dependencies:
+    axios "^0.21.1"
+    dingtalk-jsapi "*"
+    eventemitter2 "^6.4.4"
+    query-string "^5.1.1"
+
+dingtalk-jsapi@*, dingtalk-jsapi@^3.0.29:
+  version "3.0.38"
+  resolved "https://registry.npmmirror.com/dingtalk-jsapi/-/dingtalk-jsapi-3.0.38.tgz#1d6f6fb006dd973dd5dae6690e4d997c807f02a4"
+  integrity sha512-Hm77aRq2k3KPyBF0lGi0Nk9qjdABF0fp+m4gsnEKGJ+0Iyu+rimwfxkRSjFd/HF2OvFbYVNBOKhqj9NitC46ig==
+  dependencies:
+    promise-polyfill "^7.1.0"
+
 dir-glob@^2.0.0, dir-glob@^2.2.2:
   version "2.2.2"
   resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz"
@@ -4423,6 +4476,11 @@ event-pubsub@4.3.0:
   resolved "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz"
   integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
 
+eventemitter2@^6.4.4:
+  version "6.4.9"
+  resolved "https://registry.npmmirror.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125"
+  integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==
+
 eventemitter3@^2.0.3:
   version "2.0.3"
   resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz"
@@ -4806,6 +4864,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.9:
   resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz"
   integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
 
+follow-redirects@^1.14.0:
+  version "1.15.9"
+  resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
+  integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
+
 for-in@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz"
@@ -8017,6 +8080,11 @@ posthtml@^0.9.2:
     posthtml-parser "^0.2.0"
     posthtml-render "^1.0.5"
 
+preact@~10.12.1:
+  version "10.12.1"
+  resolved "https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz#8f9cb5442f560e532729b7d23d42fd1161354a21"
+  integrity sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==
+
 prelude-ls@^1.2.1:
   version "1.2.1"
   resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz"
@@ -8072,6 +8140,11 @@ promise-inflight@^1.0.1:
   resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz"
   integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
 
+promise-polyfill@^7.1.0:
+  version "7.1.2"
+  resolved "https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-7.1.2.tgz#ab05301d8c28536301622d69227632269a70ca3b"
+  integrity sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==
+
 proto-list@~1.2.1:
   version "1.2.4"
   resolved "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz"
@@ -8182,6 +8255,15 @@ query-string@^4.1.0, query-string@^4.3.2:
     object-assign "^4.1.0"
     strict-uri-encode "^1.0.0"
 
+query-string@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmmirror.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
+  integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==
+  dependencies:
+    decode-uri-component "^0.2.0"
+    object-assign "^4.1.0"
+    strict-uri-encode "^1.0.0"
+
 querystring-es3@^0.2.0:
   version "0.2.1"
   resolved "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz"