Namespace.register("U.U.L"); //用户登录的命名空间 /* 问题: 1、验证码的接口问题 2、无窗体的接口 */ //#region 配置数据 U.U.L.LFN = []; //用户被迫下线时,给别人登录了,登录超时等情况,无法设置回调函数,则把回调函数设置为全局变量,在window.onload时执行。 U.U.L.ULF = []; U.U.L.isLogining = false; //判断用户登录状态。cookie登录状态为cookie,账号登录为true,没有登录为false //#endregion /** * 弹出登录注册 * * @param {int} type==3:登录页面,type==1:注册页面,type==2:找回密码页面 * @param {function} cb为回调函数 * @returns {boolean} 是否登录 */ U.U.L.Login = U.U.L.DLTC = function () { var _parent = $("#UD_SYC"); //登录注册框 var _child = _parent.Child(); //获取登录注册找回密码的div U.UI.Form({ title: "", draw: false, max: false, min: false, id: "UD_SYC_Pop", content: _parent[0], style: { width: "360px", "height": "505px" }, hst: { style: { padding: "0" } } }); _child[1].style.display = "none"; //隐藏注册框 _child[2].style.display = "block"; //显示登录 _child[3].style.display = "none"; //隐藏找回密码 $("div", _child[0])[2].innerHTML = "云端办公"; //头部设置内容 var _head = $(_child[0]).childg()[1]; $(_head).addAttrArray({ innerHTML: "", "className": "", title: "" }); var _username = U.M.GetCookie("usestudiosso", "username")[0]; //上次登录的用户名 var _input = $("input", _child[2]); if (_username) { //cookie存在 登录处理 _input[0].focus(); //聚焦处理 _input[0].value = _username; //设置cookie用户名 _input = _input[1]; //当前需要聚焦 } else { //注册 找回密码 聚焦元素处理 _input = _input[0]; } _input.focus(); } /** * 判断用户是否登录如果未登陆则弹出登陆框 * */ U.U.L.isLogin = function () { if (!US.userInfo.userid) { //判断用户id是否存在 U.U.L.Login(); //用户登录函数 return true; //用户未登录返回false } return false; //用户登录返回true } /** *登录enter **/ U.U.L.ENDL = function (UDOD, UDTD) { var i, _UTF = true; var _UDPD = $(UDOD).Parent(3); var _UDAD = $("input", _UDPD); for (i = 0; i < _UDAD.length; i++) { if (!_UDAD[i].value && _UDAD[i].clientWidth) { _UDAD[i].focus(); _UTF = !_UTF; break; } } if (_UTF && UDTD) { UDTD.onclick(); } //登录 } //登录调用回调使用 U.U.L.SYDLHD = function (UFN) { if (U.U.L.isLogin(3)) { U.D.SY.ET.DLHD = [UFN]; } //未登录要求登录 else { UFN(); return true; } //登录直接转发 } //点击微博或者qq登录 U.U.L.QWDL = function (UDOD, UTF) { var _UDTD = $("a", UDOD)[0] if (_UDTD) { _UDTD.click(); } //点击使用微博或者qq else { U.Alert("等待" + (UTF ? "qq" : "微博") + "加载..."); //qq登录加载按钮 U.U.OT.QqLoadJs({ btnId: "UD_SYCOSLWL", size: "C_S" }); //微博登录加载按钮 U.U.OT.WeiboLoadJs({ show_head: false, show_name: false, show_cancel: false, id: "UD_SYCOSLQL", type: "3,2", callback: { login: U.M.apply(null, [ [U.U.OT.WBCB, [null]] ]) } }); } //加载为完成 } //#endregion //#region cookie登录 /* 功能:1473.cn域下各个应用的用户通过Cookie自动登录,Cookie登录入口。支持跨域 */ U.U.L.CookieLogin = function () { var _cookie = U.U.L.GLID(); //获取用户的云端Cookie,选取最后一个账号进行登录。 var _address = US.NLInfo.LogAddr || ""; //获取用户登录的地点名 if (_cookie && _cookie.userid && _cookie.userid.length == 36) { U.U.L.isLogining = "cookie"; //_cookie.Loginid,后台有cookie的Loginid。 U.A.Request(US.Auth, ["LoginByCookie", _cookie.userid, _cookie.username], U.U.L.AsynCookieL, ["", _address]); } //Cookie登录 } //cookie登录查看值 U.U.L.AsynCookieL = function (r) { var _UTZ = r.value; if (_UTZ) { return U.U.L.AsynUlL(r, null, true); } //Cookie在线 无法继续登录 } /* 功能:获取用户cookie,云端cookie关键字为usestudiosso,格式为 Loginid:登录id UserStamp:账号13928417148的值为"1364812396"?奇怪? userid:云端用户id username:云端用户名 如果不传入参数,默认获取最后一个,否则获取传入userid的账号进行登录。 参数一:userid代表用户id。传入用户id,则判断cookie中是否有该账号,并使用该账号登录。 */ U.U.L.GLID = function (userid) { var i; var _UDE = U.M.Cookies.getarray("usestudiosso"); //获取保存的cookie值。 //如果传入参数userid并且cookie中有userid。则判断是否是自己的账号登录。 if (_UDE.userid) { if (userid) { for (i = 0; i < _UDE.userid.length; i++) { if (_UDE.userid[i] == userid) { break; } } } //不是自己账号登录 else { //允许多用户登录,则用户id减少一? i = _UDE.userid.length - 1; } //循环所有Cookie。 for (var c in _UDE) { //对中文进行解密。_UDE[c]中可能有多个userid,只获取最后选中的第i个。返回的数据在这里做了处理。 _UDE[c] = decodeURIComponent(_UDE[c][i]); } } //返回的集合包括了Loginid:登录idUserStamp:账号13928417148的值为"1364812396"?奇怪?userid:云端用户idusername:云端用户名 return _UDE; } //#endregion //#region 登录数据使用 //添加用户信息 //U.U.L.UInfo = function (UCB) { // U.CI.GetUserLocation(UCB); //} /* 功能:1473桌面直接登录,单击登录按钮时触发的函数 参数一:UDOD为登录所在的div元素 参数二:UTF暂时未用 */ U.U.L.SDLD = function (UDOD, UTF) { var _UDPD = $(UDOD).Parent(); //类名为"UD_SYCOS"的div元素 var _UDID = $("input", _UDPD); //获取里面的input,共三个 var _UN = _UDID[0].value; //第一个input为用户名 var _UP = _UDID[1].value; //第二个input为密码 //以前已经登录过,则直接跳转回调函数 if (_UN && _UN == US.userInfo.username) { U.U.L.AsynSDLD(UDOD, "登录", [US.userInfo]); } //以前没有登录过,则清空密码输入 等待用户登录 else if (!UTF && U.U.L.UlL(_UN, _UP, [$(_UDPD).Parent(), true])) { UDOD.innerText = "登录..."; _UDID[1].value = ""; } } /* 登录后隐藏登录界面。 参数一: 参数二:UST 登录中或者注册中的文字提示。传递"",表示登录,传递“注册”则为注册 参数三: */ U.U.L.AsynSDLD = function (UDOD, UST, userinfo) { if (userinfo && userinfo.IsShielding == 0) { if ($("#UD_SYC_Pop")[0]) { //如果登录框有弹框 $("#UD_SYC_Pop")[0].close(); } } UDOD.innerText = UST; //执行登录回调 } //用户登录执行回调,此函数如果没有其他应用调用,则该和上一函数合并。 U.U.L.DLHD = function () { var i, _UDE = U.D.SY.ET.DLHD; while (_UDE.length) { (_UDE.splice(0, 1)[0])(US.userInfo); } //执行登录回调 } /* 功能:用户登录云端接口,向后台发送请求,记录用户名和密码,后面还有一个登陆获取用户个人信息。好友信息,及消息通知 参数一:用户名 参数二:密码 参数三:登录窗口div元素,做loading的位置 参数四:回调函数 */ U.U.L.UlL = function (username, password, loading) { var _logaddress = US.NLInfo.LogAddr || ""; //登录地址 if (username.removeP() && password.removeP()) { U.U.L.isLogining = true; //电脑卡的时候,用户一直点登录,此处判断用户是否已经按下了登录按钮。 //此处指返回用户基本信息, U.A.Request(US.Auth, ["UserLogin", username, password], U.U.L.AsynUlL, [loading, _logaddress, username, password]); return true; } //加载用户信息 且进行异步处理 } //用户登录执行事件 U.U.L.AsynUlL = function (r, outsite, iscookie) { var _userid; var _str; //错误输出 var _UKE; var _userinfo; var context = r.context; var _address = context[1]; //地址 //var _cb = context[2]; //回调函数 var _UN = context[2]; //用户名 var _UP = context[3]; //密码 r = r.value; switch (r) { case null: _str = "系统繁忙!请重试"; break; //系统繁忙 case 0: _str = "帐号不存在!"; break; case 1: _str = "密码错误!"; break; //帐号密码错误 case 2: _str = "该用户不允许被访问!请联系管理员"; break; //用户给禁用 default: U.U.L.UL(); //清空用户信息,不移除下线信息? if (!_address) { U.CI.GetUserLocation(U.U.L.TJYHXX); //客户端信息加载,好像只加载了新浪ip地址? } _userinfo = U.U.L.SetUserInfo(r); //设置用户基本信息,包括用户信息,好友信息 //如果返回的用户信息是不完善的用户信息,去获取用户详细信息,解决账号数据过多,登录时间过长的问题. if (r.length < 4) { //此处返回用户的好友,通知等信息。 U.U.L.GetLogin(_UN); //去获取用户详细信息 } else { //信息比较完善,则直接异步 U.U.L.AsynGetLogin({ value: r, context: [] }); } ////用户头部头像个人信息 U.U.L.GRXX(); _UKE = U.D.B.split(_userinfo.UserBackGroundImage); //_userinfo.UserBackGroundImage的值形如:"/img/usestudiobackgroudnimage/Dream_train.jpg/S" U.D.B.SetBackgroundImage(_UKE[0], _UKE[1], null, true); //设置用户背景图,以后需修改为设置用户桌面信息 } if (_str && iscookie !== true) { //Cookie登录,即使密码错误也不弹出错误信息。 U.Alert(_str); //登录提示处理 } U.U.L.AsynSDLD($("#UD_SYCOSX")[0], "登录", _userinfo); //把登录按钮改成登录中改成登录处理 U.U.L.DLHD(); //未登录时操作好友或者其他,此时需要登录,登录后会返回到记录的操作步骤中? } //为了以后的扩展,给其他系统获取完整的用户信息。 //获取用户登录数据,后面还有一个登陆获取用户个人信息。好友信息,及消息通知,逻辑有问题。 U.U.L.GetLogin = function (username) { var _username = username || U.U.L.GLID(US.userInfo.userid).username; //US.SystemId表示1473哪个系统登录进来的。US.NLInfo.LogAddr || "" 新浪api提供的根据ip获取的地理位置。和后台api不一致 U.A.Request(US.Auth, ["GetUserLoginData", _username, US.userInfo.userid, US.NLInfo.LogAddr || ""], U.U.L.AsynGetLogin); } //异步获取数据 U.U.L.AsynGetLogin = function (r) { var _news, _UDOD = $("#usestudio-server")[0], _userid = US.userInfo.userid, context = r.context; r = r.value; _news = [[r[0][5], r[0][6]]]; U.U.L.SetUserInfo(r); //清理用户数据 添加访问用户信息 U.U.L.SLF(US.userInfo); //登录初始化应用 U.F.N.Distribute(_news); //用户消息区域 if (!US.userInfo.UserEmail && !_UDOD) { U.U.DKGEZL(); } //弹出填写个人资料 //登录的用户和当前使用的用户不相同 } //添加用户初始化资料信息 U.U.L.SetUserInfo = function (userinfo) { //用户已经登录的时候的处理,这个时候用户写入的信息为用户登录后信息数据 if (US.userInfo.userid) { userinfo[0][5] = US.Friend[5]; //好友用户数组中添加一个在线好友的数组 US.Friend = userinfo[0]; //初始化好友的信息 US.userInfo.TJF = userinfo[1]; //给用户推荐的好友 U.F.T.InitFriendInfo(); //给好友信息进行排序,吧登录的用户排到数组的最前面 } //用户从未登录到登录的时候写入用户信息 else { //如果用户的第一个信息是返回的数组,那么就是注册进入的,由于注册进入不需要获取普通信息后再获取详细信息,而是直接返回数据,因为注册的用户信息非常少所以就不分两次请求了。 if (U.Ut.isArray(userinfo[0])) { U.U.L.SetUserInfo(userinfo[0]); //重新调用一次,设置用户普通信息 U.U.L.SetUserInfo[userinfo[1], userinfo[2]]; //重新调用一次,设置用户普通信息 } //设置用户登录的普通信息 else { US.userInfo = userinfo[0]; //给用户信息全局变量赋值。 US.Friend[5] = userinfo[1]; //添加在线信息。 US.userInfo.LoginId = userinfo[2]; //用户前后台更新数据唯一识别id } } return US.userInfo; } //登录成功执行事件 U.U.L.SLF = function (UIF) { var i, _UDAD, _UDOD, _UIF = US.userInfo, _UDE = ["", "E"]; U.F.InitFriend(); //初始化好友 U.Dk.UP.XWPGBSC(); //清理上传文件 U.D.SY.ET["UL"]["HY"]["userid"] = _UIF.UserId; //设置刷新当前朋友圈用户的ID //U.D.Blog.N.PNXX(); //查看PB和Blog的消息 //逻辑有问题,其他系统不弹出网盘,不该调用U.D.DT.YYDK。此处判断需要做一个全局变量. if (!(!document.location.hash.length < 3 && (U.D.IsUseStudio && !$("#usestudio-server")[0]))) { U.Dk.DiskLoad(_UIF.UserId, US.FG); // } else { U.D.DT.YYDK("Disk", { "userid": _UIF.UserId, "directoryid": US.FG }); //1473系统弹出FTP。 } } //登录用户添加用户信息 U.U.L.TJYHXX = function () { (US.NLInfo.LogAddr) && (U.A.Request(US.Auth, ["RecordUserClientInfo", US.userInfo.username, "", "", US.NLInfo.LogAddr, ""], U.M.apply(), [])); //异步添加信息 } //用户头部头像个人信息 U.U.L.GRXX = function () { var _UIF = US.userInfo; var _UIMG = U.M.GetImgU(_UIF.UserThumbnailImageHead); var _UDCD = $("#UD_TBDI"); if (_UDCD[0]) { $("#UD_SYSXZBEOI&img").addAttrArray({ "onerror": U.M.ImgError, "alt": _UIF.UserNickName, "title": _UIF.UserNickName, "src": _UIMG, "onclick": [[U.U.L.SYDLHD, [U.M.apply(this, [ [U.D.SY.HDSY, [ ["none", "block"], [false, ["block", "none", false]] ]] ])]] ] }); // $(_UDCD.find("img")[0] || $$("img", {}, _UDCD[0])).addAttrArray({ "onerror": U.M.ImgError, "title": _UIF.UserNickName, "onclick": [ [U.D.DT.YYDK, ["Set"]] ], "src": U.M.GetImgU(_UIF.UserThumbnailImageHead) }); //用户头像 _UDCD.addAttrArray({ "className": "UD_TBDI" })[0]; if ($("#UD_TBDL")[0]) { _UDAD = $("#UD_TBDL").childg(0); _UDAD.lt(2).css("display", "none"); _UDAD[2].style.display = "block"; } } } //#endregion //#region 注销用户 //注销 U.U.L.LogoutSystem = function () { if (US.userInfo.userid) { U.UI.Confirm("是否退出" + US.userInfo.username + "账号", [U.U.L.Logout, [false]]); } } //确定注销 //b为是否清除cookie的参数。如果传递false,则清除cookie。 U.U.L.Logout = function (b) { var _UDAD; if (!b) { U.U.L.TCUL(); //退出账号 } $("#UD_TBDI").addAttrArray({ "innerHTML": "", "className": "UD_TBDI UD_SYI" }); _UDAD = $("#UD_TBDL").childg(0); _UDAD.lt(2).css("display", "block"); _UDAD[2].style.display = "none"; // $("#UD_SYHZ").css("display", "none"); //头部信息 $("#UD_SYHR").css("display", "none"); $("#UD_SYSSRXOA").Parent(2).style.display = "none"; _UDAD = $("#UD_SY").childg().css("display", "none"); (U.D.Tb.taskbars) && (U.D.Tb.taskbars.clear()); //应用退出 } //用户退出指定帐号 清理cookie U.U.L.TCUL = function (UCB) { if (US.userInfo.userid) { U.A.Request(US.Auth, ["UserOffline", US.userInfo.userid, US.userInfo["LoginId"]], U.U.L.AsynTCUL, ["", UCB]); //清除本地存储。现在没有用处了。 if (U.D.LocalStorage) { U.D.LocalStorage.set("user", U.MS.jsonToStr({ value: "upline", uid: US.userInfo.userid })); } //清理用户数据 U.U.L.OffLine(); } //清理用户数据 } //退出账号异步 U.U.L.AsynTCUL = function (r) { var context = r.context, _UCB = context[1]; (U.Ut.isFunction(_UCB)) && (_UCB(r.value)); } U.U.L.OffLine = function () { //U.U.L.UL清空用户数据 U.U.L.UL(); U.U.L.Logout(true); for (i = 0; i < U.U.L.ULF.length; i++) { //执行保存的用户下线的回调函数U.U.L.Logout()。 U.U.L.ULF[i](); } try { (window["QC"] || window["WB2"]) && (U.U.OT.Logout()); //QQ和微博登录下线 } catch (e) { } //回调盒子 } //用户下线获取给别人顶下线 U.U.L.UL = function () { var i; US.userInfo = US.Friend = {}; //用户信息和好友信息清空 //U.Dk.DiskOperatingSwitch(US.userInfo.userid); // U.D.B.SetBackgroundImage(U.D.B.url); //设置默认背景 } //#endregion //#region 外链登录 //填写登录信息 U.U.L.USUTJ = function (UDE, UN) { var i, _UP = U.P.getRandom(1000000), _UDOD = $("#UD_LA"), _UDAD = _UDOD.find("div"); U.D.CloseWindow($("#UD_SYC_Pop")[0]); UN += ""; _UDOD.css("display", "block"); while (UN.length < 6) { UN = "0" + UN; }; _UDAD[6].innerHTML = "账号:" + UN + ""; _UDAD[7].innerHTML = "密码:" + _UP; _UDAD.Center(0); //居中 for (i = 1; i < 3; i++) {//点击 _UDAD[_UDAD.length - i].onclick = U.M.apply(this, [ [U.U.L.TXZH, [i - 1, UDE, UN, _UP]] ]); }; } //把用户填写的账号密码写入数据库 U.U.L.TXZH = function (UTF, UDE, UN, UP) { var _UGE = U.U.R.TBA, _UDOD = $("#UD_LA"), _UDAD = _UDOD.find("input"); if (UTF) { (_UGE[0]) && (UN = _UDAD[0].value); (_UGE[1]) && (UP = _UDAD[1].value); } //帐号密码设置 U.A.Request(US.Auth, ["UserRegister", UN, UP, "", US.NLInfo.LogAddr || "", US.SystemId, UDE.openID || UDE.id || UDE.openid]), U.U.L.AsynTXZH, [ [_UDOD[0], true], US.NLInfo.LogAddr, null, UDE ]; //注册中 } //外链登录成功 同时修改个人信息 U.U.L.AsynTXZH = function (r) { var context = r.context, _USE = context[3], _UDE = { "Country": "中国", "Province": _USE.province || "", "UserEmail": _USE.UserEmail || "", "Birthday": U.MT.getYearMonthDay(_USE.Birthday, "String"), "City": _USE.city || "", "UserAddress": _USE.location || "", "UserNickName": _USE.screen_name || _USE.nickname || "", "UserRemarks": _USE.description || "", "UserIndividualitysignature": _USE.description || "", "UserThumbnailImageHead": _USE.avatar_large || _USE.avatar_hd || _USE.figureurl_qq_2 || _USE.figureurl_qq_1 || "", "UserSex": (_USE.gender == "m" | _USE.gender == 1) ? 1 : 0 }; _$(_UIF).Change(_UDE); //QQ,微博方式注册进来 if (U.U.R.AsynUR(r, true)) { var _UIF = US.userInfo; U.A.Request(US.Auth, ["UpdateUserBasicInfo", _UIF.UserId, "", _UDE.UserNickName, "", "", _UDE.UserIndividualitysignature, _UDE.UserEmail, "", _UDE.UserSex, _UDE.Country, _UDE.Province, _UDE.City, _UDE.Birthday], U.M.apply(), [""]); //修改用户登录资料 U.A.Request(US.Auth, ["UpdateUserHeadPortrait", US.userInfo.userid, _UDE["UserThumbnailImageHead"], _UDE["UserThumbnailImageHead"]], U.M.apply(), [""]); $("#UD_LA").hide(); //修改用户头像 } } //#endregion