diff --git a/ginvite.module b/ginvite.module
index 922df262d6462be2360dd1233e1fc1551f2cb37d..057807939d4e67e4d87a6098a3e393882c53438c 100644
--- a/ginvite.module
+++ b/ginvite.module
@@ -6,9 +6,12 @@
  */
 
 use Drupal\Component\Utility\Html;
+use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\BubbleableMetadata;
 use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Url;
 use Drupal\ginvite\Event\UserLoginWithInvitationEvent;
 use Drupal\ginvite\Event\UserRegisteredFromInvitationEvent;
@@ -464,3 +467,23 @@ function ginvite_user_login(UserInterface $user) {
     $event_dispatcher->dispatch($event, UserLoginWithInvitationEvent::EVENT_NAME);
   }
 }
+
+/**
+ * Implements hook_ENTITY_TYPE_access().
+ */
+function ginvite_group_access(EntityInterface $entity, $operation, AccountInterface $account) {
+  if ($operation == 'view' || $operation == 'view label') {
+    $properties = [
+      'entity_id' => $account->id(),
+      'gid' => $entity->id(),
+      'invitation_status' => GroupInvitation::INVITATION_PENDING,
+    ];
+
+    $invitations = \Drupal::service('ginvite.invitation_loader')->loadByProperties($properties);
+    if (!empty($invitations)) {
+      return AccessResult::allowed();
+    }
+  }
+
+  return AccessResult::neutral();
+}