/// <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); }
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("更新角色成功"); }
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); }
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); }
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); }); } }
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); }