/** * @param description a right description to compare this right to. * @return true if the right is equivalent to the provided description. */ boolean like(RightDescription description) { return new EqualsBuilder() .append(this.isReadOnly(), description.isReadOnly()) .append(this.getDefaultState(), description.getDefaultState()) .append(this.getTieResolutionPolicy(), description.getTieResolutionPolicy()) .append(this.getInheritanceOverridePolicy(), description.getInheritanceOverridePolicy()) .append(this.getTargetedEntityType(), description.getTargetedEntityType()) .append(this.getImpliedRights(), description.getImpliedRights()) .isEquals(); } }
/** * @return the default access, using the default value of all rights. */ public static synchronized XWikiSecurityAccess getDefaultAccess() { if (defaultAccess == null || Right.size() != defaultAccessSize) { defaultAccessSize = Right.size(); defaultAccess = new XWikiSecurityAccess(); for (Right right : Right.values()) { defaultAccess.set(right, right.getDefaultState()); } } return defaultAccess; }
/** * Apply default values for undetermined rights. * * @param user The user, whose rights are to be determined. * @param reference The entity, which the user wants to access. * @param access The accumulated access result (modified and returned). * @return the accumulated access result. */ protected XWikiSecurityAccess applyDefaults(UserSecurityReference user, SecurityReference reference, XWikiSecurityAccess access) { for (Right right : Right.values()) { if (access.get(right) == RuleState.UNDETERMINED) { if (!user.isGlobal() && !user.getOriginalReference().getWikiReference() .equals(reference.extractReference(EntityType.WIKI))) { /* * Deny all by default for users from another wiki. */ access.deny(right); } else { access.set(right, right.getDefaultState()); } } } return access; }