From 8189ee0173ba58e1f7ea93a1993585726be30048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Thu, 23 Jun 2022 22:06:39 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=96=B0=E5=A2=9E=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E8=B4=A6=E5=8F=B7=E6=B3=A8=E5=86=8C=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/login.js | 15 + src/api/system/thirdaccount.js | 70 +++++ src/assets/icons/dingding.png | Bin 0 -> 8338 bytes src/assets/icons/gitee.png | Bin 0 -> 7021 bytes src/assets/icons/github.png | Bin 0 -> 6390 bytes src/assets/icons/wechat.png | Bin 0 -> 7174 bytes src/assets/styles/index.scss | 5 +- src/assets/styles/login.scss | 73 +++++ src/permission.js | 2 +- src/router/index.js | 5 + src/store/modules/user.js | 43 ++- src/views/login.vue | 105 ++----- src/views/socialLogin.vue | 62 ++++ src/views/system/oauth/thirdAccount.vue | 358 ++++++++++++++++++++++++ 14 files changed, 650 insertions(+), 88 deletions(-) create mode 100644 src/api/system/thirdaccount.js create mode 100644 src/assets/icons/dingding.png create mode 100644 src/assets/icons/gitee.png create mode 100644 src/assets/icons/github.png create mode 100644 src/assets/icons/wechat.png create mode 100644 src/assets/styles/login.scss create mode 100644 src/views/socialLogin.vue create mode 100644 src/views/system/oauth/thirdAccount.vue diff --git a/src/api/system/login.js b/src/api/system/login.js index b421964..2f7043e 100644 --- a/src/api/system/login.js +++ b/src/api/system/login.js @@ -48,4 +48,19 @@ export function register(data) { method: 'post', data: data }) +} + +/** + * 三方授权回调 + * @param {*} data + * @param {*} params + * @returns + */ +export function oauthCallback(data, params) { + return request({ + url: '/auth/callback', + method: 'post', + data: data, + params: params + }) } \ No newline at end of file diff --git a/src/api/system/thirdaccount.js b/src/api/system/thirdaccount.js new file mode 100644 index 0000000..7637df3 --- /dev/null +++ b/src/api/system/thirdaccount.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +/** +* 三方账号绑定分页查询 +* @param {查询条件} data +*/ +export function listThirdAccount(query) { + return request({ + url: 'system/ThirdAccount/list', + method: 'get', + params: query, + }) +} + + +/** +* 新增三方账号绑定 +* @param data +*/ +export function addThirdAccount(data) { + return request({ + url: 'system/ThirdAccount', + method: 'post', + data: data, + }) +} + +/** +* 修改三方账号绑定 +* @param data +*/ +export function updateThirdAccount(data) { + return request({ + url: 'system/ThirdAccount', + method: 'PUT', + data: data, + }) +} + +/** +* 获取三方账号绑定详情 +* @param {Id} +*/ +export function getThirdAccount(id) { + return request({ + url: 'system/ThirdAccount/' + id, + method: 'get' + }) +} + +/** +* 删除三方账号绑定 +* @param {主键} pid +*/ +export function delThirdAccount(pid) { + return request({ + url: 'system/ThirdAccount/' + pid, + method: 'delete' + }) +} + +// 导出三方账号绑定 +export function exportThirdAccount(query) { + return request({ + url: 'system/ThirdAccount/export', + method: 'get', + params: query + }) +} + diff --git a/src/assets/icons/dingding.png b/src/assets/icons/dingding.png new file mode 100644 index 0000000000000000000000000000000000000000..3edae93c7dec01812bbe88027d81a8b8628f41a1 GIT binary patch literal 8338 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 Eg5EXtqW}N^ literal 0 HcmV?d00001 diff --git a/src/assets/icons/wechat.png b/src/assets/icons/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..ae98f84a10a5b7b156d8475fa571f034389400f4 GIT binary patch literal 7174 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 z { NProgress.start() diff --git a/src/router/index.js b/src/router/index.js index 4ff7cc0..7858671 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -38,6 +38,11 @@ export const constantRoutes = [ component: () => import('@/views/login'), hidden: true }, + { + path: '/sociallogin', + component: () => import('@/views/socialLogin'), + hidden: true + }, { path: '/register', component: () => import('@/views/register'), diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 442d598..27bdcf4 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,7 +1,8 @@ -import { login, logout, getInfo } from '@/api/system/login' +import { login, logout, getInfo, oauthCallback } from '@/api/system/login' import { getToken, setToken, removeToken } from '@/utils/auth' import defAva from '@/assets/images/profile.jpg' - +import Cookies from 'js-cookie' +import { encrypt } from '@/utils/jsencrypt' const useUserStore = defineStore('user', { state: () => ({ userInfo: '', @@ -10,9 +11,13 @@ const useUserStore = defineStore('user', { avatar: '', roles: [], permissions: [], - userId: 0 + userId: 0, + authSource: '' }), actions: { + setAuthSource(source) { + this.authSource = source + }, // 登录 login(userInfo) { const username = userInfo.username.trim() @@ -33,7 +38,33 @@ const useUserStore = defineStore('user', { reject(error) }) }) - }, // 获取用户信息 + }, + /** + * 三方授权登录 + * @param {*} data + * @returns + */ + oauthLogin(data) { + return new Promise((resolve, reject) => { + oauthCallback(data, { authSource: this.authSource }).then(res => { + const { code, data } = res + if (code == 200) { + setToken(data.token) + this.token = data.token + Cookies.set('username', data.userName, { expires: 30 }) + Cookies.set('password', encrypt(data.password), { expires: 30 }) + Cookies.set('rememberMe', true, { expires: 30 }) + resolve(res) //then处理 + } else { + console.log('login error ', res) + reject(res) //catch处理 + } + }).catch(error => { + reject(error) + }) + }) + }, + // 获取用户信息 getInfo() { return new Promise((resolve, reject) => { getInfo().then(res => { @@ -49,8 +80,8 @@ const useUserStore = defineStore('user', { this.name = data.user.nickName this.avatar = avatar - this.userInfo = data.user //新加 - this.userId = data.user.userId//新加 + this.userInfo = data.user //新加 + this.userId = data.user.userId //新加 resolve(res) }).catch(error => { console.error(error); diff --git a/src/views/login.vue b/src/views/login.vue index e3ebfa2..ee8c656 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -41,17 +41,23 @@ - + +
{{ $t('login.rememberMe') }} - + 立即注册 +
+ {{ $t('login.btnLogin') }} 登 录 中... -
- 还没有账号?立即注册 -
+
+ + + + + @@ -108,9 +114,7 @@ function handleLogin() { // 勾选了需要记住密码设置在cookie中设置记住用户明和名命 if (loginForm.value.rememberMe) { Cookies.set('username', loginForm.value.username, { expires: 30 }) - Cookies.set('password', encrypt(loginForm.value.password), { - expires: 30, - }) + Cookies.set('password', encrypt(loginForm.value.password), { expires: 30 }) Cookies.set('rememberMe', loginForm.value.rememberMe, { expires: 30 }) } else { // 否则移除 @@ -155,82 +159,23 @@ function getCookie() { rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), } } +function onAuth(type) { + userStore.setAuthSource(type) + + switch (type) { + default: + window.location.href = import.meta.env.VITE_APP_BASE_API + '/auth/Authorization?authSource=' + type + break + } +} getCode() getCookie() diff --git a/src/views/socialLogin.vue b/src/views/socialLogin.vue new file mode 100644 index 0000000..bc49002 --- /dev/null +++ b/src/views/socialLogin.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/views/system/oauth/thirdAccount.vue b/src/views/system/oauth/thirdAccount.vue new file mode 100644 index 0000000..8f35840 --- /dev/null +++ b/src/views/system/oauth/thirdAccount.vue @@ -0,0 +1,358 @@ + + + +