extra['user'])) { return $record; } if ('cli' === $this->sapi) { $record->extra['user'] = [ 'id' => null, 'username' => 'SYSTEM', 'role' => 'system', ]; return $record; } $user = $this->security->getUser(); if (null === $user) { $record->extra['user'] = [ 'id' => null, 'username' => 'ANONYMOUS', 'role' => 'public', ]; return $record; } // Check for switched or aliased users $originalUser = null; $token = $this->security->getToken(); if ($token instanceof SwitchUserToken) { // User is currently switched to $originalUser = $token->getOriginalToken()->getUser(); } if (null !== $originalUser) { $username = sprintf('%s (via %s)', $user->getUserIdentifier(), $originalUser->getUserIdentifier()); } else { $username = $user->getUserIdentifier(); } $record->extra['user'] = [ // Only a user table row has an id: the stateless "api" firewall resolves its shared // key to an in-memory user, and calling getId() on that is a 500 on a request that // had already stored its data. 'id' => $user instanceof User ? $user->getId() : null, 'username' => $username, 'roles' => $user->getRoles(), ]; return $record; } }