You are here

protected function PostAccessControlHandler::checkCreateAccess in Open Social 8.9

Same name and namespace in other branches
  1. 8 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  2. 8.2 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  3. 8.3 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  4. 8.4 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  5. 8.5 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  6. 8.6 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  7. 8.7 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  8. 8.8 modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  9. 10.3.x modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  10. 10.0.x modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  11. 10.1.x modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()
  12. 10.2.x modules/social_features/social_post/src/PostAccessControlHandler.php \Drupal\social_post\PostAccessControlHandler::checkCreateAccess()

Performs create access checks.

This method is supposed to be overwritten by extending classes that do their own custom access checking.

Parameters

\Drupal\Core\Session\AccountInterface $account: The user for which to check access.

array $context: An array of key-value pairs to pass additional context when needed.

string|null $entity_bundle: (optional) The bundle of the entity. Required if the entity supports bundles, defaults to NULL otherwise.

Return value

\Drupal\Core\Access\AccessResultInterface The access result.

Overrides EntityAccessControlHandler::checkCreateAccess

File

modules/social_features/social_post/src/PostAccessControlHandler.php, line 204

Class

PostAccessControlHandler
Access controller for the Post entity.

Namespace

Drupal\social_post

Code

protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {

  // If group context is active.
  $group = _social_group_get_current_group();
  if ($group instanceof GroupInterface) {
    if ($group
      ->hasPermission('add post entities in group', $account)) {
      if ($group
        ->getGroupType()
        ->id() === 'public_group') {
        $config = \Drupal::config('entity_access_by_field.settings');
        if ($config
          ->get('disable_public_visibility') === 1 && !$account
          ->hasPermission('override disabled public visibility')) {
          return AccessResult::forbidden();
        }
      }
      return AccessResult::allowed();
    }
    else {

      // Not allowed to create posts.
      return AccessResult::forbidden();
    }
  }

  // Fallback.
  $access = AccessResult::allowedIfHasPermission($account, 'add post entities');
  if ($entity_bundle !== NULL) {
    return $access
      ->orIf(AccessResult::allowedIfHasPermission($account, "add {$entity_bundle} post entities"));
  }
  return $access;
}