У меня есть 3 таблицы, в которых содержатся местоположения, пользователи и соответствующие им идентификаторы.Я пытаюсь добиться того, чтобы администратор мог искать пользователей в определенном месте.
Короче говоря, я пытаюсь разрешить Сэму, который является Администратором , находить пользователей только в его местоположении (ограниченном его местоположением), поэтому в этом примере Марк, который являетсяобычный пользователь находится в HeadLocation
и Location1
и может быть найден Сэмом.
Таблица пользователей
|---------------------------------|
| UserId | Role | FName |
|---------------------------------|
| 1 | Admin | Sam |
Таблица OfficeUser
|---------------------------------------|
| OfficeUserId | OfficeId | UserId |
|---------------------------------------|
| 55 | 1 | 1 |
Таблица Office
|----------------------------------------------|
| OfficeId | HeadOfficeId | LocNames |
|----------------------------------------------|
| 1 | null | HeadLocation |
|----------------------------------------------|
Код
[HttpGet]
public IActionResult SearchUsers(string searchUser, string id)
{
//userId from claims
var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;
//gets userId for users with role of admin
var admin = _context.User.FirstOrDefault(a => a.Role == "Admin")?.UserId.ToString();
if (adminExists && admin == userId)
{
//This is where I'm unclear...
var search = from a in _context.OfficeUser
join b in _context.Office
on a.OfficeId equals a.OfficeId
select new
{
a.UserId,
//trying to get names per locations
};
if (search == null)
{
return NotFound();
}
if (!String.IsNullOrEmpty(searchUser))
{
search = search.Where(a => a.FName.Contains(searchUser));
}
else
{
return NotFound("No Users Found");
}
}
return Ok(search);
}