TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:09 +02:00
commit af8cc155b5
6818 changed files with 642608 additions and 0 deletions
@@ -0,0 +1,44 @@
<?php
declare(strict_types=1);
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy\Event;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Reporting\Report;
/**
* Event that is dispatched before persisting a new
* `\TYPO3\CMS\Core\Security\ContentSecurityPolicy\Reporting\Report`.
*/
final class BeforePersistingReportEvent
{
/**
* @var Report|null Alternative report, or `null` to skip persistence
*/
public ?Report $report;
/**
* @param Report $originalReport The original report created by for the CSP violation
* @param ServerRequestInterface $request The HTTP POST request submitting the CSP violation
*/
public function __construct(
public readonly Report $originalReport,
public readonly ServerRequestInterface $request,
) {
$this->report = $originalReport;
}
}
@@ -0,0 +1,75 @@
<?php
declare(strict_types=1);
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy\Event;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\MutationSuggestion;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Policy;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Reporting\Report;
/**
* Event that is dispatched when reports are handled in the
* CSP backend module to find potential mutations as a resolution.
*/
final class InvestigateMutationsEvent
{
private bool $stopPropagation = false;
/**
* @var list<MutationSuggestion>
*/
private array $mutationSuggestions = [];
public function __construct(
public readonly Policy $policy,
public readonly Report $report,
) {}
public function isPropagationStopped(): bool
{
return $this->stopPropagation;
}
public function stopPropagation(): void
{
$this->stopPropagation = true;
}
/**
* @return list<MutationSuggestion>
*/
public function getMutationSuggestions(): array
{
return $this->mutationSuggestions;
}
/**
* Overrides all mutation suggestions (use carefully).
*/
public function setMutationSuggestions(MutationSuggestion ...$mutationSuggestions): void
{
$this->mutationSuggestions = $mutationSuggestions;
}
public function appendMutationSuggestions(MutationSuggestion ...$mutationSuggestions): void
{
if ($mutationSuggestions === []) {
return;
}
$this->mutationSuggestions += $mutationSuggestions;
}
}
@@ -0,0 +1,78 @@
<?php
declare(strict_types=1);
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy\Event;
use Psr\EventDispatcher\StoppableEventInterface;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\MutationCollection;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Policy;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Scope;
final class PolicyMutatedEvent implements StoppableEventInterface
{
private bool $stopPropagation = false;
private Policy $currentPolicy;
/**
* @var list<MutationCollection>
*/
private array $mutationCollections;
public function __construct(
public readonly Scope $scope,
public readonly ?ServerRequestInterface $request,
public readonly Policy $defaultPolicy,
Policy $currentPolicy,
MutationCollection ...$mutationCollections
) {
$this->currentPolicy = $currentPolicy;
$this->mutationCollections = $mutationCollections;
}
public function isPropagationStopped(): bool
{
return $this->stopPropagation;
}
public function stopPropagation(): void
{
$this->stopPropagation = true;
}
public function getCurrentPolicy(): Policy
{
return $this->currentPolicy;
}
public function setCurrentPolicy(Policy $currentPolicy): void
{
$this->currentPolicy = $currentPolicy;
}
/**
* @return list<MutationCollection>
*/
public function getMutationCollections(): array
{
return $this->mutationCollections;
}
public function setMutationCollections(MutationCollection ...$mutationCollections): void
{
$this->mutationCollections = $mutationCollections;
}
}
@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy\Event;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Middleware\PolicyBag;
final readonly class PolicyPreparedEvent
{
public function __construct(
public PolicyBag $policyBag,
public ServerRequestInterface $request,
public string|ResponseInterface|null $response,
) {}
}