/// <summary> /// 获取用户资源 /// </summary> public virtual List <TsResource> GetUserResource(string userId, RbacResourceType rbacRscType) { using (var db = GetDbContext()) { var tsUser = db.GetTable <TsUser>() .FirstOrDefault(x => x.Id.Equals(userId)); var result = new List <TsResource>(); if (tsUser.CUserType == 9) { result = db.GetTable <TsResource>() .Where(x => x.CType.Equals((int)rbacRscType)) .ToList(); } else { var roles = GetUserRoles(userId); var resourceIds = db.GetTable <TsRolePermission>() .Where(x => roles.Contains(x.CRoleId) && x.CResourceType.Equals((int)rbacRscType)) .Select(x => x.CResourceId) .ToList(); result = db.GetTable <TsResource>() .Where(x => resourceIds.Contains(x.Id)) .OrderBy(x => x.COrder) .ToList(); } return(result); } }
/// <summary> /// 按角色保存提交数据行权限 /// </summary> public virtual void SaveRoleRestrictDataItem(string roleId, string dataId, string parentId, bool checkedState, RbacResourceType rtype = RbacResourceType.DataItem) { using (var db = GetDbContext()) { var resourceId = string.Format("{0}##{1}", parentId, dataId); var tsRolePermission = db.GetTable <TsRolePermission>() .FirstOrDefault(x => x.CRoleId.Equals(roleId) && x.CResourceId.Equals(resourceId) && x.CResourceType.Equals(rtype)); if (tsRolePermission == null & checkedState) { db.Insert(new TsRolePermission { Id = SequenceService.Proxy.GenerateLocalId(), CResourceId = resourceId, CResourceType = (int)rtype, CRoleId = roleId }); } if (tsRolePermission != null && !checkedState) { db.Delete(tsRolePermission); } } }