Пример #1
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // No cuenta los errores de inicio de sesión para el bloqueo de la cuenta
            // Para permitir que los errores de contraseña desencadenen el bloqueo de la cuenta, cambie a shouldLockout: true
            UsersClient api  = new UsersClient();
            User        user = await api.CheckUserAsync(new User()
            {
                DNI      = model.DNI,
                Password = Utilities.SHA256Encrypt(model.Password)
            });

            Microsoft.AspNet.Identity.Owin.SignInStatus status = SignInStatus.Failure;

            if (user != null)
            {
                status = SignInStatus.Success;
                Utilities.LoggedUser = user;
            }

            switch (status)
            {
            case SignInStatus.Success:
                return(RedirectToAction("Index", "Home"));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Intento de inicio de sesión no válido.");
                return(View(model));
            }
        }