public ActionResult Login(string returnUrl)
 {
     LoginViewModel model = new LoginViewModel();
     ViewBag.Title = Resources.LoginResource.PageTitle;
     ViewBag.ReturnUrl = returnUrl;
     return View(model);
 }
        public ActionResult Checklogin(LoginViewModel model, string returnUrl)
        {
            ViewBag.Title = Resources.LoginResource.PageTitle;
            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
            //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

            Encriptador Encrypt = new Encriptador();

            using (SeguricelEntities db = new SeguricelEntities())
            {
                Encrypt.InicioClaves("53gur1cel!n37", "4LC_C0MUN1C4C10N35@S3GUR1C3L!N37", "53gur1c3l!4lcC0mun1c4c10n35@s3gur1c3lgm41l!c0m", 5);
                string encryptedPassword = Encrypt.Encriptar(model.Password, Encriptador.HasAlgorimt.SHA1, Encriptador.Keysize.KS256);

                Usuario dataUsuario = (from u in db.Usuario
                                       where (u.CodigoUsuario == model.Email | u.Email == model.Email) && u.ClaveUsuario == encryptedPassword
                                       select u).FirstOrDefault();

                if (dataUsuario != null)
                {
                    switch ((eEstadoUsuario)dataUsuario.IdEstadoUsuario)
                    {
                        case eEstadoUsuario.Conectado:
                        case eEstadoUsuario.Activo:
                            string[] utz = model.UserTimeZone.Split(':');
                            int hourZone;
                            int minZone;
                            if (utz.Length <= 0)
                            {
                                hourZone = 0;
                                minZone = 0;
                            }
                            else
                            {
                                hourZone = int.Parse(utz[0]);
                                minZone = int.Parse(utz[1]);
                            }

                            CustomPrincipalSerializeModel serializeModel = new CustomPrincipalSerializeModel()
                            {
                                Email = dataUsuario.Email,
                                Estado = (eEstadoUsuario)dataUsuario.IdEstadoUsuario,
                                Id = dataUsuario.IdUsuario,
                                FechaUltimaConexion = DateTime.UtcNow,
                                Name = dataUsuario.Nombre,
                                IdTipoUsuario = dataUsuario.IdTipoUsuario,
                                HoursTimeZone = hourZone,
                                MinutesTimeZone = minZone,
                                Culture = Request.UserLanguages[0],
                                DefaultCulture = "es-VE"
                            };

                            string _jsonUserData = JsonConvert.SerializeObject(serializeModel);
                            FormsAuthenticationTicket authTicket =
                                new FormsAuthenticationTicket(1, serializeModel.Email,
                                    DateTime.UtcNow.AddHours(-4).AddMinutes(-30),
                                    DateTime.UtcNow.AddHours(-4).AddMinutes(-15),
                                    false, _jsonUserData);
                            string encTicket = FormsAuthentication.Encrypt(authTicket);
                            HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                            bool PrimeraVez = false;

                            /*if (dataUsuario.FechaUltimaConexion == null)
                                PrimeraVez = true;*/
                            PrimeraVez = dataUsuario.PrimeraVez;

                            Response.Cookies.Add(faCookie);
                            Session["user"] = encTicket;

                            if (PrimeraVez)
                                return RedirectToAction("Perfil", "Account");
                            else
                            {
                                return ConectarUsuario(dataUsuario, db);
                            }
                        case eEstadoUsuario.Inactivo:
                            ModelState.AddModelError("", Resources.LoginResource.LoginFailedMessageInactivo);
                            break;
                        case eEstadoUsuario.Bloqueado:
                            ModelState.AddModelError("", Resources.LoginResource.LoginFailedMessageBloqueado);
                            break;
                        default:
                            ModelState.AddModelError("", Resources.LoginResource.LoginFailedMessage);
                            break;
                    }
                }
                else
                {
                    ModelState.AddModelError("", Resources.LoginResource.LoginFailedMessage);
                }
            }
            return View(model);

        }
 public ActionResult ForgotPassword(LoginViewModel model)
 {
     
     return RedirectToAction("ForgotPassword", "Account");
 }