private void PopularPermissoes(PermissaoViewModel permissaoViewModel) { permissaoViewModel.Menus = _controleAcessoRepositorio .ObterPermissoes(permissaoViewModel.CargoId) .ToList(); }
private List <string> ObterPermissoesUsuario(Usuario usuario) { var permissoes = _controleAcessoRepositorio.ObterPermissoes(usuario.CargoId); var menus = new List <string>(); menus.AddRange(permissoes.Where(c => c.Acessar) .Select(c => string.Concat(c.Descricao, ":", nameof(c.Acessar)))); menus.AddRange(permissoes.Where(c => c.Cadastrar) .Select(c => string.Concat(c.Descricao, ":", nameof(c.Cadastrar)))); menus.AddRange(permissoes.Where(c => c.Atualizar) .Select(c => string.Concat(c.Descricao, ":", nameof(c.Atualizar)))); menus.AddRange(permissoes.Where(c => c.Excluir) .Select(c => string.Concat(c.Descricao, ":", nameof(c.Excluir)))); menus.AddRange(permissoes.Where(c => c.Logs) .Select(c => string.Concat(c.Descricao, ":", nameof(c.Logs)))); if (usuario.Administrador) { menus.Add("Administrador"); } menus.Sort(); foreach (var menu in permissoes) { foreach (var campo in menu.Campos .Where(c => (c.TipoPermissao == TipoPermissao.LEITURA_ESCRITA) && c.MenuId == menu.Id)) { menus.Add($"{menu.Descricao}:{campo.ObjetoId}"); } foreach (var campo in menu.Campos .Where(c => (c.TipoPermissao == TipoPermissao.ACESSO_TOTAL) && c.MenuId == menu.Id)) { menus.Add($"{menu.Descricao}:{campo.ObjetoId}_Full"); } } if (permissoes.SelectMany(c => c.Campos.Where(d => d.TipoPermissao == TipoPermissao.ACESSO_TOTAL)).Any()) { menus.Add("OportunidadeFullControll"); } foreach (var menu in permissoes) { foreach (var campo in menu.Campos .Where(c => (c.TipoPermissao == TipoPermissao.ACESSO_TOTAL) && c.MenuId == 9)) { if (campo.ObjetoId == "Anexo") { if (!menus.Contains("OportunidadeAnexosFullControll")) { menus.Add("OportunidadeAnexosFullControll"); } } } } if (usuario.Externo) { menus.Add("UsuarioExterno"); } if (_ambienteOracleService.Ambiente() == Business.Enums.AmbienteOracle.DEV) { menus.Add("BaseDesenvolvimento"); } else { menus.Add("BaseProducao"); } return(menus); }