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 | 62 | export const smsLoginApi = (data: SmsLoginVO) => { |
| 63 | 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 | 131 | permissionStore.setIsAddRouters(true) |
| 132 | 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 | 145 | watch( |
| 135 | 146 | () => currentRoute.value, |
| 136 | 147 | (route: RouteLocationNormalizedLoaded) => { |
| ... | ... | @@ -267,24 +278,28 @@ onMounted(async () => { |
| 267 | 278 | :size="iconSize" |
| 268 | 279 | class="cursor-pointer anticon" |
| 269 | 280 | :color="iconColor" |
| 281 | + @click="doSocialLogin('github')" | |
| 270 | 282 | /> |
| 271 | 283 | <Icon |
| 272 | 284 | icon="ant-design:wechat-filled" |
| 273 | 285 | :size="iconSize" |
| 274 | 286 | class="cursor-pointer anticon" |
| 275 | 287 | :color="iconColor" |
| 288 | + @click="doSocialLogin('wechat')" | |
| 276 | 289 | /> |
| 277 | 290 | <Icon |
| 278 | 291 | icon="ant-design:alipay-circle-filled" |
| 279 | 292 | :size="iconSize" |
| 280 | 293 | :color="iconColor" |
| 281 | 294 | class="cursor-pointer anticon" |
| 295 | + @click="doSocialLogin('alipay')" | |
| 282 | 296 | /> |
| 283 | 297 | <Icon |
| 284 | 298 | icon="ant-design:dingtalk-circle-filled" |
| 285 | 299 | :size="iconSize" |
| 286 | 300 | :color="iconColor" |
| 287 | 301 | class="cursor-pointer anticon" |
| 302 | + @click="doSocialLogin('dingtalk')" | |
| 288 | 303 | /> |
| 289 | 304 | </div> |
| 290 | 305 | </el-form-item> | ... | ... |