protected override bool AuthorizeCore(HttpContextBase httpContext) { RedirecionaLogin = false; bool authorize = false; var clientePerfilAcessoModel = new PerfilAcessoLogado(); if (httpContext.Request.Cookies["ClientePerfilAcessoCookie"] != null) { var serializerUser = new JavaScriptSerializer(); clientePerfilAcessoModel = serializerUser.Deserialize <PerfilAcessoLogado>(httpContext.Request.Cookies["ClientePerfilAcessoCookie"].Value); if (httpContext.Session != null) { httpContext.Session.Add("ClientePerfilAcesso", clientePerfilAcessoModel); } } else if (httpContext.Session["ClientePerfilAcesso"] != null) { clientePerfilAcessoModel = (PerfilAcessoLogado)httpContext.Session["ClientePerfilAcesso"]; } else { RedirecionaLogin = true; } if (clientePerfilAcessoModel != null) { AppUserManager.Usuario = clientePerfilAcessoModel; } if (clientePerfilAcessoModel.PaginaAcesso != null && clientePerfilAcessoModel.PaginaAcesso.Where(x => x == (int)paginaAcesso).Any()) { authorize = true; } return(authorize); }
public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid) { var userDBAccess = clienteAcessoRepo.ValidateUser(model.Usuario, model.Senha); if (userDBAccess != null) { var userPerfilAcesso = new PerfilAcessoLogado { IdUsuario = userDBAccess.Id, Nome = userDBAccess.Nome.ToUpperFirstLetter(), Email = userDBAccess.Email, IdCliente = userDBAccess.IdCliente, UsuarioMaster = userDBAccess.UsuarioMaster, LojaRestricao = new List <int>(), PaginaAcesso = new List <int>() }; //define as lojas que pode ver if (userDBAccess.ClienteAcessoLoja.Any()) { userDBAccess.ClienteAcessoLoja.ToList().ForEach(x => { userPerfilAcesso.LojaRestricao.Add(x.IdLoja); }); } //define as paginas que pode ver. userPerfilAcesso.PaginaAcesso.Add((int)PaginaAcessoEnum.AcessoAutorizado); if (userDBAccess.ClienteAcessoPerfil.Any()) { userDBAccess.ClienteAcessoPerfil.ToList().ForEach(x => { userPerfilAcesso.PaginaAcesso.Add(x.IdPaginaAcesso); }); } if (model.LembrarSenha) { var serialize = new JavaScriptSerializer(); var jsonUser = serialize.Serialize(userPerfilAcesso); LimpaCookies(); var cookie = new HttpCookie("ClientePerfilAcessoCookie", jsonUser) { Expires = DateTime.Now.AddDays(15) }; HttpContext.Response.Cookies.Add(cookie); } //guarda os dados do usuario na sessao e cookie Session["ClientePerfilAcesso"] = userPerfilAcesso; AppUserManager.Usuario = userPerfilAcesso; userDBAccess.PrimeiroAcesso = false; userDBAccess.DtUltimoAcesso = DateTime.Now; clienteAcessoRepo.Edit(userDBAccess, userDBAccess.Id); return(RedirectToAction("Index", "Principal_DASHBOARD")); } else { ModelState.AddModelError("Usuario", "Usuário ou senha invalida."); } } return(View(model)); }