123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572 |
- 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 = "账号:<span>" + UN + "</span>";
- _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
|