Example #1
0
        /// <summary>
        /// 更新 角色
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task UpdateRole(UpdateRoleInput input)
        {
            var role = await _roleRepository.GetAsync(input.Id);

            input.MapTo(role);
            await _roleManager.UpdateAsync(role);
        }
Example #2
0
        public async Task <string> Update(UpdateRoleInput input)
        {
            input.CheckDataAnnotations().CheckValidResult();
            var role = await _roleRepository.SingleOrDefaultAsync(p => p.Id == input.Id);

            if (role == null)
            {
                throw new UserFriendlyException($"不存在{input.Id}的角色信息");
            }
            role = input.MapTo(role);
            await _roleRepository.UpdateAsync(role);

            return("更新角色成功");
        }
Example #3
0
        public async Task Update(UpdateRoleInput input)
        {
            var role = await _roleRepository.GetAsync(input.Id);

            if (input.Name != role.Name)
            {
                var exsitRole = await _roleRepository.FirstOrDefaultAsync(p => p.Name == input.Name);

                if (exsitRole != null)
                {
                    throw new BusinessException($"系统中已经存在{input.Name}的角色");
                }
            }
            role = input.MapTo(role);
            await _roleRepository.UpdateAsync(role);
        }
Example #4
0
        public async Task Update(UpdateRoleInput input)
        {
            var role = await _roleRepository.GetAsync(input.Id);

            if (input.Name != role.Name)
            {
                var exsitRole = await _roleRepository.FirstOrDefaultAsync(p => p.Name == input.Name);

                if (exsitRole != null)
                {
                    throw new BusinessException($"系统中已经存在{input.Name}的角色");
                }
            }
            role = input.MapTo(role);
            await UnitOfWorkAsync(async (conn, trans) =>
            {
                await _roleRepository.UpdateAsync(role, conn, trans);
                //var queryOperationSql = "SELECT o.* FROM `Operation` as o LEFT JOIN Permission as p ON o.PermissionId = p.Id AND p.IsDeleted = 0 AND o.IsDeleted = 0 WHERE o.PermissionId IN @PermissionIds";

                //var operations = await conn.QueryAsync<Operation>(queryOperationSql, new { PermissionIds = input.PermissionIds }, transaction: trans);
                //if (!operations.Any(p => p.Mold == Shared.Operations.OperationMold.Query || p.Mold == Shared.Operations.OperationMold.Look))
                //{
                //    throw new BusinessException($"分配的权限至少要包含查询或是查看类型操作");
                //}
                await _rolePermissionRepository.DeleteAsync(p => p.RoleId == input.Id, conn, trans);
                foreach (var permissionId in input.PermissionIds)
                {
                    var permission = await _permissionRepository.SingleOrDefaultAsync(p => p.Id == permissionId);
                    if (permission == null)
                    {
                        throw new BusinessException($"不存在Id为{permissionId}的权限信息");
                    }
                    await _rolePermissionRepository.InsertAsync(new RolePermission()
                    {
                        PermissionId = permissionId, RoleId = input.Id
                    }, conn, trans);
                }
            }, Connection);
        }
