protected virtual AccessResult GetPermission(DbItemAccess access, AccessRight accessRight) { if (accessRight == AccessRight.ItemRead) { return this.GetAccessResult(access, i => i.CanRead); } if (accessRight == AccessRight.ItemWrite) { return this.GetAccessResult(access, i => i.CanWrite); } if (accessRight == AccessRight.ItemRename) { return this.GetAccessResult(access, i => i.CanRename); } if (accessRight == AccessRight.ItemCreate) { return this.GetAccessResult(access, i => i.CanCreate); } if (accessRight == AccessRight.ItemDelete) { return this.GetAccessResult(access, i => i.CanDelete); } if (accessRight == AccessRight.ItemAdmin) { return this.GetAccessResult(access, i => i.CanAdmin); } return this.GetDefaultAccessResult(); }
protected virtual void FillAccessRules(AccessRuleCollection rules, DbItemAccess itemAccess, AccessRight accessRight, Func<DbItemAccess, bool?> canAct) { var canActRest = canAct(itemAccess); if (canActRest == null) { return; } var permission = (bool)canActRest ? SecurityPermission.AllowAccess : SecurityPermission.DenyAccess; rules.Add(AccessRule.Create(Context.User, accessRight, PropagationType.Entity, permission)); }
public void ShouldNotSetAccessRightsByDefault() { // arrange var itemAccess = new DbItemAccess(); // act & assert itemAccess.CanRead.Should().Be(null); itemAccess.CanWrite.Should().Be(null); itemAccess.CanRename.Should().Be(null); itemAccess.CanCreate.Should().Be(null); itemAccess.CanDelete.Should().Be(null); itemAccess.CanAdmin.Should().Be(null); }
public void ShouldSetAllAccessRightsToTrueByDefault() { // arrange var itemAccess = new DbItemAccess(); // act & assert itemAccess.CanRead.Should().BeTrue(); itemAccess.CanWrite.Should().BeTrue(); itemAccess.CanRename.Should().BeTrue(); itemAccess.CanCreate.Should().BeTrue(); itemAccess.CanDelete.Should().BeTrue(); itemAccess.CanAdmin.Should().BeTrue(); }
protected virtual AccessResult GetAccessResult(DbItemAccess access, Func<DbItemAccess, bool> func) { var permission = func(access) ? AccessPermission.Allow : AccessPermission.Deny; return new AccessResult(permission, new AccessExplanation(permission.ToString())); }