Skip to content

Commit b486a21

Browse files
author
Ethan Jon
committed
password protected posts
1 parent b0984c4 commit b486a21

File tree

5 files changed

+27
-5
lines changed

5 files changed

+27
-5
lines changed

react/helpers/post-data.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
// @flow
22

3+
export const didFailPasswordAuthorization = (postData: Object) => (
4+
postData.content.protected && !postData.content.rendered
5+
)
6+
7+
export const didPassPasswordAuthorization = (postData: Object) => (
8+
!postData.content.protected || !!postData.content.rendered
9+
)
10+
311
export const hasAURL = (postData: Object) => (
412
postData.facebook_url || postData.linkedin_url ||
513
postData.personal_url || postData.twitter_url

react/pages/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import stripTags from 'striptags'
88

99
import Tagline from '../components/tagline'
1010
import createPage from '../helpers/create-page'
11-
import {getUrlObj, getFeaturedImageProps, getThumbnailImageProps} from '../helpers/post-data'
11+
import {didPassPasswordAuthorization, getUrlObj, getFeaturedImageProps, getThumbnailImageProps} from '../helpers/post-data'
1212
import styles from '../styles/pages/index.scss'
1313

1414
export const Home = ({postsData}: Object, {siteData}: Object) => {
@@ -53,7 +53,7 @@ export const Home = ({postsData}: Object, {siteData}: Object) => {
5353
{siteData.description}
5454
</div>
5555

56-
{postsData.map(postData => (
56+
{postsData.filter(didPassPasswordAuthorization).map(postData => (
5757
<Link
5858
as={postData.link}
5959
href={getUrlObj(postData)}

react/pages/singular.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import React from 'react'
44

55
import Post from '../components/post'
66
import createPage from '../helpers/create-page'
7+
import {didFailPasswordAuthorization} from '../helpers/post-data'
78

89
const extractPostData = ({postsData, revisionsData}: Object) => Object.assign({},
910
Array.isArray(postsData) ? postsData[0] : postsData,
@@ -13,7 +14,7 @@ const extractPostData = ({postsData, revisionsData}: Object) => Object.assign({}
1314
export const Singular = (props: Object) => {
1415
const postData = extractPostData(props)
1516

16-
if (!Object.keys(postData).length) {
17+
if (!Object.keys(postData).length || didFailPasswordAuthorization(postData)) {
1718
return (
1819
<div>
1920
<hr />
@@ -37,10 +38,10 @@ export default createPage(Singular, {
3738
autoOpenFacebookModal: ({url: {query: {type}}}) => type === 'post',
3839
fullWidth: true,
3940
maxWidth: 3,
40-
propPaths: ({asPath, query: {p, page_id, preview, preview_id, type, slug}}) => ({
41+
propPaths: ({asPath, query: {p, password, page_id, preview, preview_id, type, slug}}) => ({
4142
postsData: {
4243
authorize: !!preview,
43-
path: (p || page_id) ? `/wp/v2/${type}s/${p || page_id}/?_embed` : `/wp/v2/${type}s?_embed&slug=${slug}`
44+
path: (p || page_id) ? `/wp/v2/${type}s/${p || page_id}/?_embed` : `/wp/v2/${type}s?_embed&slug=${slug}&password=${password}`
4445
},
4546
revisionsData: preview ? {
4647
authorize: true,

wordpress/themes/coderintros/functions.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require_once( 'inc/purge.php' );
44
require_once( 'inc/helpers.php' );
55
require_once( 'inc/mu_settings.php' );
6+
require_once( 'inc/passwords.php' );
67
require_once( 'inc/settings.php' );
78
require_once( 'inc/rest_api.php' );
89

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
// don't show password protected posts in feeds
4+
// https://codex.wordpress.org/Using_Password_Protection
5+
add_action( 'pre_get_posts', function ( $query ) {
6+
if ( is_feed() ) {
7+
add_filter( 'posts_where', function ( $where ) {
8+
global $wpdb;
9+
return $where .= " AND {$wpdb->posts}.post_password = '' ";
10+
} );
11+
}
12+
} );

0 commit comments

Comments
 (0)