Dostanie sie do Roli z html ef

0

Siemka!
W jaki sposób, mam ograniczyć widoczność linku w menu, chcę żeby był widoczny tylko dla roli administrator. Korzystam ze defaultowego systemu logowania dostarczonego przez ef, widok oczywiście gdy wpisuje link działa tylko dla zalogowanego admina.
Z góry dzięki za pomoc

0

Wrzucasz fragment, który renderuje dany link w blok:

@if (ViewContext.HttpContext.User.IsInRole("NazwaRoli"))
{
  //...
}
1

Ja tylko dodam, że złym rozwiązaniem jest dawanie logiki w widoku.
zamiast if (ViewContext.HttpContext.User.IsInRole("NazwaRoli")) (czyli uzaleznienie wyswietlenia od logiki. W tym przypadku związanej z uprawnieniami),
powinno byc jakies pole w ViewModelu: np. public bool IsElementVisible { get;set; }, którego wartość powinna być ustawiona na wcześniejszej warstwie:

ViewModel.isElementVisible = ViewContext.HttpContext.User.IsInRole("NazwaRoli");

wtedy w widoku po prostu:

@if (Model.IsElementVisible) {
...
}
0

@micc, możesz podać cały przykład, przy założeniu, że menu jest renderowane w pliku _Layout.cshtml? Bo zastanawiam się jak do niego przesłać ViewModel tak, aby mieć pewność, że w każdej akcji całej aplikacji zostanie zwrócony i menu wyświetli się prawidłowo.

2

_Layout.cshtml:

@{Html.RenderAction("TopMenu","LayoutParts");}

LayoutPartsController:

public ActionResult TopMenu() {
    var TopMenuViewModel = new TopMenuViewModel();
    TopMenuViewModel.CosTamVisibile = permissionService.Authorize(cosTam,workContext.CurrentUserId);
    return PartialView(TopMenuViewModel);
}

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