void LogOutSessionAsync(string sessionId)
 {
     new Thread(new ThreadStart(() =>
     {
         using (var db = new AlumniDbContext())
         {
             try
             {
                 var session = db.UserSessions.Where(s => s.SessionId == sessionId)
                                 .ToList().Last();
                 if (session != null)
                 {
                     session.End = DateTime.UtcNow;
                     db.SaveChanges();
                 }
             }
             catch { }
         }
     })).Start();
 }
        void LogSessionAsync(string browser, string ip, User user, string sessionId)
        {
            new Thread(new ThreadStart(() =>
            {
                try
                {
                    using (var db = new AlumniDbContext())
                    {
                        var session = new Session();
                        session.Browser = browser;
                        session.IPAddress = ip;
                        session.UserName = user.FullName;
                        session.Start = DateTime.UtcNow;
                        session.UserId = user.UserId;
                        session.SessionId = sessionId;

                        var pastActSession = db.UserSessions.Where(s => s.UserId == user.UserId && s.End == null && s.IPAddress ==  ip);
                        foreach (var item in pastActSession)
                        {
                            item.End = DateTime.UtcNow;
                            db.Entry(item).State = System.Data.EntityState.Modified;
                        }

                        db.UserSessions.Add(session);
                        db.SaveChanges();
                    }
                }
                catch { }
            })).Start();
        }
Example #3
0
 private static SessionUserInfo GetCurrentUserInfo()
 {
     var httpContext = System.Web.HttpContext.Current;
     var userId = httpContext.Session[SessionKeys.CurrentUserId];
     if (userId == null)
     {
         var context = System.Web.HttpContext.Current;
         var request = System.Web.HttpContext.Current.Request;
         HttpCookie authCookie = request.Cookies[FormsAuthentication.FormsCookieName];
         if (authCookie != null)
         {
             FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
             var roles = authTicket.UserData.Split('|');
             using (var db = new AlumniDbContext())
             {
                 var user = db.Users.Find(int.Parse(authTicket.Name));
                 if (user == null)
                 {
                     return null;
                 }
                 userId = user.UserId;
                 UserSession.UpdateCurrentUser(user.FullName, authTicket.Name);
             }
         }
     }
     return new SessionUserInfo
     {
         Id = int.Parse(userId.ToString()),
         Name = httpContext.Session[SessionKeys.CurrentUserName] as string
     };
 }