diff --git a/allowed_languages.module b/allowed_languages.module index 8eb4e09..7c6fdd6 100644 --- a/allowed_languages.module +++ b/allowed_languages.module @@ -166,7 +166,16 @@ function allowed_languages_entity_access(EntityInterface $entity, $operation, Ac return AccessResult::neutral(); } - $language = $entity->language(); + $current_request = \Drupal::service('request_stack')->getCurrentRequest(); + if ($entity->isNew()) { + $language = \Drupal::languageManager()->getCurrentLanguage(LanguageInterface::TYPE_CONTENT); + } elseif ($entity->isTranslatable() && strpos($current_request->attributes->get('_route'), 'node.revision_revert') !== false) { + $node_revision = $current_request->attributes->get('node_revision'); + $language = $node_revision->language(); + } else { + $language = $entity->language(); + } + $user = \Drupal::service('allowed_languages.allowed_languages_manager')->accountFromProxy($account); if (\Drupal::service('allowed_languages.allowed_languages_manager')->hasPermissionForLanguage($language, $user)) { return AccessResult::neutral()->cachePerUser()->addCacheableDependency($user);