Example #1
0
        public async Task <IActionResult> PostVerificarToken([FromBody] TokenViewModel token)
        {
            var tokenValido = new JwtSecurityTokenHandler().CanReadToken(token.Token);

            if (tokenValido)
            {
                var conteudo             = new JwtSecurityTokenHandler().ReadJwtToken(token.Token);
                var claims               = conteudo.Claims.Where(x => x.Type == "nomeCompleto" || x.Type == "login" || x.Type == "email" || x.Type == "celula" || x.Type == "uidNumber");
                var informacoesFormatada = new InformacoesUsuarioViewModel
                {
                    Email        = claims.FirstOrDefault(x => x.Type == "email").Value,
                    NomeCompleto = claims.FirstOrDefault(x => x.Type == "nomeCompleto").Value,
                    Login        = claims.FirstOrDefault(x => x.Type == "login").Value,
                    Celula       = claims.FirstOrDefault(x => x.Type == "celula").Value != null?claims.FirstOrDefault(x => x.Type == "celula").Value.Split(' ')[1] : "",
                    UidNumber    = claims.FirstOrDefault(x => x.Type == "uidNumber").Value
                };
                return(await Task.Run(() => Ok(new { dados = informacoesFormatada, notifications = "", success = true })));
            }
            else
            {
                return(await Task.Run(() => Ok(new { dados = "", notifications = "Token inválido", success = false })));
            }
        }
Example #2
0
        public async Task <IActionResult> BuscarUsuariosAdPorCelula([FromBody] FiltroAdVM filtro)
        {
            InformacoesUsuarioViewModel informacoesFormatada = null;
            List <UsuarioAdVM>          usuarios             = new List <UsuarioAdVM>();
            List <string> filters = new List <string>();

            //var tokenValido = new JwtSecurityTokenHandler().CanReadToken(filtro.Token);
            //if (tokenValido)
            //{
            //var conteudo = new JwtSecurityTokenHandler().ReadJwtToken(filtro.Token);
            //var claims = conteudo.Claims.Where(x => x.Type == "nomeCompleto" || x.Type == "login" || x.Type == "email");
            //informacoesFormatada = new InformacoesUsuarioViewModel
            //{
            //    Email = claims.FirstOrDefault(x => x.Type == "email").Value,
            //    NomeCompleto = claims.FirstOrDefault(x => x.Type == "nomeCompleto").Value,
            //    Login = claims.FirstOrDefault(x => x.Type == "login").Value
            //};
            foreach (var item in filtro.Celulas)
            {
                var unicaCelula   = item;
                var celulaFiltrar = "";
                if (unicaCelula.Count() < 3)
                {
                    for (int i = 0; i < 3 - unicaCelula.Count(); i++)
                    {
                        celulaFiltrar += "0";
                    }
                }
                celulaFiltrar += unicaCelula;
                filters.Add("(&(department=CEL*" + celulaFiltrar + "*))||" +
                            "((userAccountControl=512)(userAccountControl=544)(userAccountControl=66048)(userAccountControl=66080)" +
                            "(userAccountControl=262656)(userAccountControl=262688)(userAccountControl=328192)(userAccountControl=328224))");
            }
            using (var cn = new LdapConnection())
            {
                try
                {
                    cn.Connect(_ldapConfig.FirstOrDefault().Hostname, _ldapConfig.FirstOrDefault().Port);
                    cn.Bind(String.Format("stefanini-dom\\{0}", "almintegration"), "stefanini@10");
                    var searchBase = string.Empty;
                    foreach (var item in filters)
                    {
                        var search = cn.Search("DC=stefanini,DC=dom", LdapConnection.SCOPE_SUB, item, new string[] { "sAMAccountName", "department", "cn" }, false);
                        while (search.hasMore())
                        {
                            try
                            {
                                var nextEntry = search.next();
                                var user      = nextEntry.getAttributeSet();
                                usuarios.Add(new UsuarioAdVM
                                {
                                    Login        = user.getAttribute("sAMAccountName").StringValue,
                                    NomeCompleto = user.getAttribute("cn").StringValue,
                                    Celula       = user.getAttribute("department").StringValue.Split('|')[0]
                                });
                            }
                            catch (Exception e)
                            {
                                break;
                            }
                        }
                    }
                    return(await Task.Run(() => Ok(new
                    {
                        dados = usuarios.OrderBy(x => x.Login).ToList(),
                        notifications = "",
                        success = true
                    })));
                }
                catch (LdapException e)
                {
                    return(BadRequest());
                }
                //}
            }
            return(BadRequest());
        }