activitypub-1.0.x-dev/src/ActivityPubAccessTrait.php
src/ActivityPubAccessTrait.php
<?php
namespace Drupal\activitypub;
use Drupal\activitypub\Entity\ActivityPubActorInterface;
use Drupal\Core\Access\AccessResult;
use Drupal\user\UserInterface;
trait ActivityPubAccessTrait {
/**
* Check that the actor has enabled activitypub.
*
* @return \Drupal\Core\Access\AccessResultInterface
* The access result for this method.
*
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
public function enabledActorCheck() {
/** @var \Drupal\activitypub\Entity\Storage\ActivityPubActorStorageInterface $storage */
$actor_storage = \Drupal::entityTypeManager()->getStorage('activitypub_actor');
$actor = $actor_storage->loadActorByEntityIdAndType($this->currentUser()->id(), 'person');
if ($actor) {
return AccessResult::allowed();
}
return AccessResult::forbidden();
}
/**
* Check that the actor points to the user.
*
* @param \Drupal\user\UserInterface $user
*
* @param \Drupal\activitypub\Entity\ActivityPubActorInterface $activitypub_actor
*
* @return \Drupal\Core\Access\AccessResultInterface
* The access result for this method.
*/
public function actorUserCheck(UserInterface $user, ActivityPubActorInterface $activitypub_actor) {
if ($user->id() == $activitypub_actor->getTargetEntityId()) {
return AccessResult::allowed();
}
return AccessResult::forbidden();
}
/**
* Check that the actor points to the user.
*
* @param \Drupal\user\UserInterface $user
* @param \Drupal\activitypub\Entity\ActivityPubActorInterface $activitypub_actor
*
* @return \Drupal\Core\Access\AccessResultInterface
* The access result for this method.
*/
public function actorFollowUserCheck(UserInterface $user, ActivityPubActorInterface $activitypub_actor) {
return $this->actorUserCheck($user, $activitypub_actor);
}
}