Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }