diff --git a/src/Entity/Access/GroupContentAccessControlHandler.php b/src/Entity/Access/GroupContentAccessControlHandler.php
index fd69e16..9da3a2d 100644
--- a/src/Entity/Access/GroupContentAccessControlHandler.php
+++ b/src/Entity/Access/GroupContentAccessControlHandler.php
@@ -2,17 +2,62 @@
 
 namespace Drupal\group\Entity\Access;
 
-use Drupal\group\Entity\GroupContentType;
+use Drupal\Core\Entity\EntityHandlerInterface;
+use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Entity\EntityAccessControlHandler;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Session\AccountInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
- * Access controller for the Group entity.
+ * Access controller for the Group content entity.
  *
- * @see \Drupal\group\Entity\Group.
+ * @see \Drupal\group\Entity\GroupContent.
  */
-class GroupContentAccessControlHandler extends EntityAccessControlHandler {
+class GroupContentAccessControlHandler extends EntityAccessControlHandler implements EntityHandlerInterface {
+
+  /**
+   * The entity type manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  protected $entityTypeManager;
+
+  /**
+   * The route match.
+   *
+   * @var \Drupal\Core\Routing\RouteMatchInterface
+   */
+  protected $routeMatch;
+
+  /**
+   * Constructs the group content access control handler instance.
+   *
+   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
+   *   The entity type definition.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
+   *   The entity type manager.
+   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
+   *   The route match.
+   */
+  public function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_type_manager, RouteMatchInterface $route_match) {
+    parent::__construct($entity_type);
+    $this->entityTypeManager = $entity_type_manager;
+    $this->routeMatch = $route_match;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
+    return new static(
+      $entity_type,
+      $container->get('entity_type.manager'),
+      $container->get('current_route_match')
+    );
+  }
 
   /**
    * {@inheritdoc}
@@ -26,7 +71,14 @@ class GroupContentAccessControlHandler extends EntityAccessControlHandler {
    * {@inheritdoc}
    */
   protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
-    $group_content_type = GroupContentType::load($entity_bundle);
+    /** @var \Drupal\group\Entity\GroupContentTypeInterface $group_content_type */
+    $group_content_type = $this->entityTypeManager->getStorage('group_content_type')->load($entity_bundle);
+    if ($current_route_match = $this->routeMatch->getRouteObject()) {
+      $route_defaults = $current_route_match->getDefaults();
+      if (isset($route_defaults['create_mode']) && $route_defaults['create_mode']) {
+        return $group_content_type->getContentPlugin()->createEntityAccess($context['group'], $account);
+      }
+    }
     return $group_content_type->getContentPlugin()->createAccess($context['group'], $account);
   }
 
