Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

kendrick's avatar

Language Middleware, check 'language_id' record

How can I check a record 'language_id' for my authenticated users/partners, and then set the correct language parameters for their session?

class Language
{
    protected $default = 'en';

    protected $languages = [
         'en',
         'de', 
    ];

    public function handle($request, Closure $next)
    {
        if($request->has('lang')) {
            $lang = $request->lang;
            if(array_search($lang, $this->languages) === false) {
                $lang = $this->default;
            }
    
        // How can I check on the authenticated user (User.php or Partner.php, both with 'language_id' on their table, referring to Language.php)
    
           if(auth()->guard('partner')){
        
        if (auth()->user()->language_id == 1) {
                    $request->session()->put('lang', 'en');
                } elseif (auth()->user()->language_id == 2) {
                    $request->session()->put('lang', 'de');
                }
       } else{
        
        if (auth()->user()->language_id == 1) {
                    $request->session()->put('lang', 'en');
                } elseif (auth()->user()->language_id == 2) {
                    $request->session()->put('lang', 'de');
                }
       }

            $request->session()->put('lang', $request->lang);
        }

        \App::setLocale( $request->session()->get('lang') );

        return $next($request);
    }
}
0 likes
0 replies

Please or to participate in this conversation.