Example #1
0
        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));
        }
Example #2
0
        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."));
        }