Skip to content

Commit dced1d2

Browse files
committed
Prepare 3.1.1 release polish
1 parent fd65abb commit dced1d2

3 files changed

Lines changed: 40 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,22 @@ history, the old changelog, and committed file changes. Older Zemit-era entries
1515
are summarized where the commit history is too granular to be useful as
1616
release notes.
1717

18+
## 3.1.1 - 2026-06-11
19+
20+
### Added
21+
22+
- Added dispatcher security regression coverage confirming that
23+
`acl.attributes=false` disables controller attribute scanning and leaves
24+
config-only ACL applications on the legacy permission path.
25+
26+
### Changed
27+
28+
- Raised Composer suggested and development dependency floors for
29+
`aws/aws-sdk-php`, `guzzlehttp/guzzle`, and `phalcon/ide-stubs` to the latest
30+
compatible patch/minor releases validated against the `3.1.x` line.
31+
- Refocused the active roadmap on the next REST controller scaffold-readiness
32+
block after the `3.1.0` REST ergonomics and policy-attribute work shipped.
33+
1834
## 3.1.0 - 2026-06-11
1935

2036
### Added

ROADMAP.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,21 @@ guidance in the relevant guide or shipped skill reference.
3232

3333
## Current Focus
3434

35-
Target: `3.1.0` REST API ergonomics, controller policy attributes, and scaffold
36-
readiness
35+
Target: `3.2.0` REST controller scaffold readiness
3736

38-
Theme: keep REST controller declarations concise and predictable, then continue
39-
the scaffold work with a clear generated-file ownership contract.
37+
Theme: turn the now-stable REST controller policy surface into a cautious,
38+
tested scaffold contract without overwriting app-owned decisions.
4039

4140
Decision:
4241

4342
- Completed `3.0.4` coverage and maintenance work belongs in the changelog, not
4443
active roadmap blocks.
45-
- REST policy declaration ergonomics start the `3.1.0` development line:
46-
collection-backed setters should accept arrays while storing normalized
47-
collections internally.
48-
- Controller/action policy declarations can live beside controller code through
49-
optional attributes, while the runtime still compiles them into the existing
50-
permission config and ACL enforcement path.
44+
- The `3.1.x` REST policy ergonomics and controller-attribute work is shipped;
45+
durable usage guidance belongs in the REST and identity guides.
5146
- The next schedulable block is REST controller scaffold readiness. Start with
5247
generated-file ownership before adding public scaffolding behavior.
48+
- Attribute and array-policy regressions should still be covered when scaffolded
49+
controllers begin emitting those declarations.
5350

5451
Release principles:
5552

@@ -66,7 +63,7 @@ Release principles:
6663

6764
Status: Next
6865

69-
Target: `3.1.0`
66+
Target: `3.2.0`
7067

7168
Why:
7269

tests/Unit/Dispatcher/DispatcherTest.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,18 @@ public function testMvcSecurityAllowsControllerAttributeRolePolicy(): void
274274

275275
$this->assertTrue($security->checkAcl($event, $dispatcher));
276276
}
277+
278+
public function testMvcSecuritySkipsControllerAttributesWhenDisabled(): void
279+
{
280+
[$security, $event, $dispatcher] = $this->createAttributeMvcSecurityFixture(['admin'], false);
281+
282+
$dispatcher->setActionName('findWith');
283+
284+
$this->withoutPhpWarnings(function () use ($security, $event, $dispatcher): void {
285+
$this->assertFalse($security->checkAcl($event, $dispatcher));
286+
});
287+
$this->assertSame('not-found', $dispatcher->getActionName());
288+
}
277289

278290
public function testToArray(): void
279291
{
@@ -412,7 +424,7 @@ public function getAclRoles(): array
412424
* 2: \PhalconKit\Mvc\Dispatcher
413425
* }
414426
*/
415-
private function createAttributeMvcSecurityFixture(array $roles): array
427+
private function createAttributeMvcSecurityFixture(array $roles, bool $attributes = true): array
416428
{
417429
$dispatcher = new \PhalconKit\Mvc\Dispatcher();
418430
$dispatcher->setNamespaceName('PhalconKit\\Tests\\Unit\\Mvc\\Controller\\Traits\\Fixtures');
@@ -421,6 +433,9 @@ private function createAttributeMvcSecurityFixture(array $roles): array
421433

422434
$di = new \Phalcon\Di\Di();
423435
$di->set('config', new Config([
436+
'acl' => [
437+
'attributes' => $attributes,
438+
],
424439
'permissions' => [],
425440
'router' => [
426441
'notFound' => [

0 commit comments

Comments
 (0)