v2.6.5 (Lyra): Dynamische pad-resolutie, WordPress-stijl docblocks, security-fix wachtwoord, git-historie schoon

- Bug: dashboard toonde 0 content (AdminPluginAPI::getContentDir() gaf relatief pad terug zonder normalisatie)
- Dynamische pad-resolutie: PluginAPIInterface uitgebreid met getProjectRoot/getContentDir/getPluginsDir/getVersionInfo; CMSAPI en AdminPluginAPI implementeren deze universeel
- public/index.php media-serving gebruikt $config['content_dir'] i.p.v. hardcoded /content
- Navigation en Logs plugins halen paden via de API i.p.v. hardcoded dirname(__DIR__)
- WordPress-stijl docblocks toegevoegd voor alle classes, methods, properties en functies (~450 docblocks, @since 2.6.5)
- Security: hardcoded plaintext-wachtwoord 'admin' verwijderd uit AdminAuth.php; bij eerste installatie wordt een cryptografisch veilig wachtwoord gegenereerd (random_bytes, 16 tekens) en eenmalig op het inlogscherm getoond
- Security: git-geschiedenis schoongemaakt (admin.json, admin.json.example, admin-console/config/admin.json verwijderd uit alle commits; filter-branch over alle branches + tags, gc --prune --aggressive)
- README.md, README.en.md, AGENTS.md bijgewerkt
- Test-scripts bijgewerkt naar clean-URL structuur + actuele ARIA-waarden
- Versie verhoogd naar 2.6.5
- Tests: pentest 29/29, WCAG 25/25, functioneel 16/16, enhanced 25/25
This commit is contained in:
2026-08-27 09:05:51 +00:00
parent 74612aefbb
commit d9ea2eee47
38 changed files with 771 additions and 572 deletions
+8 -8
View File
@@ -8,13 +8,13 @@
* buiten het venster en worden genegeerd. De teller wordt opgeslagen in een
* CacheInterface-implementatie, standaard FileCache.
*
* @since 2.6.4
* @since 2.6.5
*/
class RateLimiter {
/**
* Maximum aantal toegestane pogingen binnen het tijdvenster.
*
* @since 2.6.4
* @since 2.6.5
* @var int
*/
private int $maxAttempts;
@@ -22,7 +22,7 @@ class RateLimiter {
/**
* Lengte van het tijdvenster in seconden.
*
* @since 2.6.4
* @since 2.6.5
* @var int
*/
private int $timeWindow;
@@ -30,7 +30,7 @@ class RateLimiter {
/**
* Cache-implementatie waarin de pogingen worden bijgehouden.
*
* @since 2.6.4
* @since 2.6.5
* @var CacheInterface
*/
private CacheInterface $cache;
@@ -38,7 +38,7 @@ class RateLimiter {
/**
* Maak een nieuwe RateLimiter aan.
*
* @since 2.6.4
* @since 2.6.5
*
* @param int $maxAttempts Maximum aantal pogingen binnen het tijdvenster. Default 10.
* @param int $timeWindow Lengte van het tijdvenster in seconden. Default 60.
@@ -57,7 +57,7 @@ class RateLimiter {
* aantal resterende pogingen onder het maximum ligt wordt de huidige
* poging geregistreerd en true teruggegeven; anders false.
*
* @since 2.6.4
* @since 2.6.5
*
* @param string $identifier Unieke sleutel voor de te beperken actor (bijv. IP of gebruikersnaam).
* @return bool True wanneer de poging is toegestaan, false wanneer het limiet is bereikt.
@@ -89,7 +89,7 @@ class RateLimiter {
* Telt alleen pogingen die binnen het tijdvenster vallen. Het resultaat
* is nooit negatief.
*
* @since 2.6.4
* @since 2.6.5
*
* @param string $identifier Unieke sleutel voor de te beperken actor.
* @return int Aantal resterende pogingen; minimaal 0.
@@ -109,7 +109,7 @@ class RateLimiter {
/**
* Wis alle geregistreerde pogingen voor een identifier.
*
* @since 2.6.4
* @since 2.6.5
*
* @param string $identifier Unieke sleutel voor de te beperken actor.
* @return void