public static async Task <ResponseResult <User[]> > GetUsersByQuery(string jwt, string query) { using (var request = new HttpRequestMessage(HttpMethod.Get, $"{URI}/GetUsers")) { var viewModel = new AuthorizedQueryViewModel { JwtFrom = jwt, Value = query }; request.Content = new StringContent(JsonConvert.SerializeObject(viewModel), Encoding.UTF8, "application/json"); var response = await _client.SendAsync(request); if (response.IsSuccessStatusCode) { return(new ResponseResult <User[]>( true, JsonConvert.DeserializeObject <User[]>(await response.Content.ReadAsStringAsync()) )); } } return(new ResponseResult <User[]>(false, null)); }
public async Task <IActionResult> GetUsers(AuthorizedQueryViewModel viewModel) { var values = new List <string>(); var query = viewModel.Value; // Verify the Jwt var fromEmail = await AuthorizationServices.VerifyToken(clientFactory, viewModel.JwtFrom); if (fromEmail != null) { // Search through the repository if (query != null) { // Split all elements by spaces, tabs, and newlines // and search through each one query = query.ToLower(); values.AddRange(query.Split(' ', '\t', '\n')); for (int i = values.Count - 1; i >= 0; i -= 1) { if (values[i].IndexOf(',') != -1) { values.AddRange(values[i].Split(',')); values.RemoveAt(i); } } } return(new JsonResult( userRepo.Where( u => values.Contains(u.Email.ToLower()) || values.Contains(u.FirstName.ToLower()) || values.Contains(u.LastName.ToLower()) ) )); } return(Unauthorized("User token not authorized.")); }