Commit f2d75008220f5130022a6b071cbc1ea0b21f7f90
1 parent
3d1afe52
feat: add social auth
Showing
2 changed files
with
22 additions
and
0 deletions
yudao-ui-admin-vue3/src/api/login/index.ts
| @@ -62,3 +62,10 @@ export const sendSmsCodeApi = (data: SmsCodeVO) => { | @@ -62,3 +62,10 @@ export const sendSmsCodeApi = (data: SmsCodeVO) => { | ||
| 62 | export const smsLoginApi = (data: SmsLoginVO) => { | 62 | export const smsLoginApi = (data: SmsLoginVO) => { |
| 63 | return request.post({ url: '/system/auth/sms-login', data }) | 63 | return request.post({ url: '/system/auth/sms-login', data }) |
| 64 | } | 64 | } |
| 65 | + | ||
| 66 | +// 社交授权的跳转 | ||
| 67 | +export const socialAuthRedirectApi = (type: string, redirectUri: string) => { | ||
| 68 | + return request.get({ | ||
| 69 | + url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri | ||
| 70 | + }) | ||
| 71 | +} |
yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
| @@ -131,6 +131,17 @@ const getRoutes = async () => { | @@ -131,6 +131,17 @@ const getRoutes = async () => { | ||
| 131 | permissionStore.setIsAddRouters(true) | 131 | permissionStore.setIsAddRouters(true) |
| 132 | push({ path: redirect.value || permissionStore.addRouters[0].path }) | 132 | push({ path: redirect.value || permissionStore.addRouters[0].path }) |
| 133 | } | 133 | } |
| 134 | + | ||
| 135 | +// 社交登录 | ||
| 136 | +const doSocialLogin = async (type: string) => { | ||
| 137 | + loginLoading.value = true | ||
| 138 | + // 计算 redirectUri | ||
| 139 | + const redirectUri = | ||
| 140 | + location.origin + '/social-login?type=' + type + '&redirect=' + (redirect.value || '/') | ||
| 141 | + // 进行跳转 | ||
| 142 | + const res = await LoginApi.socialAuthRedirectApi(type, encodeURIComponent(redirectUri)) | ||
| 143 | + window.open = res | ||
| 144 | +} | ||
| 134 | watch( | 145 | watch( |
| 135 | () => currentRoute.value, | 146 | () => currentRoute.value, |
| 136 | (route: RouteLocationNormalizedLoaded) => { | 147 | (route: RouteLocationNormalizedLoaded) => { |
| @@ -267,24 +278,28 @@ onMounted(async () => { | @@ -267,24 +278,28 @@ onMounted(async () => { | ||
| 267 | :size="iconSize" | 278 | :size="iconSize" |
| 268 | class="cursor-pointer anticon" | 279 | class="cursor-pointer anticon" |
| 269 | :color="iconColor" | 280 | :color="iconColor" |
| 281 | + @click="doSocialLogin('github')" | ||
| 270 | /> | 282 | /> |
| 271 | <Icon | 283 | <Icon |
| 272 | icon="ant-design:wechat-filled" | 284 | icon="ant-design:wechat-filled" |
| 273 | :size="iconSize" | 285 | :size="iconSize" |
| 274 | class="cursor-pointer anticon" | 286 | class="cursor-pointer anticon" |
| 275 | :color="iconColor" | 287 | :color="iconColor" |
| 288 | + @click="doSocialLogin('wechat')" | ||
| 276 | /> | 289 | /> |
| 277 | <Icon | 290 | <Icon |
| 278 | icon="ant-design:alipay-circle-filled" | 291 | icon="ant-design:alipay-circle-filled" |
| 279 | :size="iconSize" | 292 | :size="iconSize" |
| 280 | :color="iconColor" | 293 | :color="iconColor" |
| 281 | class="cursor-pointer anticon" | 294 | class="cursor-pointer anticon" |
| 295 | + @click="doSocialLogin('alipay')" | ||
| 282 | /> | 296 | /> |
| 283 | <Icon | 297 | <Icon |
| 284 | icon="ant-design:dingtalk-circle-filled" | 298 | icon="ant-design:dingtalk-circle-filled" |
| 285 | :size="iconSize" | 299 | :size="iconSize" |
| 286 | :color="iconColor" | 300 | :color="iconColor" |
| 287 | class="cursor-pointer anticon" | 301 | class="cursor-pointer anticon" |
| 302 | + @click="doSocialLogin('dingtalk')" | ||
| 288 | /> | 303 | /> |
| 289 | </div> | 304 | </div> |
| 290 | </el-form-item> | 305 | </el-form-item> |