public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);
            var httpContext = filterContext.HttpContext;

            if (!httpContext.User.Identity.IsAuthenticated)
            {
                return;
            }

            var pessoa = _pessoaRepositorio.ObterPeloNomeDeUsuario(httpContext.User.Identity.Name);
            var modulo = _moduloRepositorio.ObterPor(Modulo);

            if (modulo == null)
            {
                if (pessoa != null && Modulo.ToUpper().Equals("TODOS") && httpContext.Session.ProgramaAtivo() == null)
                {
                    httpContext.Session.SetProgramaAtivo(pessoa.ProgramasPermitidos[0]);
                }
                return;
            }

            if (modulo.TemPermissao(pessoa.Usuario))
            {
                httpContext.Session.SetProgramaAtivo(httpContext.Session.ProgramaAtivo() ?? pessoa.ProgramasPermitidos[0]);
                return;
            }

            SemAutorizacaoParaAcessarEssaArea(filterContext);
        }
Exemplo n.º 2
0
        public AdicionarPerfilResposta AdicionarPerfil(AdicionarPerfilRequisicao adicionarPerfilRequisicao)
        {
            var adicionarPerfilResposta = new AdicionarPerfilResposta();

            try
            {
                var grupo             = _grupoRepositorio.ObterPor(adicionarPerfilRequisicao.CodigoDoGrupo);
                var modulosPermitidos = adicionarPerfilRequisicao.CodigosDosModulosPermitidos
                                        .Select(codigoDoModulo => _moduloRepositorio.ObterPor(codigoDoModulo)).ToList();
                adicionarPerfilResposta.Perfil = _perfilServico.AdicionarPerfil(adicionarPerfilRequisicao.Nome, grupo, modulosPermitidos);
                _unitOfWork.Commit();
                adicionarPerfilResposta.Sucesso = true;
            }
            catch (RegraException regraException)
            {
                adicionarPerfilResposta.Erros = regraException.Erros;
            }

            return(adicionarPerfilResposta);
        }