Example #5
0
        public async Task Update(UpdateRoleInput input)
        {
            CheckUserDefinedDataPermission(input.DataPermissionType, input.DataPermissionOrgIds);
            using (var locker = await _lockerProvider.CreateLockAsync("UpdateRole"))
            {
                await locker.Lock(async() =>
                {
                    var role = await _roleRepository.GetAsync(input.Id, false);
                    if (role.DataPermissionType == DataPermissionType.UserDefined &&
                        _session.UserId != role.CreatorUserId)
                    {
                        throw new BusinessException("自定义数据权限的角色只允许用户创建者自己修改");
                    }

                    if (input.Identification != role.Identification)
                    {
                        var exsitRole =
                            await _roleRepository.FirstOrDefaultAsync(p => p.Identification == input.Identification,
                                                                      false);
                        if (exsitRole != null)
                        {
                            throw new BusinessException($"系统中已经存在{input.Identification}的角色");
                        }
                    }

                    role = input.MapTo(role);
                    await UnitOfWorkAsync(async(conn, trans) =>
                    {
                        await _roleRepository.UpdateAsync(role, conn, trans);
                        var deleteSql = "DELETE FROM RolePermission WHERE RoleId=@RoleId AND TenantId=@TenantId";
                        await conn.ExecuteAsync(deleteSql, new { RoleId = role.Id, TenantId = _session.TenantId }, trans);
                        await _rolePermissionRepository.DeleteAsync(p => p.RoleId == role.Id, conn, trans);
                        await _roleDataPermissionOrgRelationRepository.DeleteAsync(p => p.RoleId == role.Id, conn,
                                                                                   trans);
                        await _roleOrganizationRepository.DeleteAsync(p => p.RoleId == role.Id, conn, trans);
                        var insertSql =
                            "INSERT INTO RolePermission(PermissionId,RoleId,CreateTime,CreateBy,TenantId) VALUES(@PermissionId,@RoleId,@CreationTime,@CreatorUserId,@TenantId)";
                        var rolePermissions = new List <RolePermission>();
                        foreach (var permissionId in input.PermissionIds)
                        {
                            rolePermissions.Add(new RolePermission
                            {
                                PermissionId  = permissionId,
                                RoleId        = role.Id,
                                CreationTime  = DateTime.Now,
                                CreatorUserId = _session.UserId,
                                TenantId      = _session.TenantId
                            });
                        }
                        await conn.ExecuteAsync(insertSql, rolePermissions, trans);
                        if (!input.IsAllOrg)
                        {
                            foreach (var orgId in input.OrgIds)
                            {
                                var roleOrg = new RoleOrganization()
                                {
                                    RoleId = role.Id, OrgId = orgId
                                };
                                await _roleOrganizationRepository.InsertAsync(roleOrg, conn, trans);
                            }
                        }

                        if (input.DataPermissionType == DataPermissionType.UserDefined)
                        {
                            var insertDataPermissionOrgSql =
                                "INSERT INTO RoleDataPermissionOrgRelation(RoleId,OrgId,CreateTime,CreateBy,TenantId) VALUES(@RoleId,@OrgId,@CreationTime,@CreatorUserId,@TenantId)";
                            var dataPermissionOrgDatas = new List <RoleDataPermissionOrgRelation>();
                            foreach (var orgId in input.DataPermissionOrgIds)
                            {
                                dataPermissionOrgDatas.Add(new RoleDataPermissionOrgRelation()
                                {
                                    RoleId        = role.Id,
                                    OrgId         = orgId,
                                    CreationTime  = DateTime.Now,
                                    CreatorUserId = _session.UserId,
                                    TenantId      = _session.TenantId
                                });
                            }

                            await conn.ExecuteAsync(insertDataPermissionOrgSql, dataPermissionOrgDatas, trans);
                        }

                        await RemoveRoleCheckPemissionCache(role.Id);
                    }, Connection);
                });
            }
        }
Example #6
0
        public bool EditInfo(UpdateRoleInput input)
        {
            Role role = db.Roles.Find(input.ID);

            role = input.MapTo(role);
            db.Entry <Role>(role).State = EntityState.Modified;

            var removeNavList = db.RoleNavActions.Where(a => a.RoleID == input.ID);

            db.RoleNavActions.RemoveRange(removeNavList);

            List <RoleNavAction> roleNavActions = new List <RoleNavAction>();

            if (!string.IsNullOrEmpty(input.Nav_SelActions))
            {
                string[] NavSelActionArr = input.Nav_SelActions.Split(',');
                foreach (var nav in NavSelActionArr)
                {
                    if (!string.IsNullOrWhiteSpace(nav))
                    {
                        var arr = nav.Split('_');
                        roleNavActions.Add(new RoleNavAction()
                        {
                            Action_Code = arr[1],
                            CreateTime  = DateTime.Now,
                            Nav_Code    = arr[0],
                            Role        = role
                        });
                    }
                }
            }

            var removeCateList = db.RoleArticleCategoryActions.Where(a => a.RoleID == input.ID);

            db.RoleArticleCategoryActions.RemoveRange(removeCateList);

            List <RoleArticleCategoryAction> roleArticleCategoryActions = new List <RoleArticleCategoryAction>();

            if (!string.IsNullOrEmpty(input.Cate_SelActions))
            {
                string[] CateSelActionArr = input.Cate_SelActions.Split(',');
                foreach (var cate in CateSelActionArr)
                {
                    if (!string.IsNullOrWhiteSpace(cate))
                    {
                        var arr = cate.Split('_');
                        roleArticleCategoryActions.Add(new RoleArticleCategoryAction()
                        {
                            ActionCode        = arr[1],
                            ArticleCategoryID = Convert.ToInt32(arr[0]),
                            Role       = role,
                            CreateTime = DateTime.Now
                        });
                    }
                }
            }

            db.RoleNavActions.AddRange(roleNavActions);
            db.RoleArticleCategoryActions.AddRange(roleArticleCategoryActions);

            return(db.SaveChanges() > 0);
        }