123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537 |
- Namespace.register("U.MD.U.L"); //用户登录的命名空间
- Namespace.register("U.MD.U.LO"); //用户登出的命名空间
- //#region 登录
- /*
- 问题:
- 1、验证码的接口问题
- 2、无窗体的接口
- */
- //#region 配置数据
- U.MD.U.L.loginCallBack; //登录后的回调使用
- U.MD.U.L.isLogining = false; //判断用户登录状态。cookie登录状态为cookie,账号登录为true,没有登录为false
- //#endregion
- /**
- * 弹出登录注册
- *
- * @param {int} type==3:登录页面,type==1:注册页面,type==2:找回密码页面
- * @param {function} cb为回调函数
- * @returns {boolean} 是否登录
- */
- U.MD.U.L.login = U.MD.U.L.DLTC = function (fun) {
- var _iframe = $("#U_MD_HomeC_Pop iframe")[0];
- if ($("#U_MD_HomeC_Pop")[0]) {
- U.UF.F.windowTopCenter($("#U_MD_HomeC_Pop")[0]);
- try {
- //登录有的其他回调,如,登陆后直接打开好友聊天等
- if (U.UF.C.isFunction(fun)) {
- U.MD.U.L.loginCallBack = fun; //回调处理
- }
- $("input", _iframe.contentWindow.document)[0].focus();
- _iframe.contentWindow.U.MD.U.L.init();
- }
- catch (e) { }
- }
- else {
- var _iframe = $$("iframe", { "style": { "border": "0", "float": "left" }, "id": "UI_Login", "name": "UI_Login", "frameborder": "no", "border": "0", "scrolling ": "no", "width": "360px", "height": "480px", "src": US.MAINDOMAIN + "/Login.htm" });
- new U.UF.UI.form("", _iframe,
- {
- "id": "U_MD_HomeC_Pop",
- "style": {
- "width": "360px",
- "height": "510px"
- }
- },
- {
- isdrag: false,
- isstretching: false,
- isenlarge: false,
- isnarrow: false
- });
- //跨域回调设置
- U.UF.DL.iframeLoad(_iframe, function () {
- //登录有的其他回调,如,登陆后直接打开好友聊天等
- if (U.UF.C.isFunction(fun)) {
- U.MD.U.L.loginCallBack = fun; //回调处理
- }
- _iframe.contentWindow.U.MD.U.L.loginCallBack = U.MD.U.L.defaultCallBack; //设置登录回调
- });
- }
- return _iframe;
- }
- /**
- * 打开注册窗体
- */
- U.MD.U.L.register = function (fun) {
- var _iframe = U.MD.U.L.login();
- try {
- _iframe.contentWindow.U.MD.U.R.register();
- }
- catch (e) {
- U.UF.DL.iframeLoad(_iframe, function () {
- //登录有的其他回调,如,登陆后直接打开好友聊天等
- if (U.UF.C.isFunction(fun)) {
- U.MD.U.L.loginCallBack = fun; //回调处理
- }
- _iframe.contentWindow.U.MD.U.L.loginCallBack = U.MD.U.L.defaultCallBack; //设置登录回调
- _iframe.contentWindow.U.UF.N.addHash('register'); //添加hash的处理
- });
- }
- }
- /**
- * 打开找回密码窗体
- */
- U.MD.U.L.retrieve = function () {
- var _iframe = U.MD.U.L.login();
- try {
- _iframe.contentWindow.U.MD.U.F.findPassword();
- }
- catch (e) {
- U.UF.DL.iframeLoad(_iframe, function () {
- _iframe.contentWindow.U.UF.N.addHash('findPassword'); //添加hash的处理
- });
- }
- }
- /**
- * 登录异步
- *
- * @param {object} 服务器返回的值
- * @param {boolean} 是否是cookie登录
- */
- U.MD.U.L.defaultCallBack = function (r, iscookie) {
- var _userinfo, //用户个人信息
- _backgroudimage, //背景图片
- _str, //输出的提示
- _context = r.context, //回调参数
- _address = _context[1], //触发函数的地址
- _username = _context[2], //用户名
- _password = _context[3]; //密码
- //登录后台返回的数据
- r = r.value;
- //判断登录状态
- switch (r) {
- case null:
- _str = "系统繁忙!请重试";
- break; //系统繁忙
- case 0:
- _str = "帐号不存在!";
- break;
- case 1:
- _str = "密码错误!";
- break; //帐号密码错误
- case 2:
- _str = "该用户不允许被访问!请联系管理员";
- break; //用户给禁用
- default:
- if (r) {
- //登录有的其他回调,如,登陆后直接打开好友聊天等
- U.MD.U.LO.emptyUserInfo(); //登陆的时候先清空用户信息,防止前面登陆用户的信息有冲突
- //如果刚刚登陆的时候没有用户的地址,这里重新获取,然后向后台发送
- if (!_address) {
- U.UF.CI.getUserLocation(U.MD.U.L.addUserAccess); //客户端信息加载,好像只加载了新浪ip地址?
- }
- _userinfo = U.MD.U.L.setUserInfo(r); //设置用户基本信息,包括用户信息,好友信息
- U.MD.U.L.getLoginUserInfo(_username || US.userInfo.username); //去获取用户详细信息
- if ($("#U_MD_D_BDI")[0] && $('#U_MD_D_BG')[0]) {
- //登录有用户的信息展示到页面中,包括背景图片、用户头像等
- U.MD.U.L.printUserInfo(); //用户头部头像个人信息
- _backgroudimage = U.MD.D.B.split(US.userInfo.UserBackGroundImage); //拆分用户的背景图片,里面包含了图片地址和展示的格式
- U.MD.D.B.setBackgroundImage(_backgroudimage[0], _backgroudimage[1]); //设置用户背景图,以后需修改为设置用户桌面信息
- }
- //Cookie登录,即使密码错误也不弹出错误信息。
- if (_str && iscookie !== true) {
- U.alert(_str); //登录提示处理
- }
- //如果弹出了登录框,那么给登录框进行处理
- if ($("#U_MD_HomeC_Pop")[0]) {
- //登录框的样式还原
- $("#U_MD_HomeC_Pop")[0].close(); //关闭登陆款
- }
- U.MD.O && U.MD.O.P.connect();
- }
- // _str = "登录成功";
- }
- if (_str) {
- U.alert(_str);
- }
- }
- /**
- * 判断用户是否登录如果未登陆则弹出登陆框
- *
- */
- U.MD.U.L.isLogin = function (fun) {
- if (!US.userInfo.userid) { //判断用户id是否存在
- U.MD.U.L.login(fun); //用户登录函数
- return true; //用户未登录返回false
- }
- return false; //用户登录返回true
- }
- /**
- * 登录调用回调使用
- * @param {function} 回调函数
- *
- */
- U.MD.U.L.setLoginCallBack = function (fun) {
- //未登录要求登录
- if (U.MD.U.L.isLogin()) {
- U.MD.U.L.loginCallBack = fun;
- }
- //登录直接转发
- else {
- fun();
- return true;
- }
- }
- //#endregion
- //#region cookie登录
- /*
- 功能:1473.cn域下各个应用的用户通过Cookie自动登录,Cookie登录入口。支持跨域
- */
- U.MD.U.L.cookieLogin = function () {
- var _cookie = U.MD.U.L.getCookieByUserId(), //获取用户的云端Cookie,选取最后一个账号进行登录。
- _address = US.city.userAllLocation || ""; //找到自己登陆用户的地址
- //如果获取到cookie的值,那么就进行cookie登陆
- if (_cookie && _cookie.userid && _cookie.userid.length == 36) {
- U.MD.U.L.isLogining = "cookie"; //设置cookie登陆状态
- U.A.Request(US.USER, ["LoginByCookie", _cookie.userid, _cookie.username], U.MD.U.L.defaultCallBack, ["", _address]); //调用cookie登陆处理
- }
- }
- /*
- 功能:获取用户cookie,云端cookie关键字为usestudiosso,格式为
- Loginid:登录id
- userstamp:账号13928417148的值为"1364812396"?奇怪?
- userid:云端用户id
- username:云端用户名
- 如果不传入参数,默认获取最后一个,否则获取传入userid的账号进行登录。
- 参数一:userid代表用户id。传入用户id,则判断cookie中是否有该账号,并使用该账号登录。
- */
- U.MD.U.L.getCookieByUserId = function (userid) {
- var i, _cookiearr = U.MD.U.L.cookieToArray("usestudiosso"); //获取保存的cookie值。
- //如果传入参数userid并且cookie中有userid。则判断是否是自己的账号登录。
- if (_cookiearr.userid) {
- //如果传了userid,那么就根据userid找
- if (userid) {
- //数组里匹配
- for (i = 0; i < _cookiearr.userid.length; i++) {
- if (_cookiearr.userid[i] == userid) {
- break;
- }
- }
- }
- //否则找到最后一个登陆用户的信息
- else {
- //允许多用户登录,则用户id减少一?
- i = _cookiearr.userid.length - 1;
- }
- //循环所有Cookie。
- for (var c in _cookiearr) {
- //对中文进行解密。_cookiearr[c]中可能有多个userid,只获取最后选中的第i个。返回的数据在这里做了处理。
- _cookiearr[c] = decodeURIComponent(_cookiearr[c][i]);
- }
- }
- //返回的集合包括了Loginid:登录iduserstamp:账号13928417148的值为"1364812396"?奇怪?userid:云端用户idusername:云端用户名
- return _cookiearr;
- }
- /**
- *1473cookie格式专用
- * 把形如:"userid=72854d28-f45c-48d7-92b7-3cd933e03022&username=13928417148&Loginid=fd02976d-993b-4437-bbd9-5efa99802c8f&userstamp=1364812396"的cookie转换为json对象。函数名有问题。
- 得到的形式为:_UAE.Loginid可得到用户id。
- *
- * @param {string} 获取cookie的key对应的值 如usestudio=aa=ff&ss=aa 的usestudio里的 aa=ff&ss=aa
- * @return {object} {key:[value1,value2]}
- */
- U.MD.U.L.cookieToArray = function (key) { //获取cookie
- var i, //循环初始化
- _cookieobj = {}, //初始化对象 作为返回值
- _cookie = U.UF.Cookie.get("usestudiosso"); //获取用户指定的Cookie值
- if (_cookie) { //是否存在
- _cookie = _cookie.split("&");
- for (i = 0; i < _cookie.length; i++) { //循环对应的值
- _cookie[i] = _cookie[i].split("="); //切分key和value
- //如果定义了cookie值的接受数组,则不再重复定义。_cookie[i][0]相当于key,例如userid
- if (!_cookieobj[_cookie[i][0]]) {
- _cookieobj[_cookie[i][0]] = [];
- }
- _cookieobj[_cookie[i][0]].push(decodeURIComponent(_cookie[i][1])); //生成{key:[value1,value2]}
- }
- }
- return _cookieobj;
- }
- //#endregion
- //#region 登录数据使用
- /**
- * 为了以后的扩展,给其他系统获取完整的用户信息,获取用户登录数据,后面还有一个登陆获取用户个人信息。好友信息,及消息通知,逻辑有问题。
- * @param {string} 用户名
- *
- */
- U.MD.U.L.getLoginUserInfo = function (username) {
- U.A.Request(US.USER, ["GetUserLoginData", username], U.MD.U.L.asynGetLoginUserInfo);
- }
- /**
- * 异步获取数据
- * @param {object} ajax返回的数据值
- *
- */
- U.MD.U.L.asynGetLoginUserInfo = function (r) {
- r = r.value; //得到登录用户的数据
- US.friend = r; //返回的r里面是用户的好友信息 包括 {"className":好友分组信息,friends:好友信息,group:好友群,groupusers:群好友,recentcontacts:最近联系人,unreadfirendmessage:未读好友消息,unreadgroupmessage:未读群消息,commonfriend:推荐好友}
- U.MD.U.L.initUserLogin(US.userInfo); //登录初始化应用
- if (U.MD.D && U.MD.D.IsUseStudio || $("#usestudio_server")[0]) {
- U.MD.F && U.MD.F.N.friendMessageHandle([r.unreadfirendmessage, r.unreadgroupmessage]); //用户消息区域
- }
- }
- /**
- * 添加用户初始化资料信息
- * @param {array} 登录用户的数据
- *
- */
- U.MD.U.L.setUserInfo = function (userinfo) {
- US.userInfo = userinfo[0]; //给用户信息全局变量赋值。
- US.userInfo.LoginId = userinfo[2]; //用户前后台更新数据唯一识别id
- US.friend.onlinefirendinfo = userinfo[1]; //添加在线信息。
- return US.userInfo;
- }
- //登录成功执行事件
- U.MD.U.L.initUserLogin = function () {
- var _userinfo = US.userInfo; //初始化用户资料
- U.MD.UI && U.MD.UI.flashEmptyUpload && U.MD.UI.flashEmptyUpload(); //清理上传文件
- //登录有的其他回调,如,登陆后直接打开好友聊天等
- if (U.UF.C.isFunction(U.MD.U.L.loginCallBack)) {
- U.MD.U.L.loginCallBack(_userinfo); //回调处理
- }
- U.MD.F && U.MD.F.initFriend(); //初始化好友
- //如果没有用url指引,同时又是1473的项目,那么弹出云盘,否则只是加载数据
- if (U.MD.D && U.MD.D.IsUseStudio) {
- U.MD.D.I.openApplication("disk", { "userid": _userinfo.UserId, "directoryid": US.FTPFOLDERID }); //弹出云盘的数据。
- }
- //外部加载1473框架的都会带有usestudio_server 这个元素,当用户没有填写邮箱信息的时候,同时是在1473主站点的,那么就弹出用户
- if (!US.userInfo.UserEmail && !$("#usestudio_server")[0]) {
- U.MD.U.P.userDataSet(); //用户数据加载
- }
- }
- /**
- * 添加用户登录信息
- *
- */
- U.MD.U.L.addUserAccess = function () {
- //如果用户的城市信息不存在,则添加用户用户城市信息,应该不只是单单判断地址,此处逻辑还需要整理!
- if (US.city.userAllLocation) {
- U.A.Request(US.USER, ["RecordUserClientInfo", US.userInfo.username, "", "", US.city.userAllLocation, ""],
- function () { }); //异步添加地址信息
- }
- }
- /**
- * 打印用户的信息
- *
- */
- U.MD.U.L.printUserInfo = function () {
- var _childel,
- _userinfo = US.userInfo, //用户的信息
- _userimage = U.MD.C.getHeadImage(_userinfo.UserThumbnailImageHead), //获取用户头像
- _el = $("#U_MD_D_BDI"); //头像打印的区域
- if (_el[0]) {
- //设置头部的样式变化
- _el.addAttrArray({
- "className": "U_MD_D_BDI"
- })[0];
- //如果已经有头像了,那么直接修改头像
- if (_el.find("img")[0]) {
- //设置头像处理
- _el.find("img").addAttrArray({
- "onerror": U.MD.C.imgError,
- "title": _userinfo.UserNickName,
- "onclick": function () {
- U.MD.D.I.openApplication("set");
- },
- "src": U.MD.C.getHeadImage(_userinfo.UserThumbnailImageHead)
- });
- }
- //创建头像的处理
- else {
- $$("img", {
- "onerror": U.MD.C.imgError,
- "onerror": U.MD.C.imgError,
- "title": _userinfo.UserNickName,
- "onclick": function () {
- U.MD.D.I.openApplication("set");
- },
- "src": U.MD.C.getHeadImage(_userinfo.UserThumbnailImageHead)
- }, _el[0])
- }
- _childel = $("#U_MD_D_BDL").Child();
- _childel[0].style.display = _childel[1].style.display = "none";
- _childel[2].style.display = "block";
- }
- }
- //#endregion
- //#region 退出
- /**
- * 退出登录提示
- *
- * @param callback {function} 登出回调函数
- */
- U.MD.U.LO.logoutSystem = function (callback) {
- //如果用户登录的情况
- if (US.userInfo.userid) {
- //弹出退出登录的提示
- U.UF.UI.confirm("是否退出" + US.userInfo.username + "账号", function () {
- U.MD.U.LO.logout(callback);
- });
- }
- }
- //确定注销
- //b为是否清除cookie的参数。如果传递false,则清除cookie。
- /**
- * 退出登录的处理
- *
- */
- U.MD.U.LO.logout = function (callback) {
- // if (U.MD.O) {
- // //获取office内容
- // // U.A.Request(US.SCOKET, ['logout', US.userInfo.userid, US.pageId], function () { });
- // }
- U.MD.U.LO.clearCookie(function () {
- U.MD.U.LO.emptyUserInfo(); //清楚用户的前端的数据
- if ($('#UI_Login')[0]) {
- $('#UI_Login')[0].contentWindow.U.MD.U.OT.logout(); //如果是第三方平台登录的,在第三方平台进行下线
- }
- //清理图形界面的处理
- if ($("#U_MD_D_BDI")[0]) {
- //清空所有的应用
- U.MD.U.LO.logoutStyle(); //清除注册样式
- U.MD.D.T.taskbar.clear(); //任务栏清除
- U.UF.UI.form.closeWindows(); //关闭所有的窗体
- }
- U.UF.C.isFunction(callback) && callback();
- }); //退出账号的cookie
- }
- /**
- * 用户退出指定帐号 清理cookie
- *
- */
- U.MD.U.LO.clearCookie = function (callback) {
- //判断用户是否登录
- if (US.userInfo.userid) {
- var _iscookie = U.UF.Cookie.get("usestudiosso", "userid").indexOf(US.userInfo.userid) > -1; //判断cookie是否还存在用户的id
- //如果存在cookie的出力
- if (_iscookie) {
- //调用后台,让用户注销
- U.A.Request(US.USER, ["UserOffline", US.userInfo.userid], function () { U.UF.C.isFunction(callback) && callback(); });
- } else {
- U.UF.C.isFunction(callback) && callback();
- }
- }
- }
- /**
- * 清空用户前端的信息
- *
- */
- U.MD.U.LO.emptyUserInfo = function () {
- US.userInfo = {}; //用户数据清空
- US.friend = {}; //用户好友信息清空
- if ($("#U_MD_D_BG")[0]) {
- U.MD.D.B.setBackgroundImage(U.MD.D.B.url); //设置默认背景
- }
- }
- /**
- * 注销样式
- *
- */
- U.MD.U.LO.logoutStyle = function () {
- //清楚登录用户的样式
- $("#U_MD_D_BDI").addAttrArray({
- "innerHTML": "",
- "className": "U_MD_D_BDI U_Img"
- });
- //获取子元素
- var _childel = $("#U_MD_D_BDL").childs();
- _childel[0].style.display = _childel[1].style.display = "block"; //显示登录注册
- _childel[2].style.display = "none"; //隐藏提出按钮
- //右边好友框隐藏
- $("#U_MD_F_H_R").css("display", "none");
- //隐藏消息提醒
- $("#U_MD_D_MG_OA").Parent(2).style.display = "none";
- //隐藏所有的窗体
- // $("#U_MD_Home").childs().css("display", "none");
- }
- //#endregion
- //#region 外链登录
- Namespace.register("U.MD.U.OT"); //用户登录的命名空间
- /**
- * 填写登录信息
- *
- * @param {array} 登录值参数
- * @param {array} 回调函数
- */
- U.MD.U.OT.perfectUserInfo = function (userinfo, username) {
- if ($("#U_MD_U_OT_B_Pop")[0]) {
- U.UF.F.windowTopCenter($("#U_MD_U_OT_B_Pop")[0]);
- }
- else {
- var _iframe = $$("iframe", { "style": { "border": "0", "float": "left" }, "id": "U_MD_U_OT_B_Iframe", "name": "UI_Login", "frameborder": "0", "width": "400px", "height": "290px", "src": US.MAINDOMAIN + "/CompleteInformation.htm" });
- new U.UF.UI.form("", _iframe,
- {
- "id": "U_MD_U_OT_B_Pop",
- "style": {
- "width": "400px",
- "height": "340px"
- }
- },
- {
- isdrag: false,
- isstretching: false,
- isenlarge: false,
- isnarrow: false
- });
- //跨域回调设置
- U.UF.DL.iframeLoad(_iframe, function () {
- if ($("#U_MD_HomeC_Pop")[0]) {
- $("#U_MD_HomeC_Pop")[0].close();
- }
- _iframe.contentWindow.U.MD.U.OT.perfectUserInfoInit(userinfo, username); //设置登录回调
- });
- }
- }
- //#endregion
|