public static User GetAuthenticated(bool IncludeNavigationProperties = false) { var db = new ProjectDbContext(); var userCookie = HttpContext.Current.Request.Cookies["LoggedUser"]; var userSession = (UserToLoginViewModel)HttpContext.Current.Session["LoggedUser"]; var user = new User(); UserToLoginViewModel userToLogin = null; if (userSession != null) { userToLogin = userSession; } else if (userCookie != null) { userToLogin = JsonConvert.DeserializeObject <UserToLoginViewModel>(userCookie.Value); } Mapper.Map(userToLogin, user); var authUser = user.Authenticate(true) == ActionStatus.Success ? userToLogin : null; return(authUser == null ? null : (IncludeNavigationProperties ? db.Users.Include(u => u.Avatar).Include(u => u.ActivationRequests).Include(u => u.RemindPasswordRequests).Include(u => u.AddedToFriends).Single(u => u.Id == authUser.Id) : db.Users.Single(u => u.Id == authUser.Id))); }
public static UserToLoginViewModel GetAuthenticated() { var userCookie = HttpContext.Current.Request.Cookies["LoggedUser"]; var userSession = (UserToLoginViewModel)HttpContext.Current.Session["LoggedUser"]; var user = new User(); UserToLoginViewModel userToLogin = null; if (userSession != null) { userToLogin = userSession; } else if (userCookie != null) { userToLogin = JsonConvert.DeserializeObject <UserToLoginViewModel>(userCookie.Value); } Mapper.Map(userToLogin, user); return(user.Authenticate(true) == ActionStatus.Success ? userToLogin : null); }
// Panel Logowania public PartialViewResult GetLoginPanel(string controller, string action) { // Jeśli Użytkownik jest zalogowany i dane są poprawne var userCookie = Request.Cookies["LoggedUser"]; var userSession = (UserToLoginViewModel)Session["LoggedUser"]; if (userCookie != null) { var userToLogin = JsonConvert.DeserializeObject<UserToLoginViewModel>(userCookie.Value); var user = new User(); AutoMapperConfiguration.Mapper.Map(userToLogin, user); if (user.Authenticate(true) == UserActionResult.Success) // (przy użyciu Hasha z cookie, a nie czystego hasła) return PartialView("_LoginPanelLogged", userToLogin); } else if (userSession != null) { var userToLogin = userSession; var user = new User(); AutoMapperConfiguration.Mapper.Map(userToLogin, user); if (user.Authenticate(true) == UserActionResult.Success) return PartialView("_LoginPanelLogged", userToLogin); } return PartialView("_LoginPanel", new UserToLoginViewModel()); }
public string LoginUser([Bind(Include = "UserName,Password,RememberMe")] UserToLoginViewModel userToLogin) { if (!Request.IsAjaxRequest()) throw new Exception("Zapytanie nie zostało wywołane jako zapytanie AJAX"); //Thread.Sleep(5000); var user = new User(); AutoMapperConfiguration.Mapper.Map(userToLogin, user); var isAuthenticated = user.Authenticate(); userToLogin.Id = user.Id; userToLogin.UserName = user.UserName; userToLogin.Password = user.Password; userToLogin.RememberMe = user.RememberMe; switch (isAuthenticated) { case UserActionResult.Success: { userToLogin.Id = user.Id; // Zapisz w Sesji Session["LoggedUser"] = userToLogin; // Zapisz w Cookies if (user.RememberMe) { Response.SetCookie(new HttpCookie("LoggedUser") { Value = JsonConvert.SerializeObject(userToLogin), Expires = DateTime.Now.AddDays(30) }); } return JsonConvert.SerializeObject(new { LoginMessage = "", PartialView = RenderPartialView("_LoginPanelLogged", userToLogin) }); } case UserActionResult.Failure: { return JsonConvert.SerializeObject(new { LoginMessage = $"Niepoprawne Dane. Prób: {4 - user.RetryAttempts}", PartialView = RenderPartialView("_LoginPanel", userToLogin) }); } case UserActionResult.UserDoesNotExist: { return JsonConvert.SerializeObject(new { LoginMessage = "Użytkownik nie istnieje", PartialView = RenderPartialView("_LoginPanel", userToLogin) }); } case UserActionResult.AccountNotActivated: { return JsonConvert.SerializeObject(new { LoginMessage = "Konto Nieaktywne", PartialView = RenderPartialView("_LoginPanel", userToLogin) }); } case UserActionResult.AccountLocked: { int? secondsToUnlock = null; if (user.LockedDateTime != null) secondsToUnlock = (int) (15 * 60 - DateTime.Now.Subtract((DateTime) user.LockedDateTime).TotalSeconds); if (secondsToUnlock < 0) secondsToUnlock = 0; var timeToUnlock = secondsToUnlock != null ? $"{secondsToUnlock / 60:00}" + ":" + $"{secondsToUnlock % 60:00}" // string.Format("{0:00}", secondsToUnlock % 60) : "błąd"; return JsonConvert.SerializeObject(new { LoginMessage = $"Zablokowano. Spróbuj za: {timeToUnlock}", PartialView = RenderPartialView("_LoginPanel", userToLogin) }); } case UserActionResult.DatabaseError: { return JsonConvert.SerializeObject(new { LoginMessage = "Baza Danych nie odpowiada", PartialView = RenderPartialView("_LoginPanel", userToLogin) }); } default: throw new ArgumentOutOfRangeException(); } }