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