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);
        }
Exemple #4
0
 protected Task <Claim> LoadClaimAsMaster(IClaimOperationRequest request, ExtraAccessReason reason = ExtraAccessReason.None) => LoadClaimAsMaster(request, acl => true, reason);
Exemple #5
0
        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);