Example #1
0
        public async Task <ActionResult> LoginMobile(LoginMobileViewModel model)
        {
            //if (!ModelState.IsValid)
            //{
            //    return View(model);
            //}
            var errores = new List <string>();

            // errores = ModelState.Values.SelectMany(x => x.Errors.Select(t => t.ErrorMessage)).ToList();
            if (string.IsNullOrEmpty(model.user))
            {
                errores.Add("Debe completar el Nombre");
            }
            if (string.IsNullOrEmpty(model.password))
            {
                errores.Add("Debe completar el Password");
            }
            if (errores.Count > 0)
            {
                return(Json(new { Result = "", Error = errores }, JsonRequestBehavior.AllowGet));
            }
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.user, model.password, true, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
            {
                var     db  = new ApplicationDbContext();
                Usuario usu = new Repositorio <Usuario>(db).TraerTodos().Where(x => x.ApplicationUser.Email == model.user).FirstOrDefault();
                model.Id       = new Guid(usu.ApplicationUser.Id);
                model.NickName = usu.NickName;
                model.token    = Guid.NewGuid().ToString();
                usu.Token      = model.token;
                new Repositorio <Usuario>(db).Modificar(usu);

                return(Json(new { Result = model, Error = "" }, JsonRequestBehavior.AllowGet));
            }

            case SignInStatus.LockedOut:
                errores.Add("Invalid login attempt.");
                return(Json(new { Result = "", Error = errores }, JsonRequestBehavior.AllowGet));

            //case SignInStatus.RequiresVerification:
            //    return RedirectToAction("SendCode", new { ReturnUrl = "", RememberMe = true });
            case SignInStatus.Failure:
            default:
                errores.Add("Invalid login attempt.");
                return(Json(new { Result = "", Error = errores }, JsonRequestBehavior.AllowGet));
            }
        }
        public async Task <ActionResult> LoginMobile(LoginMobileViewModel model, string returnUrl)
        {
            var error = new List <object>();
            var db    = new ApplicationDbContext();

            //var test = db.Usuarios.Where(x => x.UsuarioApp.Id == userName);
            //var test2 = db.Usuarios.Where(x => x.UsuarioApp.PasswordHash.Equals(model.Password));


            if (!ModelState.IsValid)
            {
                if (string.IsNullOrWhiteSpace(model.Email))
                {
                    error.Add(new { Input = "Email", Msg = "El campo mail esta vacio" });
                }
                if (string.IsNullOrWhiteSpace(model.Password))
                {
                    error.Add(new { Input = "Password", Msg = "El campo password esta vacio" });
                }
                //if ()
                //    error.Add(new { Input = "Password", Msg = "El campo password esta vacio" });
                return(Json(new { Result = "", Error = error }, JsonRequestBehavior.AllowGet));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                model.isMobile = true;
                if (model.isMobile == true)
                {
                    var userId      = User.Identity.GetUserId();
                    var usuarioData = db.Usuarios.FirstOrDefault(pr => pr.UsuarioApp.Id == userId && pr.UsuarioApp.Email == model.Email);
                    model.Token = Guid.NewGuid().ToString();

                    var Response = new
                    {
                        Respuesta = "OK",
                        UsuarioId = userId,
                        Nick      = usuarioData.NickName,
                        Recordar  = model.RememberMe,
                        Token     = usuarioData.Token
                    };
                    return(Json(new { Response, Error = "" }));
                }
                return(RedirectToLocal(returnUrl));

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

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

            case SignInStatus.Failure:
            default:
                if (model.isMobile == true)
                {
                    var userId      = User.Identity.GetUserId();
                    var usuarioData = db.Usuarios.FirstOrDefault(pr => pr.UsuarioApp.Id == userId);
                    if (string.IsNullOrWhiteSpace(model.Email))
                    {
                        error.Add(new { Input = "Email", Msg = "Debe ingresar un Email valido" });
                    }
                    if (string.IsNullOrWhiteSpace(model.Password))
                    {
                        error.Add(new { Input = "Password", Msg = "Debe ingresar un password valido" });
                    }
                    else
                    {
                        error.Add(new { Input = "Usuario", Msg = "Usuario/ContraseƱa invalido" });
                    }

                    return(Json(new { Result = "", Error = error }, JsonRequestBehavior.AllowGet));
                }
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }