fix empty user language (#1054)

This commit is contained in:
Kevin Papst
2019-08-21 11:16:44 +02:00
committed by GitHub
parent 8cd7f7de3f
commit 405ea0076b
2 changed files with 35 additions and 10 deletions

View File

@@ -514,6 +514,10 @@ class KimaiImporterCommand extends Command
continue; continue;
} }
if (empty($pref['value'])) {
continue;
}
$newPref = new UserPreference(); $newPref = new UserPreference();
$newPref $newPref
->setName($prefsToImport[$key]) ->setName($prefsToImport[$key])

View File

@@ -13,6 +13,7 @@ use App\Entity\User;
use App\Form\Type\InitialViewType; use App\Form\Type\InitialViewType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
/** /**
@@ -25,21 +26,41 @@ class HomepageController extends AbstractController
{ {
/** /**
* @Route(path="", defaults={}, name="homepage", methods={"GET"}) * @Route(path="", defaults={}, name="homepage", methods={"GET"})
*
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/ */
public function indexAction(Request $request) public function indexAction(Request $request): Response
{ {
/** @var User $user */ /** @var User $user */
$user = $this->getUser(); $user = $this->getUser();
$route = $user->getPreferenceValue('login.initial_view', InitialViewType::DEFAULT_VIEW); $userRoute = $user->getPreferenceValue('login.initial_view', InitialViewType::DEFAULT_VIEW);
$userLanguage = $user->getLocale();
$requestLanguage = $request->getLocale();
/** @var User $user */ if (empty($requestLanguage)) {
$user = $this->getUser(); $requestLanguage = User::DEFAULT_LANGUAGE;
$locale = $request->getLocale(); }
$language = $user->getPreferenceValue('language', $locale);
if (empty($userLanguage)) {
$userLanguage = $requestLanguage;
}
$routes = [
[$userRoute, $userLanguage],
[$userRoute, $requestLanguage],
[$userRoute, User::DEFAULT_LANGUAGE],
[InitialViewType::DEFAULT_VIEW, $userLanguage],
[InitialViewType::DEFAULT_VIEW, $requestLanguage],
];
foreach ($routes as $routeSettings) {
$route = $routeSettings[0];
$language = $routeSettings[1];
try {
return $this->redirectToRoute($route, ['_locale' => $language]); return $this->redirectToRoute($route, ['_locale' => $language]);
} catch (\Exception $exception) {
// something is wrong with the url parameters ...
}
}
return $this->redirectToRoute(InitialViewType::DEFAULT_VIEW, ['_locale' => User::DEFAULT_LANGUAGE]);
} }
} }