Skip to content

Commit 2b9ed25

Browse files
committed
HttpExtension: added option secureCookies
1 parent c8d7760 commit 2b9ed25

2 files changed

Lines changed: 39 additions & 1 deletion

File tree

src/Bridges/HttpDI/HttpExtension.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class HttpExtension extends Nette\DI\CompilerExtension
2727
'csp' => [], // Content-Security-Policy
2828
'cspReport' => [], // Content-Security-Policy-Report-Only
2929
'featurePolicy' => [], // Feature-Policy
30+
'secureCookies' => null,
3031
];
3132

3233
/** @var bool */
@@ -52,10 +53,14 @@ public function loadConfiguration()
5253
->setFactory('@Nette\Http\RequestFactory::createHttpRequest')
5354
->setClass(Nette\Http\IRequest::class);
5455

55-
$builder->addDefinition($this->prefix('response'))
56+
$response = $builder->addDefinition($this->prefix('response'))
5657
->setFactory(Nette\Http\Response::class)
5758
->setClass(Nette\Http\IResponse::class);
5859

60+
if (!empty($config['secureCookies'])) {
61+
$response->addSetup('$cookieSecure', [true]);
62+
}
63+
5964
if ($this->name === 'http') {
6065
$builder->addAlias('nette.httpRequestFactory', $this->prefix('requestFactory'));
6166
$builder->addAlias('httpRequest', $this->prefix('request'));
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
/**
4+
* Test: SessionExtension.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
use Nette\Bridges\HttpDI\HttpExtension;
10+
use Nette\Bridges\HttpDI\SessionExtension;
11+
use Nette\DI;
12+
use Tester\Assert;
13+
14+
15+
require __DIR__ . '/../bootstrap.php';
16+
17+
18+
$compiler = new DI\Compiler;
19+
$compiler->addExtension('http', new HttpExtension);
20+
$compiler->addExtension('session', new SessionExtension(false, PHP_SAPI === 'cli'));
21+
22+
$loader = new DI\Config\Loader;
23+
$config = $loader->load(Tester\FileMock::create('
24+
http:
25+
secureCookies: yes
26+
', 'neon'));
27+
28+
eval($compiler->addConfig($config)->compile());
29+
30+
$container = new Container;
31+
32+
Assert::true($container->getService('http.response')->cookieSecure);
33+
Assert::true($container->getService('session.session')->getOptions()['cookie_secure']);

0 commit comments

Comments
 (0)