提交 b34e883f 编写于 作者: KK's avatar KK

钉钉认证

上级 a69be6a9
<template> <template>
<ion-page :className="{ 'app-login': true }"> <ion-page :className="{ 'app-login': true }">
<ion-content fullscreen> <ion-content fullscreen v-if="!platform">
<div class="app-login-contant"> <div class="app-login-contant">
<img src="assets/images/logo.png" class="ibizLogo"/> <img src="assets/images/logo.png" class="ibizLogo"/>
<form class="app-login-form"> <form class="app-login-form">
...@@ -30,7 +30,8 @@ ...@@ -30,7 +30,8 @@
import { Vue, Component } from "vue-property-decorator"; import { Vue, Component } from "vue-property-decorator";
import { Loading } from '@/ibiz-core/utils'; import { Loading } from '@/ibiz-core/utils';
import { Environment } from '@/environments/environment'; import { Environment } from '@/environments/environment';
import { ThirdPartyService } from '@ibiz-core'
import { DingTalkService } from '../../ibiz-core/third-party-service/DingTalkService';
@Component({ @Component({
components: {}, components: {},
i18n: { i18n: {
...@@ -53,6 +54,18 @@ import { Environment } from '@/environments/environment'; ...@@ -53,6 +54,18 @@ import { Environment } from '@/environments/environment';
} }
}) })
export default class Login extends Vue { export default class Login extends Vue {
/**
* 第三方服务
*
* @type {string}
* @memberof Login
*/
public thirdPartyService:ThirdPartyService = ThirdPartyService.getInstance();
public platform:any = "";
/** /**
* 用户名 * 用户名
* *
...@@ -61,6 +74,36 @@ export default class Login extends Vue { ...@@ -61,6 +74,36 @@ export default class Login extends Vue {
*/ */
public username: string = ""; public username: string = "";
/**
* 生命周期
*
* @memberof Login
*/
public created(){
this.platform = this.thirdPartyService.platform;
if(this.platform){
this.thirdLogin();
}
}
/**
* 第三方登录
*
* @type {string}
* @memberof Login
*/
public async thirdLogin(){
let loginStatus :any = await this.thirdPartyService.login();
if(!loginStatus.issuccess){
this.$notice.error(loginStatus.message?loginStatus.message:"钉钉认证失败,请联系管理员");
}else{
const url: any = this.$route.query.redirect? this.$route.query.redirect: "*";
this.$router.replace({ path: url });
this.$router.go(-1)
}
}
/** /**
* 密码 * 密码
* *
......
...@@ -31,7 +31,7 @@ export class DingTalkService { ...@@ -31,7 +31,7 @@ export class DingTalkService {
* @type {string} * @type {string}
* @memberof WeChatService * @memberof WeChatService
*/ */
private readonly appId: string = "dingf89eefecd565b89cbc961a6cb783455b"; private readonly appId: string = "ding0466097cd833d9f9a1320dcb25e91351";
/** /**
* 钉钉sdk * 钉钉sdk
* *
...@@ -84,15 +84,28 @@ export class DingTalkService { ...@@ -84,15 +84,28 @@ export class DingTalkService {
public async login(): Promise<any> { public async login(): Promise<any> {
const data = await this.getUserInfo(); const data = await this.getUserInfo();
if (!data || !data.value || Object.is(data.value, '')) { if (!data || !data.value || Object.is(data.value, '')) {
// 获取临时登录授权码 const access_token :any= await this.get(`/uaa/open/dingtalk/access_token`);
const res: { code: string } = await dd.runtime.permission.requestAuthCode({ corpId: this.appId }); if(access_token.status == 200 && access_token.data && access_token.data.regionid){
if (res && res.code) { const res: any= await dd.runtime.permission.requestAuthCode({ corpId: access_token.data.regionid });
const userInfo = await this.get(`./dingtalk/login?code=${res.code}`); if (res && res.code) {
dd.util.domainStorage.setItem({ name: this.infoName, value: userInfo }); const userInfo:any = await this.get(`/uaa/open/dingtalk/auth/${res.code}`);
data.value = userInfo; if(userInfo.status == 200 && userInfo.data.token && userInfo.data.user){
localStorage.setItem("token", userInfo.data.token);
localStorage.setItem("user", JSON.stringify(userInfo.data.user));
dd.util.domainStorage.setItem({ name: this.infoName, value: userInfo.data });
return {issuccess:true,message:""};
}else if(userInfo.status == 400){
return {issuccess:false,message:userInfo.data.message};
}else{
return {issuccess:false,message:userInfo.data.message};
}
}else{
return {issuccess:false,message:"钉钉用户信息获取失败"};
}
}else{
return {issuccess:false,message:"获取企业id失败"};
} }
} }
return data.value;
} }
/** /**
...@@ -125,8 +138,9 @@ export class DingTalkService { ...@@ -125,8 +138,9 @@ export class DingTalkService {
private async get(url: string): Promise<any> { private async get(url: string): Promise<any> {
return new Promise((resolve) => { return new Promise((resolve) => {
axios.get(url).then((response: any) => { axios.get(url).then((response: any) => {
resolve(response.data); resolve(response);
}).catch((error: any) => { }).catch((error: any) => {
resolve(error);
console.log('请求异常'); console.log('请求异常');
}); });
}) })
......
...@@ -24,7 +24,7 @@ export class ThirdPartyService { ...@@ -24,7 +24,7 @@ export class ThirdPartyService {
* @type {('WeChat' | 'DingTalk' | null)} * @type {('WeChat' | 'DingTalk' | null)}
* @memberof ThirdPartyService * @memberof ThirdPartyService
*/ */
protected platform: 'WeChat' | 'DingTalk' | null = null; public platform: 'WeChat' | 'DingTalk' | null = null;
/** /**
* 钉钉服务 * 钉钉服务
* *
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册