Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
SetLocale
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 handle
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3namespace App\Http\Middleware;
4
5use Closure;
6use Illuminate\Http\Request;
7use Illuminate\Support\Facades\App;
8use Symfony\Component\HttpFoundation\Response;
9
10/**
11 * Picks the UI language for the request:
12 *   signed-in user's saved locale  →  store default (settings)  →  config default.
13 * Only locales listed in config('app.locales') are honoured.
14 */
15class SetLocale
16{
17    public function handle(Request $request, Closure $next): Response
18    {
19        $supported = array_keys(config('app.locales', ['en' => 'English']));
20
21        $locale = $request->user()?->locale
22            ?: settings('general.locale', config('app.locale'));
23
24        if (in_array($locale, $supported, true)) {
25            App::setLocale($locale);
26        }
27
28        return $next($request);
29    }
30}