コード例 #1
0
        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)));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: BaseController.cs プロジェクト: tjel/infpro-8
        // 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());
        }
コード例 #4
0
ファイル: BaseController.cs プロジェクト: tjel/infpro-8
        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();
            }
        }