WoltLab Suite 6.2 Handbuch
Deutsch/PHP-Version: Die Website-Struktur, Navigation und Überschriften sind auf Deutsch vorbereitet. Code-Beispiele und technische Namen bleiben unverändert.

Gast-Token

Guest token is a generic implementation to handle the authorization of a guest (entering a user name and filling out a captcha) that can be used in various places.

The token must be transmitted to the backend and validated there. A corresponding API is available on the PHP backend.

Client-side Example

import { prepareRequest } from "WoltLabSuite/Core/Ajax/Backend";
import User from "WoltLabSuite/Core/User";
import { getGuestToken } from "WoltLabSuite/Core/Component/GuestTokenDialog";

let token: string | undefined = "";
if (!User.userId) {
  token = await getGuestToken();
}

await prepareRequest("your_backend_url").post({
  token,
}).fetchAsJson();

Backend Example

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use wcf\http\Helper;
use wcf\system\endpoint\IController;
use wcf\system\endpoint\PostRequest;
use wcf\system\exception\UserInputException;
use wcf\system\WCF;
use wcf\util\UserUtil;

#[PostRequest('/core/foo')]
final class CreateFoo implements IController
{
    public function __invoke(ServerRequestInterface $request, array $variables): ResponseInterface
    {
        $parameters = Helper::mapApiParameters($request, CreateFooParameters::class);
        
        $username = '';
        if (!WCF::getUser()->userID) {
            $username = UserUtil::verifyGuestToken($parameters->guestToken);
            if ($username === null) {
                throw new UserInputException('guestToken');
            }
        }

        // ...
    }
}

/** @internal */
final class CreateFooParameters
{
    public function __construct(
        public readonly string $guestToken,
    ) {
    }
}