В моем приложении у меня есть панель навигации с меню. В меню у меня есть 3 выпадающих меню.Изменить _layout для разных пользователей
- общественного
- для обычных пользователей
- админов
Доступ ограничен, но меню открыты для всех. Я хочу скрыть ненужный элемент для обычных и общедоступных (anynymous) пользователей.
для identyfication Я использую окно Войти имена
Чтобы получить роль пользователя, я с просьбой к базе данных и запросы возвращается, если пользователь является обычным пользователем или администратора.
Мое решение:
public bool CheckIfAdmin(string login)
{
bool admin = false;
EquipmentEntities db = new EquipmentEntities();
Tuple<string, string> credentials = GetName(login);
int RoleId = db.Users.Where(w => w.Name == credentials.Item1).Where(w => w.Surname == credentials.Item2).Select(s => s.RoleId).FirstOrDefault();
if(RoleId==1)
{
admin = true;
}
return admin;
}
и почти тот же код для проверки, если пользователь
в методах:
if(CheckIfAdmin(login)){
ViewBag.Role=1;
}
else if(CheckIfUser(login)){
ViewBag.Role=2;
}
и, наконец, в макете:
@if (ViewBag.Role==1)
{
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Admin<b class="caret"></b></a>
<ul class="dropdown-menu">
//MEnu
</ul>
</li>
}
и почти такой же c ода для второго выпадающего я хочу спрятаться. Это работает, но в этот момент мне нужно поставить проверки на роль в каждом методе. Его большое количество избыточного кода. Может ли кто-нибудь предложить мне, как сделать это лучше?