public override string[] GetRolesForUser(string username)
        {
            if (!HttpContext.Current.User.Identity.IsAuthenticated)
            {
                return(null);
            }

            //check cache
            var cacheKey = string.Format("{0}_role", username);

            if (HttpRuntime.Cache[cacheKey] != null)
            {
                return((string[])HttpRuntime.Cache[cacheKey]);
            }
            string[] roles = new string[] { };
            using (SIBOACSecurityEntities sdb = new SIBOACSecurityEntities())
            {
                roles = (from a in sdb.SIBOACRoles
                         join b in sdb.SIBOACRolesDeUsuarios on a.Id equals b.IdRol
                         join c in sdb.SIBOACUsuarios on b.IdUsuario equals c.Id
                         where c.Usuario.Equals(username)
                         select a.Nombre).ToArray <string>();
                if (roles.Count() > 0)
                {
                    HttpRuntime.Cache.Insert(cacheKey, roles, null, DateTime.Now.AddMinutes(_cacheTimeoutInMinute), Cache.NoSlidingExpiration);
                }
            }
            return(roles);
        }
 public override bool ValidateUser(string username, string password)
 {
     using (SIBOACSecurityEntities sdb = new SIBOACSecurityEntities())
     {
         var user = sdb.SIBOACUsuarios.Where(a => a.Usuario.Equals(username) && a.Contrasena.Equals(password)).FirstOrDefault();
         if (user != null)
         {
             return(true);
         }
     }
     return(false);
 }
        public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            using (SIBOACSecurityEntities sdb = new SIBOACSecurityEntities())
            {
                var user = sdb.SIBOACUsuarios.Where(a => a.Usuario.Equals(model.Code)).FirstOrDefault();
                //var user = await UserManager.FindByNameAsync(model.Code);

                if (user == null)
                {
                    // Don't reveal that the user does not exist
                    //return RedirectToAction("ResetPasswordConfirmation", "Account");
                    return(View());
                }
                //string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id.ToString());
                try
                {
                    //IdentityResult result = await this.UserManager.ResetPasswordAsync(user.Id.ToString(), model.Code, model.Password);
                    SIBOACUsuarios usuarioModificado = new SIBOACUsuarios();
                    usuarioModificado.Id         = user.Id;
                    usuarioModificado.Usuario    = user.Usuario;
                    usuarioModificado.Email      = user.Email;
                    usuarioModificado.Contrasena = model.Password;
                    usuarioModificado.Nombre     = user.Nombre;

                    db.Entry(usuarioModificado).State = EntityState.Modified;
                    db.SaveChanges();
                    //if ()
                    //{
                    return(RedirectToAction("ResetPasswordConfirmation", "Account"));
                    //}
                    //AddErrors(result);
                }
                catch (Exception ex) { Console.WriteLine(ex.Message); }

                return(View());
            }
        }
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            // Metodo simple, funcionando bien pero Custom Membership es mejor (No borrar)
            //if (!ModelState.IsValid)
            //{
            //    return View(model);
            //}
            //using (SIBOACSecurityEntities sdb = new SIBOACSecurityEntities())
            //{
            //    var user = sdb.SIBOACUsuarios.Where(a => a.Usuario.Equals(model.Usuario) && a.Contrasena.Equals(model.Contrasena)).FirstOrDefault();
            //    if (user != null)
            //    {
            //        FormsAuthentication.SetAuthCookie(user.Usuario, model.Recordarme);
            //        if (Url.IsLocalUrl(returnUrl))
            //        {
            //            return RedirectToLocal(returnUrl);
            //        }
            //        else
            //        {
            //            return RedirectToAction("Profile", "Home");
            //        }
            //    }
            //}
            //ModelState.Remove("Password");
            //ModelState.AddModelError("", "Intento de login fallido.");
            //return View();

            if (ModelState.IsValid)
            {
                var isValidUser = Membership.ValidateUser(model.Usuario, model.Contrasena);
                if (isValidUser)
                {
                    FormsAuthentication.SetAuthCookie(model.Usuario, model.Recordarme);
                    //if (Url.IsLocalUrl(returnUrl))
                    //{
                    //    return Redirect(returnUrl);
                    //}

                    using (SIBOACSecurityEntities sdb = new SIBOACSecurityEntities())
                    {
                        var user = sdb.SIBOACUsuarios.Where(a => a.Usuario.Equals(model.Usuario)).FirstOrDefault();

                        DateTime oldDate = new DateTime(2017, 01, 01);
                        DateTime newDate = DateTime.Now;

                        TimeSpan ts             = newDate - oldDate;
                        int      diferenciaDias = ts.Days;


                        if (model.Usuario == model.Contrasena)
                        {
                            return(RedirectToAction("ResetPassword", "Account", new { code = model.Usuario }));
                        }
                        else
                        {
                            return(RedirectToAction("Index", "Home"));
                        }
                    }
                }
            }
            ModelState.Remove("Password");
            ModelState.AddModelError("", "Usuario o contraseƱa invalidos");
            return(View());
        }