コード例 #1
0
        public async Task <IEditPermissionViewModel <TRole, TViewModel> > GetEditPermissionViewModel <TRole, TViewModel>(string userId, string roleId) where TViewModel : class, new()
        {
            var user = await _userRepository.GetAsync(userId);

            var userRolePermissions = user.Roles.FirstOrDefault(ur => ur.RoleId == roleId).Role.Permissions;

            var model = new EditPermissionViewModel
            {
                UserId = userId,
                Role   = _roleRepository.Get(roleId),
                RoleId = roleId
            };

            var allPermissions = await _permissionManagerFacade.GetAll();

            model.Permissions = allPermissions.Select(p => new IdentityPermissionViewModel
            {
                Description = p.Description,
                Id          = p.Id,
                Name        = p.Name,
                IsSelected  = userRolePermissions.Select(rp => rp.PermissionId).Contains(p.Id)
            });

            return(model as IEditPermissionViewModel <TRole, TViewModel>);
        }
コード例 #2
0
        public async Task <IActionResult> EditPermission(int id)
        {
            var viewModel = new EditPermissionViewModel();

            var response = await _adminService.GetPermission(new GetPermissionRequest()
            {
                Id = id
            });

            if (!response.IsSuccessful)
            {
                AddNotifications(response);
                return(View(viewModel));
            }

            viewModel.Key     = response.Permission.Key;
            viewModel.Request = new UpdatePermissionRequest()
            {
                Id          = response.Permission.Id,
                Name        = response.Permission.Name,
                Description = response.Permission.Description,
                GroupName   = response.Permission.Group_Name,
            };

            return(View(viewModel));
        }
コード例 #3
0
        public async Task <JsonResult> EditPermissionPartialView(EditPermissionViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new { success = false, message = "Model is not valid" }));
            }

            var entity = _applicationDbContext.Permissions.SingleOrDefault(x => x.Id == model.PermissionId);

            if (entity == null)
            {
                return(Json(new { success = false, message = "Permission not found" }));
            }

            entity.Changed        = DateTime.Now;
            entity.Description    = model.Description;
            entity.PermissionName = model.PermissionName;

            try
            {
                await _applicationDbContext.SaveChangesAsync();

                //var onlineUsers = hub.GetOnlineUsers();
                //await User.RefreshOnlineUsersClaims(ApplicationDbContext, signInManager, onlineUsers);
                return(Json(new { success = true, message = "Save successful " }));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
コード例 #4
0
        public async Task <ActionResult> EditPermission(EditPermissionViewModel model)
        {
            var result = await _roleRepository.UpdateRolePermissions <IdentityPermissionViewModel>(model);

            if (result.Succeeded)
            {
                return(RedirectToAction("EditPermission", new { userId = model.UserId, roleId = model.RoleId, message = UsersMessageId.PermissionsAddedSuccess }));
            }
            AddErrors(result);
            return(View(model));
        }
コード例 #5
0
        public async Task Edit_permission_should_return_model()
        {
            var model = new EditPermissionViewModel() as IEditPermissionViewModel <IdentityRole, IdentityPermissionViewModel>;

            _mappingManager.Setup(x => x.GetRolePermissionsMapper()
                                  .GetEditPermissionViewModel <IdentityRole, IdentityPermissionViewModel>("", ""))
            .Returns(Task.FromResult(model));

            var result = await _controller.EditPermission("", "") as ViewResult;

            Assert.That(result.ViewData.Model, Is.EqualTo(model));
        }
コード例 #6
0
        public async Task Edit_permission_should_rederict_edit_permission_action_whith_success_message()
        {
            var model = new EditPermissionViewModel();

            _roleRepository.Setup(x => x.UpdateRolePermissions(model))
            .Returns(Task.FromResult(IdentityResult.Success));

            var result = await _controller.EditPermission(model) as RedirectToRouteResult;

            Assert.That(result.RouteValues["action"], Is.EqualTo("EditPermission"));
            Assert.That(result.RouteValues["message"], Is.EqualTo(UsersMessageId.PermissionsAddedSuccess));
        }
コード例 #7
0
        public async Task <IActionResult> EditPermission(UpdatePermissionRequest request)
        {
            if (ModelState.IsValid)
            {
                var response = await _adminService.UpdatePermission(request);

                if (response.IsSuccessful)
                {
                    AddNotifications(response);
                    return(RedirectToAction(nameof(AdminController.PermissionManagement)));
                }
                AddFormErrors(response);
            }
            var viewModel = new EditPermissionViewModel(request);

            return(View(viewModel));
        }
コード例 #8
0
        public IActionResult EditPermissionPartialView(Guid?id)
        {
            if (!id.HasValue)
            {
                return(NotFound());
            }

            var permission = _applicationDbContext.Permissions.AsNoTracking().FirstOrDefault(x => x.Id == id);

            if (permission == null)
            {
                return(NotFound());
            }

            var model = new EditPermissionViewModel
            {
                Description    = permission.Description,
                PermissionName = permission.PermissionName,
                PermissionId   = permission.Id
            };

            return(PartialView("Partial/EditPermissionPartialView", model));
        }
コード例 #9
0
        public async Task <ActionResult> Edit([Bind(Include = "Name,Id")] EditPermissionViewModel editPermission, params string[] selectedRole)
        {
            if (ModelState.IsValid)
            {
                var permission = await PermissionManager.FindByIdAsync(editPermission.Id);

                if (permission == null)
                {
                    return(HttpNotFound());
                }

                permission.Name = editPermission.Name;

                var permissionRoles = await PermissionManager.GetRolesByIdAsync(permission.Id);

                selectedRole = selectedRole ?? new string[] { };

                var result = await PermissionManager.AddToRolesAsync(permission.Id, selectedRole.Except(permissionRoles).ToArray <string>());

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", result.Errors.First());
                    return(View());
                }
                result = await PermissionManager.RemoveFromRolesAsync(permission.Id, permissionRoles.Except(selectedRole).ToArray <string>());

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", result.Errors.First());
                    return(View());
                }
                return(RedirectToAction("Index"));
            }
            ModelState.AddModelError("", "Something failed.");
            return(View());
        }
