Beispiel #1
0
        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, "角色绑定权限失败,请重试");
            }
        }
Beispiel #2
0
        /// <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);
        }