예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
 public IActionResult AssignPermission([FromBody] AssignPermissionViewModel model)
 => OnAction <AssignPermissionViewModel, System.AssignPermissionDto>(model, _systemUserRepo.AssignPermission);