public static bool HasAccess([NotNull] this Claim claim, int?userId, [NotNull] Expression <Func <ProjectAcl, bool> > permission, ExtraAccessReason reasons = ExtraAccessReason.None) { if (claim == null) { throw new ArgumentNullException(nameof(claim)); } if (permission == null) { throw new ArgumentNullException(nameof(permission)); } if (userId == null) { return(false); } if (reasons.HasFlag(ExtraAccessReason.Player) && claim.PlayerUserId == userId) { return(true); } if (reasons.HasFlag(ExtraAccessReason.ResponsibleMaster) && claim.ResponsibleMasterUserId == userId) { return(true); } return(claim.HasMasterAccess(userId, permission)); }
public static Claim RequestAccess([CanBeNull] this Claim claim, int currentUserId, ExtraAccessReason reasons = ExtraAccessReason.None) { return(claim.RequestAccess(currentUserId, acl => true, reasons)); }
public static Claim RequestAccess([CanBeNull] this Claim claim, int currentUserId, Expression <Func <ProjectAcl, bool> > access, ExtraAccessReason reasons = ExtraAccessReason.None) { if (claim?.Project == null) { throw new ArgumentNullException(nameof(claim)); } if (!claim.HasAccess(currentUserId, access, reasons)) { throw new NoAccessToProjectException(claim, currentUserId); } return(claim); }
protected Task <Claim> LoadClaimAsMaster(IClaimOperationRequest request, ExtraAccessReason reason = ExtraAccessReason.None) => LoadClaimAsMaster(request, acl => true, reason);
protected async Task <Claim> LoadClaimAsMaster(IClaimOperationRequest request, Expression <Func <ProjectAcl, bool> > accessType = null, ExtraAccessReason reason = ExtraAccessReason.None) { var claim = await ClaimsRepository.GetClaim(request.ProjectId, request.ClaimId); return(claim.RequestAccess(CurrentUserId, accessType, reason)); }
public static bool HasAccess([NotNull] this Claim claim, int?userId, ExtraAccessReason reasons = ExtraAccessReason.None) => claim.HasAccess(userId, acl => true, reasons);