public async Task <ResponseMessage <bool> > BindPermission([FromBody] RoleAndPermissionRequest request) { try { return(await _roleManager.BindPermissionAsync(request, HttpContext.RequestAborted)); } catch (Exception e) { _logger.LogInformation($"角色绑定权限失败,错误信息: {JsonHelper.ToJson(e)}"); throw new ZCustomizeException(ResponseCodeEnum.ServiceError, "角色绑定权限失败,请重试"); } }
/// <summary> /// 角色权限绑定与移除 /// </summary> /// <param name="condtion"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <ResponseMessage <bool> > BindPermissionAsync(RoleAndPermissionRequest condtion, CancellationToken cancellationToken = default(CancellationToken)) { var response = new ResponseMessage <bool>() { Extension = false }; if (condtion is null) { response.Extension = false; } using (var transaction = await _transaction.BeginTransaction()) { try { var roleperssion = new List <Role_Permissionitem>() { }; //原来的角色所有权限 var oldRole_Permission = _rolePermissionStore.IQueryableListAsync().Where(y => y.RoleId == condtion.RoleId); if (await oldRole_Permission.AnyAsync(cancellationToken)) { //直接清空该角色在权限数据 , 再新增提交保存权限 var list = await oldRole_Permission.ToListAsync(cancellationToken); await _rolePermissionStore.DeleteRangeAsync(list); } foreach (var pid in condtion.ListPermissionId) { roleperssion.Add(new Role_Permissionitem { Id = Guid.NewGuid().ToString(), PermissionId = pid, CreateTime = DateTime.Now, RoleId = condtion.RoleId, }); } response.Extension = await _rolePermissionStore.AddRangeEntityAsync(roleperssion); await transaction.CommitAsync(cancellationToken); } catch (Exception e) { await transaction.RollbackAsync(cancellationToken); response.Code = ResponseCodeDefines.ServiceError; response.Message = "绑定角色权限失败,请重试"; } } return(response); }