ASP.NET Core - Dane w widoku zależne od roli zalogowanego użytkownika

0

Witam serdecznie.
Kolejny problem, kolejna prośba
W mojej aplikacji udało mi się zaimplementować ASP.NET Core - Identity. Użytkownicy logują się i są dołączani do odpowiednich ról w aplikacji. Potrzeba jest taka, żeby w kontrolerze "Employments" wyświetlane były dane zależne od roli zalogowanego użytkownika, tzn:

public async Task<IActionResult> Index(int id)
        {
            var viewModel = new EmploymentIndexData();
            if (rolazalogowanegoużytkownika == 1)
            {
                 viewModel.Employments = await _context.Employments
                     .Include(e => e.Offices)
                         .ThenInclude(e => e.Departments)
                     .Include(e => e.Positions)
                     .Include(e => e.Statuses)
                   ** .Where(e => e.IDStatus == 1)**
                   .AsNoTracking()
                  .ToListAsync();
            }

            if (rolazalogowanegoużytkownika == 2)
            {
                 viewModel.Employments = await _context.Employments
                     .Include(e => e.Offices)
                         .ThenInclude(e => e.Departments)
                     .Include(e => e.Positions)
                     .Include(e => e.Statuses)
                   ** .Where(e => e.IDStatus == 2)**
                   .AsNoTracking()
                  .ToListAsync();
            }
            return View(viewModel);
        }

Nie potrafię dobrać się do "rolazalogowanegouzytkownika" i czy w ogóle dobrze kombinuje z takim rozwiązaniem?
Z góry dzięki za pomoc

2

Skorzystaj z UserManager (musisz go wstrzyknąć sobie do kontrolera) i jego odpowiednich metod.

Przykład z mojego widoku akurat:

if (await UserManager.IsInRoleAsync(await UserManager.FindByNameAsync(User.Identity.Name), "rola_jakaśtam"))
{
    // zrób coś
}
0
Ktos napisał(a):

Skorzystaj z UserManager (musisz go wstrzyknąć sobie do kontrolera) i jego odpowiednich metod.

Przykład z mojego widoku akurat:

if (await UserManager.IsInRoleAsync(await UserManager.FindByNameAsync(User.Identity.Name), "rola_jakaśtam"))
{
    // zrób coś
}

Bardzo dziękuję!!! Działa tak jak sobie wymarzyłem :):):)
Ślęczę nad książkami, przeczesuje internet, ale to forum jest chyba najlepszym źródłem wiedzy, szczególnie dla osób z dużymi brakami w wiedzy takimi jak ja :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1