Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }