protected internal bool IsPermitted(Document doc) { var path = doc.Get(LucObject.FieldName.Path); var createdById = IntegerIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.CreatedById)); var lastModifiedById = IntegerIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.ModifiedById)); var isLastPublic = BooleanIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.IsLastPublic)); var isLastDraft = BooleanIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.IsLastDraft)); var docLevel = GetDocumentLevel(path, createdById, lastModifiedById); var fieldLevel = this.LucQuery.FieldLevel; if (this.AllVersions) { var canAccesOldVersions = SecurityHandler.HasPermission(this.User, path, createdById, lastModifiedById, PermissionType.RecallOldVersion); switch (docLevel) { case DocumentOpenLevel.Denied: return(false); case DocumentOpenLevel.See: return(isLastPublic && canAccesOldVersions && fieldLevel <= QueryFieldLevel.HeadOnly); case DocumentOpenLevel.Preview: return(isLastPublic && canAccesOldVersions && fieldLevel <= QueryFieldLevel.NoBinaryOrFullText); case DocumentOpenLevel.Open: return(isLastPublic); case DocumentOpenLevel.OpenMinor: return(canAccesOldVersions); default: throw new NotImplementedException("##Unknown DocumentOpenLevel"); } } else { switch (docLevel) { case DocumentOpenLevel.Denied: return(false); case DocumentOpenLevel.See: return(isLastPublic && fieldLevel <= QueryFieldLevel.HeadOnly); case DocumentOpenLevel.Preview: return(isLastPublic && fieldLevel <= QueryFieldLevel.NoBinaryOrFullText); case DocumentOpenLevel.Open: return(isLastPublic); case DocumentOpenLevel.OpenMinor: return(isLastDraft); default: throw new NotImplementedException("##Unknown DocumentOpenLevel"); } } }
protected bool IsPermitted(Document doc, IUser user, bool isCurrentUser) { var path = doc.Get(LucObject.FieldName.Path); var createdById = IntegerIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.CreatedById)); var lastModifiedById = IntegerIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.ModifiedById)); var isLastPublic = BooleanIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.IsLastPublic)); var isLastDraft = BooleanIndexHandler.ConvertBack(doc.Get(LucObject.FieldName.IsLastDraft)); var level = isCurrentUser ? SecurityHandler.GetPermittedLevel(path, createdById, lastModifiedById) : SecurityHandler.GetPermittedLevel(path, createdById, lastModifiedById, user); switch (level) { case PermittedLevel.None: return(false); case PermittedLevel.HeadOnly: return(isLastPublic); case PermittedLevel.PublicOnly: return(isLastPublic); case PermittedLevel.All: return(isLastDraft); default: throw new NotImplementedException(); } }
public void FieldIndexHandler_IntegerIndexHandler() { var fieldValue = 42; var fieldValueObject = (object)fieldValue; var snField = new IndexableField(fieldValueObject); var fieldIndexHandler = new IntegerIndexHandler(); fieldIndexHandler.OwnerIndexingInfo = new TestPerfieldIndexingInfoInt(); var indexed = fieldIndexHandler.GetIndexFields(snField, out _); var parsed = fieldIndexHandler.Parse("42"); var termValue = fieldIndexHandler.ConvertToTermValue(fieldValue); Assert.AreEqual(indexed.First().Type, parsed.Type); Assert.AreEqual(parsed.Type, termValue.Type); var retrieved = fieldIndexHandler.GetBack("42"); Assert.AreEqual(fieldValue, retrieved); }