public override async Task OnDisconnectedAsync(Exception exception)
        {
            var connectionId = Context.ConnectionId;
            var name         = Context.User.Identity.Name;
            var userName     = _context.ModuleUser.Where(u => u.Email == name).Select(u => u.LastName + " " + u.FirstName).First();

            var user = _context.LoggedInUsers.Where(u => u.ConnectionId == connectionId).FirstOrDefault();

            if (user != null)
            {
                user.ConnectionId = null;
                _context.LoggedInUsers.Update(user);
                _context.SaveChanges();
                OnLineUser.RemoveUser(connectionId, user.UserId);

                await Clients.AllExcept(connectionId).SendAsync("onUserDisconnectedAsync", user.UserId, userName, OnLineUser.onLineUserList);

                //Clients.AllExcept(connectionId).onUserDisconnected(user.UserId, userName, OnLineUser.onLineUserList);
            }
            await base.OnDisconnectedAsync(exception);
        }
Пример #2
0
        /// <summary>
        /// 生成用户身份令牌
        /// </summary>
        /// <param name="UID">用户UID</param>
        /// <returns></returns>
        public string GenerateAccessToken(long UID)
        {
            var query = db.OnLineUser.Where(o => o.UID == UID).SingleOrDefault();

            if (query == null)
            {
                query            = new OnLineUser();
                query.UID        = UID;
                query.UpdateTime = DateTime.Now;
                db.OnLineUser.Add(query);
            }
            //不为空,则刷新令牌
            int Days = 0;

            int.TryParse(Func.ReadConfig("AccessTokenDays"), out Days);
            if (query.UpdateTime.AddDays(Days) < DateTime.Now)
            {
                query.AccessToken = Guid.NewGuid().ToString();
            }
            query.UpdateTime = DateTime.Now;
            db.SaveChanges();
            return(query.AccessToken);
        }
        public override async Task OnConnectedAsync()
        {
            var connectionId = Context.ConnectionId;
            var name         = Context.User.Identity.Name;
            var user         = await _context.ModuleUser.Where(u => u.Email == name).FirstOrDefaultAsync();

            if (user != null)
            {
                OnLineUser.AddUser(connectionId, user, user.UserId);

                var loggedUser = _context.LoggedInUsers.Where(u => u.UserId == user.UserId).FirstOrDefault();
                if (loggedUser != null)
                {
                    loggedUser.ConnectionId = connectionId;
                    _context.LoggedInUsers.Update(loggedUser);
                }
                else
                {
                    LoggedInUsers newLUser = new LoggedInUsers();
                    newLUser.ConnectionId = connectionId;
                    newLUser.UserId       = user.UserId;
                    _context.LoggedInUsers.AddRange(newLUser);
                }

                var userName = user.LastName + " " + user.FirstName;
                await Clients.Caller.SendAsync("onConnectedAsync", user.UserId, connectionId, userName, OnLineUser.onLineUserList);

                await Clients.AllExcept(connectionId).SendAsync("newUserConnected", user.UserId, userName, OnLineUser.onLineUserList);

                //Clients.Caller.onConnected(user.UserID, connectionId, userName, OnLineUser.onLineUserList);
                //Clients.AllExcept(connectionId).newUserConnected(user.UserID, userName, OnLineUser.onLineUserList);

                _context.SaveChanges();
            }

            await base.OnConnectedAsync();
        }
Пример #4
0
        public MainForm(string name)
        {
            InitializeComponent();

            // 设置远程对象
            _onLineUser.User = new User
            {
                Name = name
            };

            _onLineUser.ReceivedMessageEvent += ReceivedMessage;

            // 配置信息
            var tcpProperties = new Hashtable
            {
                ["name"] = "ChatRoom",
                ["port"] = 0
            };

            // 设置序列化等级
            var tcpClientSinkProvider = new BinaryClientFormatterSinkProvider();
            var tcpServerSinkProvider = new BinaryServerFormatterSinkProvider
            {
                TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full
            };

            // 注册信道
            _channel = new TcpChannel(tcpProperties, tcpClientSinkProvider, tcpServerSinkProvider);
            ChannelServices.RegisterChannel(_channel, false);

            // 获取服务端远程对象
            _chatRoom = (ChatRoomRemote)Activator.GetObject(typeof(ChatRoomRemote), Url);

            // 执行登陆
            // 将客户端远程对象放入服务端的远程对象中
            _onLineUser = _chatRoom.Login(_onLineUser);
        }
