From 0d1ab2c9cf4614048afcb4dc65f45fb86552c32a Mon Sep 17 00:00:00 2001 From: Diogo Peralta Cordeiro Date: Tue, 4 Jan 2022 23:13:41 +0000 Subject: [PATCH] [SECURITY][Register] New users should have their current browser language set as first language preference --- src/Controller/Security.php | 6 ++++++ src/Core/Cache.php | 1 + src/Util/Common.php | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Controller/Security.php b/src/Controller/Security.php index 289fe3f8c0..c4ec4c2c43 100644 --- a/src/Controller/Security.php +++ b/src/Controller/Security.php @@ -29,6 +29,7 @@ use App\Util\Exception\NotFoundException; use App\Util\Exception\ServerException; use App\Util\Form\FormFields; use App\Util\Nickname; +use Component\Language\Entity\ActorLanguage; use Component\Subscription\Entity\Subscription; use Doctrine\DBAL\Exception\UniqueConstraintViolationException; use LogicException; @@ -166,6 +167,11 @@ class Security extends Controller // Self subscription for the Home feed and alike DB::persist(Subscription::create(['subscriber_id' => $id, 'subscribed_id' => $id])); Feed::createDefaultFeeds($id, $user); + DB::persist(ActorLanguage::create([ + 'actor_id' => $id, + 'language_id' => Common::currentLanguage()->getId(), + 'ordering' => 1, + ])); }, ); diff --git a/src/Core/Cache.php b/src/Core/Cache.php index c9bad6a6c8..cb1a5a6636 100644 --- a/src/Core/Cache.php +++ b/src/Core/Cache.php @@ -235,6 +235,7 @@ abstract class Cache /** * Retrieve a list from the cache, with a different implementation * for redis and others, trimming to $max_count if given + * TODO(hugo): $calculate = [] is the same as false miss * * @param callable(?CacheItem $item, bool &$save): (string|object|array) $calculate */ diff --git a/src/Util/Common.php b/src/Util/Common.php index ecbd286f37..5d76449cf3 100644 --- a/src/Util/Common.php +++ b/src/Util/Common.php @@ -323,6 +323,6 @@ abstract class Common public static function currentLanguage(): Language { - return self::actor()?->getTopLanguage() ?? Language::getByLocale(!\is_null(self::$request->headers->get('accept-language')) ? I18n::clientPreferredLanguage(self::$request->headers->get('accept-language')) : self::$request->getDefaultLocale()); + return self::actor()?->getTopLanguage() ?? Language::getByLocale(!\is_null(self::$request->headers->get('accept-language')) ? I18n::clientPreferredLanguage(self::$request->headers->get('accept-language')) : self::config('site', 'language')); } }