コード例 #10
0
ファイル: RoleRepositoryTest.cs プロジェクト: Jurabek/Blog
        public async Task UpdateRolePermissionsShouldSuccess()
        {
            var    repository = Repository as RoleRepository;
            string roleId     = Guid.NewGuid().ToString("N");
            var    role       = new IdentityRole {
                Id = roleId
            };

            var permission1Id = Guid.NewGuid().ToString("N");
            var permission1   = new IdentityPermission {
                Name = "1", Id = permission1Id
            };

            var permission2Id = Guid.NewGuid().ToString("N");
            var permission2   = new IdentityPermission {
                Name = "2", Id = permission2Id
            };

            var p3 = new IdentityPermission {
                Name = "3"
            };
            var p4 = new IdentityPermission {
                Name = "4"
            };

            var allPermissions = new List <IdentityPermission>
            {
                permission1,
                permission2,
                p3,
                p4
            };

            _permissionManager.Setup(x => x.GetAll())
            .Returns(Task.FromResult(allPermissions.AsEnumerable()));

            _roleManager.Setup(x => x.FindByIdAsync(roleId))
            .Returns(Task.FromResult(role));

            var userPermission1 = new IdentityRolePermission
            {
                Permission   = permission1,
                PermissionId = permission1Id,
                Role         = role,
                RoleId       = roleId
            };

            var userPermission2 = new IdentityRolePermission
            {
                Permission   = permission2,
                PermissionId = permission2Id,
                Role         = role,
                RoleId       = roleId
            };

            role.Permissions = new List <IdentityRolePermission>
            {
                userPermission1,
                userPermission2
            };

            var permissions = new List <IdentityPermissionViewModel>
            {
                new IdentityPermissionViewModel {
                    Id = permission1.Id, IsSelected = false
                },
                new IdentityPermissionViewModel {
                    Id = permission2.Id, IsSelected = false
                },
                new IdentityPermissionViewModel {
                    Id = p3.Id, IsSelected = true
                },
                new IdentityPermissionViewModel {
                    Id = p3.Id, IsSelected = true
                }
            };

            IEditPermissionViewModel <IdentityRole, IdentityPermissionViewModel> model = new EditPermissionViewModel
            {
                Permissions = permissions,
                Role        = role,
                RoleId      = roleId
            };

            var result = await repository.UpdateRolePermissions(model);

            Assert.IsTrue(result.Succeeded);
        }