public async Task <IActionResult> UpdateRole(string name) { var hasPermission = await _accessManager.HasPermission(User.Identity.Name, _adminSubsystem); if (hasPermission) { var roleEntity = await _userData.FindRole(name); var accesses = await _accessManager.GetAccessibleSubsystemsByRole(name); var subsystemAccesses = _accessManager .GetAllSubsystems() .Select(s => new Option() { Name = s, IsOptionSelected = accesses.Contains(s) }) .ToList(); var viewModel = new PostRoleViewModel() { Name = roleEntity.Name, OldName = roleEntity.Name, SubsystemAccesses = subsystemAccesses }; return(View(viewModel)); } return(Forbid(CookieAuthenticationDefaults.AuthenticationScheme)); }
public async Task <IActionResult> AddRole(PostRoleViewModel model) { if (ModelState.IsValid) { var isAdded = await _userData.AddRole(model.Name); if (!isAdded) { ModelState.AddModelError("", "Роль с таким именем уже существует"); return(View(model)); } var roleEntity = await _userData.FindRole(model.Name); if (roleEntity == null) { ModelState.AddModelError("", "Не удалось добавить роль"); return(View(model)); } var subsystemAccesses = model.SubsystemAccesses .FindAll(o => o.IsOptionSelected) .ToList(); if (subsystemAccesses.Count == 0) { ModelState.AddModelError("", "Выберите хотя бы одну подсистему для доступа"); return(View(model)); } foreach (var subsystem in subsystemAccesses) { _accessManager.IssuePermission(roleEntity, subsystem.Name); } return(RedirectToAction("Index", "Admin")); } return(View(model)); }
public async Task <IActionResult> AddRole() { var hasPermission = await _accessManager.HasPermission(User.Identity.Name, _adminSubsystem); if (hasPermission) { var subsystems = _accessManager .GetAllSubsystems() .Select(s => new Option() { Name = s }) .ToList(); var viewModel = new PostRoleViewModel() { SubsystemAccesses = subsystems }; return(View(viewModel)); } return(Forbid(CookieAuthenticationDefaults.AuthenticationScheme)); }