/** * 本文件将提供 站酷Passport最基本的登录、登出函数定义支持 * * 本文件依赖: * > jQuery 1.7 或者更新版本 * * @auth xulz */ (function($) { window.PassPortUtil = { options:{ random : new Date().getTime() + '' + Math.floor(Math.random() * Math.pow(10, 8)) }, /** * passport通行证统一的异步登录,新增接口,邮箱未激活状态下可登陆 * @param appId 登录应用Id * @param userId 登录账号 * @param password 登录密码 * @param remember 是否自动登录 * @param code 验证码 * @param cb 回调函数 * @param cb 回调地址 * @param passportHost passport服务器主机地址 * @param clientHostLogin passport应用的回调登录地址 */ loginActive:function(appId,userid,password,remember,code,cb,cbUrl,passportHost,clientHostLogin) { $z.encryptFn(appId,userid,password,remember,code,cb,cbUrl,passportHost,clientHostLogin); }, /** * passport通行证手机验证码登陆 * @param appId 登录应用Id * @param userId 登录账号 * @param password 登录密码 * @param remember 是否自动登录 * @param code 验证码 * @param cb 回调函数 * @param cb 回调地址 * @param passportHost passport服务器主机地址 * @param clientHostLogin passport应用的回调登录地址 */ loginPhone:function(appId,phonenum,code,cb,cbUrl,passportHost,clientHostLogin) { $.ajax({ url:'/login_jsonp_phonecode.do?jsonpCallback=?', dataType:'jsonp', data:{appId:appId,phonenum:phonenum,code:code,service:cbUrl,appLogin:clientHostLogin}, jsonp:'callback', success:function(data) { cb(data); }, error:function(data) { var obj= {result:false,success:false,msg:"登录失败,请稍后再试"} ; cb(obj); }, timeout:3000 }); }, /** * 统一退出应用 * @param appLogoutUrl 应用的退出地址 * @param appId 当前退出应用的appId * @param passportHost passport服务器主机地址 * @param isRedirect 是否需要重定向刷新页面 * @param cbUrl 应用的回调地址 * */ logout:function(appLogoutUrl,appId,passportHost,isRedirect,cbUrl) { var str = passportHost+"/logout.do?appId="+appId+"&isRedirect="+isRedirect+"&callbackName=$z.logoutPassportServer"; if(cbUrl) { str += "&cbUrl="+cbUrl; } $.when($z.logoutAppOne(passportHost),$z.logoutAppThree(passportHost),$z.logoutAppGogoup(passportHost),$z.logoutProHellorf(passportHost),$z.logoutHellorfPre(passportHost), $z.logoutZDo(passportHost), $z.logoutZDiy(passportHost)).done($z.logoutServer(str)).fail(function(){ $z.logoutAppOne(passportHost); $z.logoutAppThree(passportHost); $z.logoutAppGogoup(passportHost); $z.logoutProHellorf(passportHost); $z.logoutHellorfPre(passportHost); $z.logoutZDo(passportHost); $z.logoutZDiy(passportHost); $z.logoutServer(str); }); }, logoutAppOne:function(passportHost) { if(passportHost != null && passportHost.indexOf('dev') > -1){ $z.addScriptTag('http://www.dev.zcool.com.cn/sso/logout_jsonp.do?callback=$z.logoutCallBack&scriptId=ssoscript10061','ssoscript10061'); $z.addScriptTag('http://my.2017.dev.zcool.com.cn/logout?callback=$z.logoutCallBack&scriptId=ssoscript10171','ssoscript10171'); }else if(passportHost != null && passportHost.indexOf('test') > -1){ // $z.addScriptTag('https://my.2017.test.zcool.com.cn/logout?callback=$z.logoutCallBack&scriptId=ssoscript10172','ssoscript10172'); $z.addScriptTag('https://www-test.zcool.cn/sso/logout_jsonp.do?callback=$z.logoutCallBack&scriptId=ssoscript1006','ssoscript1006'); }else{ $z.addScriptTag('https://my.zcool.com.cn/logout?callback=$z.logoutCallBack&scriptId=ssoscript1017','ssoscript1017'); $z.addScriptTag('https://www.zcool.com.cn/sso/logout_jsonp.do?callback=$z.logoutCallBack&scriptId=ssoscript1006','ssoscript1006'); } }, logoutAppThree:function(passportHost) { // if(passportHost != null && passportHost.indexOf('test') > -1){ // $z.addScriptTag("http://www.test.hellorf.com/user/ssologout/?callback=$z.logoutCallBack&scriptId=ssoscript1007",'ssoscript1007'); // }else{ $z.addScriptTag("https://www.hellorf.com/user/ssologout/?callback=$z.logoutCallBack&scriptId=ssoscript1007",'ssoscript1007'); // } }, logoutAppGogoup:function(passportHost) { if(passportHost != null && passportHost.indexOf('test') > -1){ // $z.addScriptTag("http://www.test.gogoup.com/sso/logout_jsonp?callback=$z.logoutCallBack&scriptId=ssoscript1010",'ssoscript1010'); }else{ $z.addScriptTag("http://www.gogoup.com/sso/logout_jsonp?callback=$z.logoutCallBack&scriptId=ssoscript1010",'ssoscript1010'); } }, logoutProHellorf:function(passportHost) { if(passportHost != null && passportHost.indexOf('test') > -1){ // $z.addScriptTag("http://test.contributor.hellorf.com/login/dologout/?callback=$z.logoutCallBack&scriptId=ssoscript1012",'ssoscript1012'); }else{ $z.addScriptTag("https://contributor.hellorf.com/login/dologout/?callback=$z.logoutCallBack&scriptId=ssoscript1011",'ssoscript1011'); } }, logoutHellorfPre:function(passportHost) { if(passportHost != null && passportHost.indexOf('test') > -1){ // $z.addScriptTag("http://test.plus.hellorf.com/login/dologout/?callback=$z.logoutCallBack&scriptId=ssoscript1024",'ssoscript1024'); }else{ // $z.addScriptTag("http://plus.hellorf.com/login/dologout/?callback=$z.logoutCallBack&scriptId=ssoscript1014",'ssoscript1014'); } }, logoutZDo:function(passportHost) { if(passportHost != null && passportHost.indexOf('test') > -1){ // $z.addScriptTag("http://test.zdo.zcool.cn/logout.do?callback=$z.logoutCallBack&scriptId=ssoscript10152",'ssoscript10152'); }else if(passportHost != null && passportHost.indexOf('dev') > -1){ // $z.addScriptTag("http://dev.zdo.zcool.com.cn/logout.do?callback=$z.logoutCallBack&scriptId=ssoscript10151",'ssoscript10151'); }else{ // $z.addScriptTag("http://zdo.zcool.com.cn/logout.do?callback=$z.logoutCallBack&scriptId=ssoscript1015",'ssoscript1015'); } }, logoutZDiy:function(passportHost) { if(passportHost != null && passportHost.indexOf('test') > -1){ // $z.addScriptTag("http://test.zweb.zcool.cn/api/logout.do?callback=$z.logoutCallBack&scriptId=ssoscript10162",'ssoscript10162'); }else if(passportHost != null && passportHost.indexOf('dev') > -1){ $z.addScriptTag("http://dev.zweb.zcool.com.cn/api/logout.do?callback=$z.logoutCallBack&scriptId=ssoscript10161",'ssoscript10161'); }else{ // $z.addScriptTag("http://zcooler.com/logout.do?callback=$z.logoutCallBack&scriptId=ssoscript1016",'ssoscript1016'); } }, logoutServer:function(str) { $z.addScriptTag(str); }, logoutCallBack:function(result) { var flag = false; if(result) { if(result.retcode=="1") { flag = true; $('#'+result.scriptId).remove(); }else { flag = false; } } // console.log('logoutCallback:'+flag); return flag; }, /** * 登出passport服务器的处理函数。 * @param {Object} data 登录后的数据 * @param logoutSuccessUrl 登出passport服务器后的跳转地址 */ logoutPassportServer:function(data) { if(data[0].result){ //登出后的处理。 /*setTimeout(function() { window.location.href = data[0].logoutSuccessUrl; }, 1000);*/ if(data[0].isRedirect) { window.location.href = data[0].logoutSuccessUrl; } } }, /** * 重复登录统一退出应用(排除服务器的退出情况) * @param currentAppLogoutUrl 当前应用的退出地址 * @param appId 当前退出应用的appId * @param passportHost passport服务器主机地址 * @param isRedirect 是否需要重定向刷新页面 * */ repeatLoginLogout:function(currentAppLogoutUrl,appId,passportHost,isRedirect,cbUrl) { $.when($z.logoutAppOne(passportHost),$z.logoutAppThree(passportHost),$z.logoutAppGogoup(passportHost),$z.logoutProHellorf(passportHost),$z.logoutHellorfPre(passportHost), $z.logoutZDo(passportHost)) .done(function(){ if(cbUrl) { document.location.href=cbUrl; }/*else { window.location.reload(); }*/ }) .fail(function(){ $z.logoutAppOne(passportHost); $z.logoutAppThree(passportHost); $z.logoutAppGogoup(passportHost); $z.logoutProHellorf(passportHost); $z.logoutHellorfPre(passportHost); $z.logoutZDo(passportHost); // console.log('重复登录,退出失败!'); }); }, repeatLoginLogoutCb:function(currentAppLogoutUrl,appId,passportHost,isRedirect,data,callback) { $.when($z.logoutAppOne(passportHost),$z.logoutAppThree(passportHost),$z.logoutAppGogoup(passportHost),$z.logoutProHellorf(passportHost),$z.logoutHellorfPre(passportHost), $z.logoutZDo(passportHost)) .done(function(){ callback(data) }) .fail(function(){ $z.logoutAppOne(passportHost); $z.logoutAppThree(passportHost); $z.logoutAppGogoup(passportHost); $z.logoutProHellorf(passportHost); $z.logoutHellorfPre(passportHost); $z.logoutZDo(passportHost); // console.log('重复登录,退出失败!'); }); }, reloadPage:function () { window.location.reload(); }, /** * 获得当前用户登录的应用列表。 * @param appList 登录的应用列表,json对象。 */ /*fetchAppList:function(appList) { //登录的应用不为空。 if (appList) { for ( var i = 0; i < appList.length; i++) { var appObj = appList[i]; if (appObj && appObj.logoutUrl) { //发送请求挨个登出各应用。 $z.addImgTag(appObj.logoutUrl); } } }else { $z.addImgTag('http://www.zcool.com.cn/logout.do'); $z.addImgTag('http://www.zcooler.com/logout'); } },*/ /** * 登出本应用,至少要登出本应用。 * @param currentAppLogoutUrl 本应用登出地址 */ /*logoutCurrentApp:function(currentAppLogoutUrl) { //登出ki4so服务器。 $z.addImgTag(currentAppLogoutUrl); },*/ /** * 动态添加某个javascript文件到文档中。 * @param {Object} src js文件的路径。 */ addScriptTag:function(src,scriptId) { /*var script = document.createElement('script'); script.setAttribute("type","text/javascript"); script.src = src; document.body.appendChild(script);*/ var script ='