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 }))); } }
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()); }