Пример #5
0
        public static string LoginSystem(string iuname, string iupwd)
        {
            string       r   = "";
            SysExpireBll seb = new SysExpireBll();
            //if (seb.SysExpire())
            //{
            string jmsz = DES.EncryptDES(iupwd);

            if (!string.IsNullOrEmpty(iuname) && !string.IsNullOrEmpty(iupwd))
            {
                Sys_User        model = new Sys_User();
                Sys_Employee    ee    = new Sys_Employee();
                Sys_EmployeeDpt eed   = new Sys_EmployeeDpt();
                Sys_UserBll     sub   = new Sys_UserBll();
                Sys_EmployeeBll eb    = new Sys_EmployeeBll();
                model = sub.Query(" and uname='" + iuname + "' and upass='******' and ulogin='******'");
                if (model == null)
                {
                    r = "F";
                }
                else
                {
                    r  = "S";
                    ee = eb.Query(" and eno='" + model.eno + "'");
                    if (ee.dcode != "")
                    {
                        Sys_Depment sd = sdb.Query(" and dcode='" + ee.dcode + "'");
                        ee.dname = sd != null ? sd.dname : "";
                    }
                    eed = sedb.Query(" and eno='" + ee.eno + "'");
                    if (eed != null)
                    {
                        ee.etelephone = eed.etelephone;
                    }
                    ee.elname = iuname;
                    HttpContext.Current.Session["LUser"] = ee;
                    Guid       uniqueID = Guid.NewGuid();
                    OnLineUser olu      = new OnLineUser();
                    olu.Gid      = uniqueID;
                    olu.Zt       = 0;
                    olu.Username = model.uname;
                    UserCacheImp uci = new UserCacheImp();
                    if (HttpContext.Current.Request.Cookies["Cuser"] != null)
                    {
                        HttpCookie c*k = HttpContext.Current.Request.Cookies["Cuser"];
                        c*k.Values["cuser"] = System.Web.HttpUtility.UrlEncode(model.uname);
                        HttpContext.Current.Response.AppendCookie(c*k);
                    }
                    else
                    {
                        HttpCookie cookie = new HttpCookie("Cuser");
                        cookie.Values.Add("cuser", System.Web.HttpUtility.UrlEncode(model.uname));
                        HttpContext.Current.Response.AppendCookie(cookie);
                    }
                    uci.Add(olu, "U");
                }
            }
            else
            {
                HttpContext.Current.Session["LUser"] = null;
                r = "F";
            }
            // }
            //else
            //{
            //    r = "F";
            //}
            return(r);
        }
