preferred_language = 'en_GB'; $user->store(); } return $this; } protected function validateCallbackData(string $callbackId): array { if (empty($_SESSION['callbacks'][$callbackId])) { throw new AccessDeniedException('Missing or invalid callback ID'); } $callbackData = $_SESSION['callbacks'][$callbackId]; if ( $callbackData['context'] !== 'lti' || $callbackData['expires_at'] < time() ) { throw new AccessDeniedException('Invalid or expired callback data'); } return $callbackData; } }