Commit f2d75008220f5130022a6b071cbc1ea0b21f7f90

Authored by xingyu
1 parent 3d1afe52

feat: add social auth

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>
... ...