37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
import Vue from "vue";
|
|
import MFACOMP from "./index.vue";
|
|
|
|
const MFAConstructor = Vue.extend(MFACOMP);
|
|
let MFAINSTANCELIST = [];
|
|
const MFA = options => {
|
|
const { UserId, username, EMail, callBack, cancelBack, status = 'login' } = options;
|
|
if (!UserId) throw `UserId is requred.but ${UserId}`
|
|
const id = `MFA${new Date().getTime()}`;
|
|
const instance = new MFAConstructor();
|
|
MFAINSTANCELIST.push(instance)
|
|
instance.id = id;
|
|
instance.vm = instance.$mount();
|
|
if (instance.vm.visible) return;
|
|
document.body.appendChild(instance.vm.$el);
|
|
instance.vm.open({ UserId, username, EMail, status });
|
|
instance.vm.$on("success", (Id) => {
|
|
if (callBack) callBack(Id)
|
|
});
|
|
instance.vm.$on("closed", () => {
|
|
if (cancelBack) cancelBack();
|
|
document.body.removeChild(instance.vm.$el);
|
|
instance.vm.$destroy();
|
|
let index = MFAINSTANCELIST.findIndex(item => item.id === id);
|
|
MFAINSTANCELIST.splice(index, 1)
|
|
});
|
|
return instance.vm;
|
|
}
|
|
MFA.close = () => {
|
|
if (MFAINSTANCELIST.length <= 0) return;
|
|
MFAINSTANCELIST.forEach(item => {
|
|
document.body.removeChild(item.vm.$el);
|
|
item.vm.$destroy();
|
|
})
|
|
MFAINSTANCELIST = [];
|
|
}
|
|
export default MFA; |