Ghost/core/server/services/members/content-gating.js

38 lines
784 B
JavaScript
Raw Normal View History

// @ts-check
/** @typedef { boolean } AccessFlag */
const PERMIT_ACCESS = true;
const BLOCK_ACCESS = false;
/**
* @param {object} post - A post object to check access to
* @param {object} member - The member whos access should be checked
*
* @returns {AccessFlag}
*/
function checkPostAccess(post, member) {
if (post.visibility === 'public') {
return PERMIT_ACCESS;
}
if (!member) {
return BLOCK_ACCESS;
}
if (post.visibility === 'members') {
return PERMIT_ACCESS;
}
if (post.visibility === 'paid' && (member.status === 'paid' || member.status === 'comped' || member.comped)) {
return PERMIT_ACCESS;
}
return BLOCK_ACCESS;
}
module.exports = {
checkPostAccess,
PERMIT_ACCESS,
BLOCK_ACCESS
};