bp_stop_live_spammer()
Stop a logged-in user who is marked as a spammer.
Description
When an admin marks a live user as a spammer, that user can still surf around and cause havoc on the site until that person is logged out.
This code checks to see if a logged-in user is marked as a spammer. If so, we redirect the user back to wp-login.php with the ‘reauth’ parameter.
This clears the logged-in spammer’s cookies and will ask the spammer to reauthenticate.
Note: A spammer cannot log back in – bp_core_boot_spammer().
Runs on ‘bp_init’ at priority 5 so the members component globals are setup before we do our spammer checks.
This is important as the $bp->loggedin_user object is setup at priority 4.
Source
File: bp-members/bp-members-functions.php
function bp_stop_live_spammer() {
// If we're on the login page, stop now to prevent redirect loop.
$is_login = false;
if ( isset( $GLOBALS['pagenow'] ) && ( false !== strpos( $GLOBALS['pagenow'], 'wp-login.php' ) ) ) {
$is_login = true;
} elseif ( isset( $_SERVER['SCRIPT_NAME'] ) && false !== strpos( $_SERVER['SCRIPT_NAME'], 'wp-login.php' ) ) {
$is_login = true;
}
if ( $is_login ) {
return;
}
// User isn't logged in, so stop!
if ( ! is_user_logged_in() ) {
return;
}
// If spammer, redirect to wp-login.php and reauthorize.
if ( bp_is_user_spammer( bp_loggedin_user_id() ) ) {
// Setup login args.
$args = array(
// Custom action used to throw an error message.
'action' => 'bp-spam',
// Reauthorize user to login.
'reauth' => 1
);
/**
* Filters the url used for redirection for a logged in user marked as spam.
*
* @since BuddyPress 1.8.0
*
* @param string $value URL to redirect user to.
*/
$login_url = apply_filters( 'bp_live_spammer_redirect', add_query_arg( $args, wp_login_url() ) );
// Redirect user to login page.
wp_redirect( $login_url );
die();
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.8.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.