Пример #6
0
        private void BindUser()
        {
            if (Application["online"] == null)
            {
                bl_top.InnerHtml = "IM";
            }
            else
            {
                hidSender.Value = StringHelper.DesDecrypt(Request.Params["login"]);

                Users users = new Users();
                DataTable userTree = users.GetUserTree();

                UserGroup userGroup = new UserGroup();
                DataTable groupList = userGroup.GetUserGroup(hidSender.Value);

                DataRow[] userRow = userTree.Select(
                    string.Format("id = '{0}'", hidSender.Value)
                    );

                if (userRow.Length == 0)
                {
                    hidCnSender.Attributes["outter"] = "1";
                    changepassword.Attributes["outter"] = "1";
                    hidCnSender.Value = StringHelper.DesDecrypt(Request.Params["userName"]);
                    hidCnSender.Attributes["lname"] = StringHelper.DesDecrypt(Request.Params["loginName"]);
                }
                else
                {
                    if (userRow[0]["theme"].ToString().Length > 0)
                    {
                        theme = userRow[0]["theme"].ToString();
                    }

                    hidCnSender.Value = userRow[0]["username"].ToString();
                    hidrevertMessage.Value = userRow[0]["revertMessage"].ToString();
                    hidCnSender.Attributes["lname"] = userRow[0]["loginname"].ToString();
                    hidCnSender.Attributes["outter"] = userRow[0]["isoutter"].ToString();
                    changepassword.Attributes["outter"] = userRow[0]["isoutter"].ToString();
                }

                GroupRelation groupRelation = new GroupRelation();
                DataTable relationList = groupRelation.GetGroupRelation(hidSender.Value);

                userTreeBuilder = new StringBuilder();
                OnLineUser onLineUser = new OnLineUser();

                foreach (DataRow group in groupList.Rows)
                {
                    bool flag = false;

                    if (group["groupname"].ToString().Equals(Profile.unknowGroup))
                    {
                        flag = true;
                        hidSender.Attributes["unknow"] = group["id"].ToString();
                    }

                    CreateGroupTop(group["id"].ToString(), group["groupname"].ToString(), true, flag);

                    DataRow[] relationshiperList = relationList.Select(
                        string.Format("usergroup = '{0}'", group["id"])
                        );

                    userTreeBuilder.AppendFormat(
                           "<ul class=\"group\" id=\"ul{0}Group\" groupid=\"{0}\" style=\"display : none;\">",
                           group["id"]
                           );

                    foreach (DataRow relationshiper in relationshiperList)
                    {
                        DataRow[] user = userTree.Select(
                            string.Format("id = '{0}'", relationshiper["relationshiper"]),
                            "username"
                            );

                        if (user.Length == 1)
                        {
                            int userStatus = onLineUser.GetUserStatus(user[0]["id"].ToString(), Application["online"]);

                            CreateBuddyList(
                                user[0]["id"].ToString(),
                                user[0]["username"].ToString(),
                                user[0]["scratch"].ToString(),
                                user[0]["headImg"].ToString(),
                                userStatus,
                                true
                                );
                        }
                    }

                    userTreeBuilder.Append("</ul>");
                }

                //����Ԥ�����Լ�����
                CreateGroupTop("owner", Profile.ownerGroup, true, true);
                userTreeBuilder.Append("<ul class=\"group\" id=\"ulownerGroup\" groupid=\"owner\" style=\"display : none;\">");

                int status = onLineUser.GetUserStatus(hidSender.Value, Application["online"]);
                statusSettings.Attributes["userstatus"] = status.ToString();

                CreateBuddyList(
                                hidSender.Value,
                                hidCnSender.Value,
                                (userRow.Length > 0 ? userRow[0]["scratch"].ToString() : string.Empty),
                                (userRow.Length > 0 ? userRow[0]["headImg"].ToString() : string.Empty),
                                status,
                                false
                                );

                userTreeBuilder.Append("</ul>");
                buddylist.InnerHtml = userTreeBuilder.ToString();
            }

            if (hidCnSender.Attributes["outter"].Equals("1"))
            {
                imgLogout.Attributes["style"] += "display: none;";
                changepassword.Attributes["style"] = "display:none";
            }

            hidSender.Attributes["theme"] = theme;
            bl_top.InnerHtml = string.Format("IM {0}", hidCnSender.Value);
            hidSender.Attributes["current"] = DateTime.Now.ToString("yyyy-MM-dd");
            imgLogout.Src = string.Format("../include/themes/{0}/window/signoff.png", theme);
            joinroom.Src = string.Format("../include/themes/{0}/window/joinroom.png", theme);
            addbuddy.Src = string.Format("../include/themes/{0}/window/addbuddy.png", theme);
            changepassword.Src = string.Format("../include/themes/{0}/window/changepassword.png", theme);
        }
Пример #7
0
 public SIIS_OnLineUserClass()
 {
     onLineUser = new OnLineUserClass();
 }