public async Task <IActionResult> AssignPermission(AssignPermissionViewModel model) { var role = await _roleManager.FindByIdAsync(model.Id.ToString()); if (role == null) { return(NotFound(model.Id)); } if (ModelState.IsValid) { var permissions = new List <string>(); foreach (string key in Request.Form.Keys) { if (key.StartsWith("Permission.", StringComparison.Ordinal) && Request.Form[key] == "on") { string permissionName = key.Substring("Permission.".Length); permissions.Add(permissionName); } } await _roleManager.UpdatePermissionsAsync(role, permissions); Notifier.Success("你已成功编辑一条角色权限记录。"); return(RedirectToAction(nameof(List))); } return(await BuildPermissionDisplayAsync(model.Id)); }
public IActionResult AssignPermission(AssignPermissionViewModel viewModel) { var response = ResponseModelFactory.CreateInstance; var entity = _sysRoleRepo.FindEntity(viewModel.RoleId); if (entity == null) { response.SetNotFound("角色不存在"); return(Ok(response)); } //如果是超级管理员则不写如角色权限映射表,(读取时直接跳过,默认所有权限) if (entity.IsSuperAdministrator.Value) { response.SetSuccess(); return(Ok(response)); } string sql = "delete [Zero].[dbo].[Sys_RolePermission] where RoleId=@id"; DbParameter parameter = new SqlParameter("@id", viewModel.RoleId); //先删除原有的 _sysRolePermissionRepo.ExecuteBySql(sql, parameter); if (viewModel.Permissions != null && viewModel.Permissions.Count > 0) { //所有权限 var entityList = _sysPermissionRepo.FindList(); //筛选传递过来权限id,数据库中存在往里面添加,因为会把选中的上级也传过来 List <Sys_RolePermission> addRolePermission = new List <Sys_RolePermission>(); viewModel.Permissions.ForEach(x => { if (entityList.Where(e => e.Id == x).Any()) { addRolePermission.Add(new Sys_RolePermission { Id = NumberNo.SequentialGuid(), PermissionId = x, RoleId = viewModel.RoleId }); } }); //上级也添加 //var repmissionList = viewModel.Permissions.Select(x => new Sys_RolePermission //{ // Id = NumberNo.SequentialGuid(), // PermissionId = x, // RoleId = viewModel.RoleId //}).ToList(); _sysRolePermissionRepo.Insert(addRolePermission); if (_unitOfWork.Save()) { response.SetSuccess(); } else { response.SetFailed(); } } return(Ok(response)); }
public IActionResult AssignPermission([FromBody] AssignPermissionViewModel model) => OnAction <AssignPermissionViewModel, System.AssignPermissionDto>(model, _systemUserRepo.AssignPermission);