@impui/imp 1.0.17-beta.1 → 1.0.17-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/login/index.es.js +1 -1
- package/package.json +1 -1
package/dist/login/index.es.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../axios/index.es.js";import{extend as e}from"../packages/com/dist/core/index.es/index.es.js";import{getLog as i}from"../packages/com/dist/log/index.es/index.es.js";import{isBoolean as t}from"../packages/com/dist/typetool/index.es/index.es.js";import"../packages/com/dist/browser/index.es/index.es.js";import"../packages/com/dist/str/index.es/index.es.js";import{cache as s}from"../packages/com/dist/cache/index.es/index.es.js";import"../packages/com/dist/req/index.es/index.es.js";import{urltool as o}from"../packages/com/dist/url/index.es/index.es.js";import{message as n}from"../packages/com/dist/message/index.es/index.es.js";import{event as r}from"@impui/com/event";import{handleUrl as a}from"../core/index.es.js";import{getConfig as h,getEvnConfig as l}from"../config/index.es.js";import{iframeReq as c,get as g}from"@impui/com/req";import m from"../node_modules/axios/lib/axios/index.es.js";import"../node_modules/axios/index/index.es.js";const d=await h(),u=await i();class f{constructor(){this.loginDomain=window.loginDomain="localhost"===location.hostname&&l().isLocalhost?"https://localhost:44360":d.domainLogin,this.ver="v1.0.0",this.loginTime=21600,this.prefix="IMP_PLUG_LOGIN_",this.initUrls(),this.initKeys(),this.initEventKeys(),this.bindEvents(),this.iframeBox=null,this.iframe=null,this.iframeBg=null,this.autoLogin={},this.exitLogin={},this.threeLoginWin=null,this.checkTemp(),window.login=this}initUrls(){this.urls={login:a(this.loginDomain+"/index.html",!0),reg:a(this.loginDomain+"/index.html?type=reg",!0),loginPage:a(this.loginDomain+"/loginPage.html",!0),regPage:a(this.loginDomain+"/regPage.html",!0),autoLogin:a(this.loginDomain+"/"+this.ver+"/user/autoLogin"),checkSSOLogin:a(this.loginDomain+"/"+this.ver+"/user/checkSSOLogin"),checkLoginPage:a(this.loginDomain+"/"+this.ver+"/user/checkLoginPage"),CheckLoginByCode:a(this.loginDomain+"/"+this.ver+"/user/CheckLoginByCode"),exitLogin:this.loginDomain+"/"+this.ver+"/user/exitLogin",userInfo:this.loginDomain+"/"+this.ver+"/user/UserInfo",writeCookies:"/ashx/member/CheckSSOWriteCookie.ashx",webLoginOut:"/ajax/logout.aspx"}}initKeys(){const e=e=>this.prefix+e;this.keys={msg_loginReturn:e("loginReturn"),msg_close:e("close"),msg_goto:e("goto"),msg_autoSize:e("autoSize"),msg_getSize:e("getSize"),cache_loginSave:e("loginSave"),cache_userInfo:e("userInfo"),checkLogin_code:"code",loginStatus:"__login_status",loginResult:"__login_result",url_tempSignKey:"sign",url_tempUseridxKey:"useridx"}}initEventKeys(){const e=e=>this.prefix+e;this.eventKeys={nologin:e("login"),closeThreeLogin:e("close_login_three")}}bindEvents(){n.on(this.keys.msg_close,()=>{u.debug("关闭登录框"),this.close()}),n.on(this.keys.msg_goto,e=>{this.handlePageTransition(e)}),n.on(this.keys.msg_autoSize,e=>{this.handleAutoSize(e)}),n.on(this.keys.msg_loginReturn,async e=>{await this.dealwithLoginRes(e)}),n.on(this.eventKeys.closeThreeLogin,e=>{this.save(e),this.closeThreeLoginWin()}),r.onM("login","getLogin",this.getLogin.bind(this)),r.onM("login","noLogin",this.runNoLogin.bind(this))}handlePageTransition(e){if(!this.iframe)return;this.iframe.classList.remove("IMP_PLUG_LOGIN_animateIn"),this.iframe.classList.add("IMP_PLUG_LOGIN_animateOut");const i=()=>{this.iframe.src=e.url,this.iframe.classList.remove("IMP_PLUG_LOGIN_animateOut"),this.iframe.removeEventListener("transitionend",i)};this.iframe.addEventListener("transitionend",i)}handleAutoSize(e){this.iframe&&(u.debug("登录框尺寸适配",e),this.iframe.width=e.width,this.iframe.height=e.height,this.iframe.classList.add("IMP_PLUG_LOGIN_animateIn"),this.iframeBg.classList.add("IMP_PLUG_LOGIN_animateIn"))}runAutoLoginCallback(e,i){this.autoLogin.callbacks&&0!==this.autoLogin.callbacks.length&&(this.autoLogin.callbacks.forEach(i=>{if(t(e))i.ok&&i.ok(e);else{const t=this.getLogin(e);i.ok&&i.ok(t&&t.code===m.codeEnum.success)}}),this.autoLogin.iframe&&this.autoLogin.iframe.remove(),this.autoLogin.window&&this.autoLogin.window.close(),this.autoLogin={},e&&this.close())}async dealwithLoginRes(e){if(u.debug("登录消息返回",e),e.isok=e.code===m.codeEnum.success,1!==e.code)return this.clear(),void this.runAutoLoginCallback(e);if(e.sign&&8===e.sign.length)this.save(e);else{o.delParsUpUrl([this.keys.url_tempSignKey,this.keys.url_tempUseridxKey]),s.set(this.keys.cache_loginSave,e,this.loginTime),m.saveLogin(e.useridx,e.sign);try{d.domainmaster.startsWith(location.origin)&&await m.get(this.urls.writeCookies,null,null,"text")}finally{this.runAutoLoginCallback(e)}}}save(e){const i=e.__source?.headers?.[e.sign]||e.data?.headers?.[e.sign]||e.sign,t=e.useridx||e.data?.___useridx;n.send(this.keys.msg_loginReturn,{code:e.code,msg:e.msg,sign:i,useridx:t})}clear(){s.remove(this.keys.cache_loginSave),s.remove(this.keys.cache_userInfo),s.remove(this.keys.cache_userInfo+"_more"),s.remove(this.keys.cache_userInfo+"_simplify")}onLoginOK(e,i){this.autoLogin.callbacks||(this.autoLogin.callbacks=[]),this.autoLogin.callbacks.push({ok:e,no:i})}create(i){const t=e(!0,{url:"",name:"",option:null},i);this.createIframeBox(),this.createIframe(t),this.applyStyles(t.option||{}),this.appendToDocument()}createIframeBox(){this.iframeBox=document.createElement("div"),this.iframeBox.className="IMP_PLUG_LOGIN_box";const e=parseFloat(window.getComputedStyle(document.documentElement).zoom);e<1&&(this.iframeBox.style.zoom=(1/e).toFixed(2)),this.iframe=document.createElement("iframe"),this.iframeBg=document.createElement("div")}createIframe(e){this.iframe.id=this.iframe.name=e.name,this.iframe.src=e.url;const i=e.option||{};this.iframe.width=i.width||400,this.iframe.height=i.height||400,this.iframe.scrolling=i.scrolling||"no",this.iframe.marginWidth=i.marginWidth||"0",this.iframe.marginHeight=i.marginHeight||"0",this.iframe.frameBorder=i.frameBorder||"0"}applyStyles(e){Object.assign(this.iframe.style,{zIndex:3e3,position:"fixed",borderRadius:e.radius||"none",opacity:0}),Object.assign(this.iframeBg.style,{position:"fixed",backgroundColor:"#6f6f6f80",width:"100%",height:"100%",top:0,left:0,opacity:0}),this.applyPosition(e.offset||"center"),this.applyAnimation(e)}applyPosition(e){const i={center:{top:"50%",left:"50%",transform:"translate(-50%, -50%)"},top:{top:"5%",left:"50%",transform:"translateX(-50%)"},bottom:{bottom:"5%",left:"50%",transform:"translateX(-50%)"},lt:{top:"5%",left:"5%"},lb:{bottom:"5%",left:"5%"},rt:{top:"5%",right:"5%"},rb:{bottom:"5%",right:"5%"}},t=i[e]||i.center;Object.assign(this.iframe.style,t)}applyAnimation(e){const i=e.animTime||300;this.iframe.style.transition=`opacity ${i}ms`,this.iframeBg.style.transition=`opacity ${i}ms`,this.createAnimationStyles(e.anime||0)}createAnimationStyles(e){const i={0:".IMP_PLUG_LOGIN_animateIn{opacity:1 !important;} .IMP_PLUG_LOGIN_animateOut{opacity:0 !important;}"},t=i[e]||i[0],s=document.createElement("style");s.id="IMP_PLUG_LOGIN_animateCss";try{s.appendChild(document.createTextNode(t))}catch(o){s.styleSheet.cssText=t}document.head.appendChild(s)}appendToDocument(){this.iframeBox.append(this.iframe),this.iframeBox.append(this.iframeBg),document.body.append(this.iframeBox)}istop(){return parent===window}close(){if(!this.istop())return;const e=()=>{this.iframeBox&&(this.iframeBox.remove(),this.iframeBox=null),this.autoLogin.iframe&&this.autoLogin.iframe.remove();const e=document.getElementById("IMP_PLUG_LOGIN_animateCss");e&&e.remove()};this.iframeBg&&(this.iframeBg.classList.remove("IMP_PLUG_LOGIN_animateIn"),this.iframeBg.classList.add("IMP_PLUG_LOGIN_animateOut")),this.iframe?(this.iframe.classList.remove("IMP_PLUG_LOGIN_animateIn"),this.iframe.classList.add("IMP_PLUG_LOGIN_animateOut"),this.iframe.addEventListener("transitionend",e,{once:!0})):e()}autoSize(e,i){n.send(this.keys.msg_autoSize,{width:e||document.body.scrollWidth,height:i||document.body.scrollHeight})}open(e=!1){if(this.iframeBox)return Promise.resolve();const i=new Promise((e,i)=>{this.onLoginOK(e,i),this.istop()?this.create({url:this.urls.login,name:"signIn",option:{radius:"4px"}}):n.send(this.keys.msg_goto,{url:this.urls.login})});return e?i:i.then(()=>location.reload())}openPage(){const e=o.getPar("sourceurl")||location.href,i=o.addPar("sourceurl",unescape(e),this.urls.loginPage);location.href=i}openReg(e=!1){if(this.iframeBox)return Promise.resolve();const i=new Promise((e,i)=>{this.onLoginOK(e,i),this.istop()?this.create({url:this.urls.reg,name:"signIn",option:{radius:"4px"}}):n.send(this.keys.msg_goto,{url:this.urls.reg})});return e?i:i.then(()=>location.reload())}openRegPage(){const e=o.getPar("sourceurl")||location.href,i=o.addPar("sourceurl",unescape(e),this.urls.regPage);location.href=i}threeLogin(e,i){return new Promise((t,s)=>{this.closeThreeLoginWin(),this.onLoginOK(t,s);const o=a(`/v1.0.0/user/OpenThreeLogin?type=${e}`,i);this.threeLoginWin=window.open(o)})}closeThreeLoginWin(){this.threeLoginWin&&(this.threeLoginWin.close(),this.threeLoginWin=null)}getWechatCode(){const e=o.getPar("__login_code");if(!e){const e=`${this.loginDomain}/v1.0.0/user/OpenThreeLogin?type=wechatcode&redirect_uri=${encodeURIComponent(location.href)}`;location.href=e}return e}getLogin(e,i=!1){const t=e||s.get(this.keys.cache_loginSave);return t?(i||delete t.sign,t):null}getUser(e,i=!1,t=!1){"function"!=typeof e&&(t=i,i=e,e=null);const o=new Promise((e,o)=>{const n=this.keys.cache_userInfo+"_"+(i?"more":"simplify");if(!t){const i=s.get(n);if(i)return void e(i)}m.get(this.urls.userInfo,{more:i?1:0}).then(i=>{1===i.code?(s.set(n,i.data,this.loginTime),e(i.data)):o(i)})});return e?o.then(e):o}islogin(){return!!this.getLogin()}async check(){return!(this.isTempCheck||!this.islogin())||this.checkZ()}checkZ(){return new Promise((e,i)=>{if(!this.autoLogin.iframe&&!this.autoLogin.window){let e=this.urls.autoLogin;e=o.addPars({sign:o.getPar(this.keys.url_tempSignKey),useridx:o.getPar(this.keys.url_tempUseridxKey)},e),this.autoLogin.iframe=this.getIframeUrl(e,this.keys.msg_loginReturn),this.autoLogin.callbacks=[]}this.autoLogin.callbacks.push({ok:e,no:()=>{e(!1)}})})}async checkTemp(){if(this.isTempCheck=o.getPar(this.keys.url_tempSignKey)&&o.getPar(this.keys.url_tempUseridxKey),this.isTempCheck)return this.checkZ()}checkPage(){return new Promise((e,i)=>{const t=o.getPar(this.keys.checkLogin_code),s=parseInt(o.getPar(this.keys.loginStatus)||-1);u.debug("checkLogin_code:",t),0===s?(o.delParsUpUrl([this.keys.loginStatus]),i("用户未登录!")):s&&t?m.get(this.urls.CheckLoginByCode,{code:t}).then(t=>{1===t.code?(o.delParsUpUrl([this.keys.checkLogin_code,this.keys.loginStatus]),this.save(t.data),e(t)):i()}):m.get(this.urls.checkSSOLogin).then(i=>{if(1===i.code)this.getUser().then(e);else{let e=o.addPars({redirect_uri:encodeURIComponent(location.href)},this.urls.checkLoginPage);location.href=e}})})}res(e){const i=decodeURIComponent(o.getPar(this.keys.loginResult)||"");if(i){const t=JSON.parse(i);e?.(t),o.delParsUpUrl([this.keys.loginResult])}}exit(e=!1){return u.debug("退出登录!"),this.exitLogin.Promise||(this.exitLogin.Promise=new Promise(e=>{c.get(this.urls.exitLogin).then(i=>{g(this.urls.webLoginOut,null,()=>{e(i)},"text"),this.clear(),this.exitLogin={}})}),e||(this.exitLogin.Promise=this.exitLogin.Promise.then(()=>{location.reload()}))),this.exitLogin.Promise}getIframeUrl(e,i){const t=document.createElement("iframe");Object.assign(t.style,{position:"absolute",width:"1px",height:"1px",top:"-100px"}),t.dataset.flag=9513,i&&(e=o.addPar("post_msg_name",i,e)),t.src=e;let s,n=!1;const r=()=>{t.removeEventListener("error",a),clearTimeout(s)},a=e=>{n||(n=!0,r(),t.remove(),this.runAutoLoginCallback(!1))};return t.addEventListener("load",e=>{n||(n=!0,r(),console.log("登录页面已打开"))},{once:!0}),t.addEventListener("error",a,{once:!0}),s=setTimeout(()=>{a()},1e4),document.body.append(t),t}onNoLogin(e){r?r.on(this.eventKeys.nologin,e):console.warn("事件模块event未加载,事件相关功能不可用!")}runNoLogin(e){return r?Promise.resolve(r.run(this.eventKeys.nologin,e)):(console.warn("事件模块event未加载,事件相关功能不可用!"),Promise.resolve())}writeXhr(e){if(!e)return console.warn("xhr不能为空!"),e;const i=this.getLogin(null,!0);return i&&(e.withCredentials=!0,e.setRequestHeader("imp_sign",i.sign),e.setRequestHeader("imp_useridx",i.useridx)),e}writeUrl(e){if(!e)return console.warn("url不能为空!"),e;const i=this.getLogin(null,!0);return i&&(e=o.addPar("_useridx",i.useridx,e),e=o.addPar("sign",i.sign,e)),xhr}debug(...e){console&&console.debug&&console.debug(...e)}}const p=new f;export{f as Login,p as default,p as login};
|
|
1
|
+
import"../axios/index.es.js";import{extend as e}from"../packages/com/dist/core/index.es/index.es.js";import{getLog as i}from"../packages/com/dist/log/index.es/index.es.js";import{isBoolean as t}from"../packages/com/dist/typetool/index.es/index.es.js";import"../packages/com/dist/browser/index.es/index.es.js";import"../packages/com/dist/str/index.es/index.es.js";import{cache as s}from"../packages/com/dist/cache/index.es/index.es.js";import"../packages/com/dist/req/index.es/index.es.js";import{urltool as o}from"../packages/com/dist/url/index.es/index.es.js";import{message as n}from"../packages/com/dist/message/index.es/index.es.js";import{event as r}from"@impui/com/event";import{handleUrl as a}from"../core/index.es.js";import{getConfig as h,getEvnConfig as l}from"../config/index.es.js";import{iframeReq as c,get as g}from"@impui/com/req";import m from"../node_modules/axios/lib/axios/index.es.js";import"../node_modules/axios/index/index.es.js";const d=await h(),u=await i();class f{constructor(){this.loginDomain=window.loginDomain="localhost"===location.hostname&&l().isLocalhost?"https://localhost:44360":d.domainLogin,this.ver="v1.0.0",this.loginTime=21600,this.prefix="IMP_PLUG_LOGIN_",this.initUrls(),this.initKeys(),this.initEventKeys(),this.bindEvents(),this.iframeBox=null,this.iframe=null,this.iframeBg=null,this.autoLogin={},this.exitLogin={},this.threeLoginWin=null,this.checkTemp(),window.login=this}initUrls(){this.urls={login:a(this.loginDomain+"/index.html",!0),reg:a(this.loginDomain+"/index.html?type=reg",!0),loginPage:a(this.loginDomain+"/loginPage.html",!0),regPage:a(this.loginDomain+"/regPage.html",!0),autoLogin:a(this.loginDomain+"/"+this.ver+"/user/autoLogin"),checkSSOLogin:a(this.loginDomain+"/"+this.ver+"/user/checkSSOLogin"),checkLoginPage:a(this.loginDomain+"/"+this.ver+"/user/checkLoginPage"),CheckLoginByCode:a(this.loginDomain+"/"+this.ver+"/user/CheckLoginByCode"),exitLogin:this.loginDomain+"/"+this.ver+"/user/exitLogin",userInfo:this.loginDomain+"/"+this.ver+"/user/UserInfo",writeCookies:"/ashx/member/CheckSSOWriteCookie.ashx",webLoginOut:"/ajax/logout.aspx"}}initKeys(){const e=e=>this.prefix+e;this.keys={msg_loginReturn:e("loginReturn"),msg_close:e("close"),msg_goto:e("goto"),msg_autoSize:e("autoSize"),msg_getSize:e("getSize"),cache_loginSave:e("loginSave"),cache_userInfo:e("userInfo"),checkLogin_code:"code",loginStatus:"__login_status",loginResult:"__login_result",url_tempSignKey:"sign",url_tempUseridxKey:"useridx"}}initEventKeys(){const e=e=>this.prefix+e;this.eventKeys={nologin:e("login"),closeThreeLogin:e("close_login_three")}}bindEvents(){n.on(this.keys.msg_close,()=>{u.debug("关闭登录框"),this.close()}),n.on(this.keys.msg_goto,e=>{this.handlePageTransition(e)}),n.on(this.keys.msg_autoSize,e=>{this.handleAutoSize(e)}),n.on(this.keys.msg_loginReturn,async e=>{await this.dealwithLoginRes(e)}),n.on(this.eventKeys.closeThreeLogin,e=>{this.save(e),this.closeThreeLoginWin()}),r.onM("login","getLogin",this.getLogin.bind(this)),r.onM("login","noLogin",this.runNoLogin.bind(this))}handlePageTransition(e){if(!this.iframe)return;this.iframe.classList.remove("IMP_PLUG_LOGIN_animateIn"),this.iframe.classList.add("IMP_PLUG_LOGIN_animateOut");const i=()=>{this.iframe.src=e.url,this.iframe.classList.remove("IMP_PLUG_LOGIN_animateOut"),this.iframe.removeEventListener("transitionend",i)};this.iframe.addEventListener("transitionend",i)}handleAutoSize(e){this.iframe&&(u.debug("登录框尺寸适配",e),this.iframe.width=e.width,this.iframe.height=e.height,this.iframe.classList.add("IMP_PLUG_LOGIN_animateIn"),this.iframeBg.classList.add("IMP_PLUG_LOGIN_animateIn"))}runAutoLoginCallback(e,i){this.autoLogin.callbacks&&0!==this.autoLogin.callbacks.length&&(this.autoLogin.callbacks.forEach(i=>{if(t(e))i.ok&&i.ok(e);else{const t=this.getLogin(e);i.ok&&i.ok(t&&t.code===m.codeEnum.success)}}),this.autoLogin.iframe&&this.autoLogin.iframe.remove(),this.autoLogin.window&&this.autoLogin.window.close(),this.autoLogin={},e&&this.close())}async dealwithLoginRes(e){if(u.debug("登录消息返回",e),e.isok=e.code===m.codeEnum.success,1!==e.code)return this.clear(),void this.runAutoLoginCallback(e);if(e.sign&&8===e.sign.length)this.save(e);else{o.delParsUpUrl([this.keys.url_tempSignKey,this.keys.url_tempUseridxKey]),s.set(this.keys.cache_loginSave,e,this.loginTime),m.saveLogin(e.useridx,e.sign);try{d.domainmaster.startsWith(location.origin)&&await m.get(this.urls.writeCookies,null,null,"text")}finally{this.runAutoLoginCallback(e)}}}save(e){const i=e.__source?.headers?.[e.sign]||e.data?.headers?.[e.sign]||e.sign,t=e.useridx||e.data?.___useridx;n.send(this.keys.msg_loginReturn,{code:e.code,msg:e.msg,sign:i,useridx:t})}clear(){s.remove(this.keys.cache_loginSave),s.remove(this.keys.cache_userInfo),s.remove(this.keys.cache_userInfo+"_more"),s.remove(this.keys.cache_userInfo+"_simplify")}onLoginOK(e,i){this.autoLogin.callbacks||(this.autoLogin.callbacks=[]),this.autoLogin.callbacks.push({ok:e,no:i})}create(i){const t=e(!0,{url:"",name:"",option:null},i);this.createIframeBox(),this.createIframe(t),this.applyStyles(t.option||{}),this.appendToDocument()}createIframeBox(){this.iframeBox=document.createElement("div"),this.iframeBox.className="IMP_PLUG_LOGIN_box";const e=parseFloat(window.getComputedStyle(document.documentElement).zoom);e<1&&(this.iframeBox.style.zoom=(1/e).toFixed(2)),this.iframe=document.createElement("iframe"),this.iframeBg=document.createElement("div")}createIframe(e){this.iframe.id=this.iframe.name=e.name,this.iframe.src=e.url;const i=e.option||{};this.iframe.width=i.width||400,this.iframe.height=i.height||400,this.iframe.scrolling=i.scrolling||"no",this.iframe.marginWidth=i.marginWidth||"0",this.iframe.marginHeight=i.marginHeight||"0",this.iframe.frameBorder=i.frameBorder||"0"}applyStyles(e){Object.assign(this.iframe.style,{zIndex:3e3,position:"fixed",borderRadius:e.radius||"none",opacity:0}),Object.assign(this.iframeBg.style,{position:"fixed",backgroundColor:"#6f6f6f80",width:"100%",height:"100%",top:0,left:0,opacity:0}),this.applyPosition(e.offset||"center"),this.applyAnimation(e)}applyPosition(e){const i={center:{top:"50%",left:"50%",transform:"translate(-50%, -50%)"},top:{top:"5%",left:"50%",transform:"translateX(-50%)"},bottom:{bottom:"5%",left:"50%",transform:"translateX(-50%)"},lt:{top:"5%",left:"5%"},lb:{bottom:"5%",left:"5%"},rt:{top:"5%",right:"5%"},rb:{bottom:"5%",right:"5%"}},t=i[e]||i.center;Object.assign(this.iframe.style,t)}applyAnimation(e){const i=e.animTime||300;this.iframe.style.transition=`opacity ${i}ms`,this.iframeBg.style.transition=`opacity ${i}ms`,this.createAnimationStyles(e.anime||0)}createAnimationStyles(e){const i={0:".IMP_PLUG_LOGIN_animateIn{opacity:1 !important;} .IMP_PLUG_LOGIN_animateOut{opacity:0 !important;}"},t=i[e]||i[0],s=document.createElement("style");s.id="IMP_PLUG_LOGIN_animateCss";try{s.appendChild(document.createTextNode(t))}catch(o){s.styleSheet.cssText=t}document.head.appendChild(s)}appendToDocument(){this.iframeBox.append(this.iframe),this.iframeBox.append(this.iframeBg),document.body.append(this.iframeBox)}istop(){return parent===window}close(){if(!this.istop())return;const e=()=>{this.iframeBox&&(this.iframeBox.remove(),this.iframeBox=null),this.autoLogin.iframe&&this.autoLogin.iframe.remove();const e=document.getElementById("IMP_PLUG_LOGIN_animateCss");e&&e.remove()};this.iframeBg&&(this.iframeBg.classList.remove("IMP_PLUG_LOGIN_animateIn"),this.iframeBg.classList.add("IMP_PLUG_LOGIN_animateOut")),this.iframe?(this.iframe.classList.remove("IMP_PLUG_LOGIN_animateIn"),this.iframe.classList.add("IMP_PLUG_LOGIN_animateOut"),this.iframe.addEventListener("transitionend",e,{once:!0})):e()}autoSize(e,i){n.send(this.keys.msg_autoSize,{width:e||document.body.scrollWidth,height:i||document.body.scrollHeight})}open(e=!1){if(this.iframeBox)return Promise.resolve();const i=new Promise((e,i)=>{this.onLoginOK(e,i),this.istop()?this.create({url:this.urls.login,name:"signIn",option:{radius:"4px"}}):n.send(this.keys.msg_goto,{url:this.urls.login})});return e?i:i.then(()=>location.reload())}openPage(){const e=o.getPar("sourceurl")||location.href,i=o.addPar("sourceurl",unescape(e),this.urls.loginPage);location.href=i}openReg(e=!1){if(this.iframeBox)return Promise.resolve();const i=new Promise((e,i)=>{this.onLoginOK(e,i),this.istop()?this.create({url:this.urls.reg,name:"signIn",option:{radius:"4px"}}):n.send(this.keys.msg_goto,{url:this.urls.reg})});return e?i:i.then(()=>location.reload())}openRegPage(){const e=o.getPar("sourceurl")||location.href,i=o.addPar("sourceurl",unescape(e),this.urls.regPage);location.href=i}threeLogin(e,i){return new Promise((t,s)=>{this.closeThreeLoginWin(),this.onLoginOK(t,s);const o=a(`/v1.0.0/user/OpenThreeLogin?type=${e}`,i);this.threeLoginWin=window.open(o)})}closeThreeLoginWin(){this.threeLoginWin&&(this.threeLoginWin.close(),this.threeLoginWin=null)}getWechatCode(){const e=o.getPar("__login_code");if(!e){const e=`${this.loginDomain}/v1.0.0/user/OpenThreeLogin?type=wechatcode&redirect_uri=${encodeURIComponent(location.href)}`;location.href=e}return e}getLogin(e,i=!1){const t=e||s.get(this.keys.cache_loginSave);return t?(i||delete t.sign,t):null}getUser(e,i=!1,t=!1){"function"!=typeof e&&(t=i,i=e,e=null);const o=new Promise((e,o)=>{const n=this.keys.cache_userInfo+"_"+(i?"more":"simplify");if(!t){const i=s.get(n);if(i)return void e(i)}m.get(this.urls.userInfo,{more:i?1:0}).then(i=>{1===i.code?(s.set(n,i.data,this.loginTime),e(i.data)):o(i)})});return e?o.then(e):o}islogin(){return!!this.getLogin()}async check(){return!(this.isTempCheck||!this.islogin())||this.checkZ()}checkZ(){return new Promise((e,i)=>{if(!this.autoLogin.iframe&&!this.autoLogin.window){let e=this.urls.autoLogin;e=o.addPars({sign:o.getPar(this.keys.url_tempSignKey),useridx:o.getPar(this.keys.url_tempUseridxKey)},e),this.autoLogin.iframe=this.getIframeUrl(e,this.keys.msg_loginReturn),this.autoLogin.callbacks=[]}this.autoLogin.callbacks.push({ok:e,no:()=>{e(!1)}})})}async checkTemp(){if(this.isTempCheck=o.getPar(this.keys.url_tempSignKey)&&o.getPar(this.keys.url_tempUseridxKey),this.isTempCheck)return this.checkZ()}checkPage(){return new Promise((e,i)=>{const t=o.getPar(this.keys.checkLogin_code),s=parseInt(o.getPar(this.keys.loginStatus)||-1);u.debug("checkLogin_code:",t),0===s?(o.delParsUpUrl([this.keys.loginStatus]),i("用户未登录!")):s&&t?m.get(this.urls.CheckLoginByCode,{code:t}).then(t=>{1===t.code?(o.delParsUpUrl([this.keys.checkLogin_code,this.keys.loginStatus]),this.save(t.data),e(t)):i()}):m.get(this.urls.checkSSOLogin).then(i=>{if(1===i.code)this.getUser().then(e);else{let e=o.addPars({redirect_uri:encodeURIComponent(location.href)},this.urls.checkLoginPage);location.href=e}})})}res(e){const i=decodeURIComponent(o.getPar(this.keys.loginResult)||"");if(i){const t=JSON.parse(i);e?.(t),o.delParsUpUrl([this.keys.loginResult])}}exit(e=!1){return u.debug("退出登录!"),this.exitLogin.Promise||(this.exitLogin.Promise=new Promise(e=>{c.get(this.urls.exitLogin).then(i=>{g(this.urls.webLoginOut,null,()=>{e(i)},"text"),this.clear(),this.exitLogin={}})}),e||(this.exitLogin.Promise=this.exitLogin.Promise.then(()=>{location.reload()}))),this.exitLogin.Promise}getIframeUrl(e,i){const t=document.createElement("iframe");Object.assign(t.style,{position:"absolute",width:"1px",height:"1px",top:"-100px"}),t.dataset.flag=9513,i&&(e=o.addPar("post_msg_name",i,e)),t.src=e;let s,n=!1;const r=()=>{t.removeEventListener("error",a),clearTimeout(s)},a=e=>{n||(n=!0,r(),t.remove(),this.runAutoLoginCallback(!1))};return t.addEventListener("load",e=>{n||(n=!0,r(),console.log("登录页面已打开"))},{once:!0}),t.addEventListener("error",a,{once:!0}),s=setTimeout(()=>{a()},1e4),document.body.append(t),t}onNoLogin(e){r?r.on(this.eventKeys.nologin,e):console.warn("事件模块event未加载,事件相关功能不可用!")}runNoLogin(e){return r?Promise.resolve(r.run(this.eventKeys.nologin,e)):(console.warn("事件模块event未加载,事件相关功能不可用!"),Promise.resolve())}writeXhr(e){if(!e)return console.warn("xhr不能为空!"),e;const i=this.getLogin(null,!0);return i&&(e.withCredentials=!0,e.setRequestHeader("imp_sign",i.sign),e.setRequestHeader("imp_useridx",i.useridx)),e}writeUrl(e){if(!e)return console.warn("url不能为空!"),e;const i=this.getLogin(null,!0);return i&&(e=o.addPar("_useridx",i.useridx,e),e=o.addPar("sign",i.sign,e)),e}debug(...e){console&&console.debug&&console.debug(...e)}}const p=new f;export{f as Login,p as default,p as login};
|