Ejemplo n.º 1
0
        public async Task <IActionResult> UpdateRole(PostRoleViewModel model)
        {
            if (ModelState.IsValid)
            {
                var isUpdate = await _userData.UpdateRoleName(model.OldName, model.Name);

                if (!isUpdate)
                {
                    ModelState.AddModelError("", "Роль с таким именем уже существует");
                    return(View(model));
                }

                var roleEntity = await _userData.FindRole(model.Name);

                await _accessManager.RemoveAllRolePermissions(model.Name);

                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));
        }