bp_groups_group_access_protection()
Protect access to single groups.
Description
Source
File: bp-groups/actions/access.php
function bp_groups_group_access_protection() { if ( ! bp_is_group() ) { return; } $current_group = groups_get_current_group(); $user_has_access = $current_group->user_has_access; $is_visible = $current_group->is_visible; $no_access_args = array(); // The user can know about the group but doesn't have full access. if ( ! $user_has_access && $is_visible ) { // Always allow access to request-membership. if ( bp_is_current_action( 'request-membership' ) ) { $user_has_access = true; // User doesn't have access, so set up redirect args. } elseif ( is_user_logged_in() ) { $no_access_args = array( 'message' => __( 'You do not have access to this group.', 'buddyboss' ), 'root' => bp_get_group_permalink( $current_group ) . 'home/', 'redirect' => false ); } } // Protect the admin tab from non-admins. if ( bp_is_current_action( 'admin' ) && ! bp_is_item_admin() ) { $user_has_access = false; $no_access_args = array( 'message' => __( 'You are not an organizer or moderator of this group.', 'buddyboss' ), 'root' => bp_get_group_permalink( $current_group ), 'redirect' => false ); } /** * Allow plugins to filter whether the current user has access to this group content. * * Note that if a plugin sets $user_has_access to false, it may also * want to change the $no_access_args, to avoid problems such as * logged-in users being redirected to wp-login.php. * * @since BuddyPress 2.1.0 * * @param bool $user_has_access True if the user has access to the * content, otherwise false. * @param array $no_access_args Arguments to be passed to bp_core_no_access() in case * of no access. Note that this value is passed by reference, * so it can be modified by the filter callback. */ $user_has_access = apply_filters_ref_array( 'bp_group_user_has_access', array( $user_has_access, &$no_access_args ) ); // If user has access, we return rather than redirect. if ( $user_has_access ) { return; } // Groups that the user cannot know about should return a 404 for non-members. // Unset the current group so that you're not redirected // to the default group tab. if ( ! $is_visible ) { buddypress()->groups->current_group = 0; buddypress()->is_single_item = false; bp_do_404(); return; } else { bp_core_no_access( $no_access_args ); } }
Changelog
Version | Description |
---|---|
BuddyPress 2.1.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.