Commit Graph

53795 Commits

Author SHA1 Message Date
Jesse Rushlow
abb534ab56
implement twig serialize filter 2021-03-02 01:27:30 -05:00
Damien Fa
cc7409502a changes rebased 2021-03-02 00:08:58 +01:00
Robin Chalas
252f85c2c2 minor #40335 [FrameworkBundle] Disable lock to fix FrameworkBundle standalone tests in deps=high (wouterj)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[FrameworkBundle] Disable lock to fix FrameworkBundle standalone tests in deps=high

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

b169ef9259 [FrameworkBundle] Explicitly disable lock to fix FrameworkBundle standalone tests
2021-03-01 15:08:39 +01:00
Christian Flothmann
07d7f6bad7 bug #40316 [Serializer] zero parts can be omitted in date interval input (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Serializer] zero parts can be omitted in date interval input

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #35820
| License       | MIT
| Doc PR        |

Commits
-------

c316708669 zero parts can be omitted in date interval input
2021-03-01 14:37:03 +01:00
Alexander M. Turek
f49ca6f9cc Merge branch '5.2' into 5.x
* 5.2:
  improve exception message if symfony/security-csrf is missing
  fix: MockResponse total_time should not be simulated when provided
2021-03-01 01:41:04 +01:00
Alexander M. Turek
82e3b17cf4 Merge branch '4.4' into 5.2
* 4.4:
  improve exception message if symfony/security-csrf is missing
  fix: MockResponse total_time should not be simulated when provided
2021-03-01 01:40:14 +01:00
Wouter de Jong
b169ef9259 [FrameworkBundle] Explicitly disable lock to fix FrameworkBundle standalone tests 2021-02-27 20:48:21 +01:00
Albert Casademont
381a0a19f7 use InputBag for POST requests too, added missing scalar type hints 2021-02-26 23:11:14 +01:00
Alexander M. Turek
f0e076a013 feature #40307 [HttpKernel] Handle multi-attribute controller arguments (chalasr)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[HttpKernel] Handle multi-attribute controller arguments

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | yes
| Tickets       | -
| License       | MIT
| Doc PR        | todo

Currently, the `ArgumentMetadata` class used for controller argument value resolution can only hold one attribute per controller argument, while a method argument can take multiple attributes.

This allows accessing all attributes for a given argument, and deprecates the `ArgumentInterface` because it is not needed.
Spotted by @nicolas-grekas.

Commits
-------

d771e449ec [HttpKernel] Handle multi-attribute controller arguments
2021-02-26 19:19:30 +01:00
Christian Flothmann
4721097cab deal with indented heredoc/nowdoc tokens 2021-02-26 14:53:48 +01:00
Nicolas Grekas
4a9c8297ea fix tests 2021-02-26 14:19:17 +01:00
Nyholm
b3c4d639dd
minor #40314 improve exception message if symfony/security-csrf is missing (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

improve exception message if symfony/security-csrf is missing

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37452
| License       | MIT
| Doc PR        |

Commits
-------

1a26ed43e7 improve exception message if symfony/security-csrf is missing
2021-02-26 13:58:15 +01:00
Nicolas Grekas
8f03a1f555 [Cache] boost perf by wrapping keys validity checks with assert() 2021-02-26 13:15:59 +01:00
Christian Flothmann
c316708669 zero parts can be omitted in date interval input 2021-02-26 13:02:03 +01:00
Christian Flothmann
1a26ed43e7 improve exception message if symfony/security-csrf is missing 2021-02-26 11:19:16 +01:00
Nicolas Grekas
a5683c5324 bug #40239 MockResponse total_time should not be simulated when provided (Pierrick VIGNAND)
This PR was merged into the 4.4 branch.

Discussion
----------

MockResponse total_time should not be simulated when provided

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

When you provide a `total_time` to a MockResponse, it is overriden. It should be simulated only when it is not provided I guess.
Ex: `new MockResponse('{"foo":"bar"}', ['total_time' => 0.4])`

Commits
-------

8dada95cbf fix: MockResponse total_time should not be simulated when provided
2021-02-26 11:01:20 +01:00
Pierre PLAZANET
116c54a554 Fix FrameworkBundle PropertyAccess definition when not in debug 2021-02-26 10:07:24 +01:00
Fabien Potencier
79f6a5c692 feature #40284 [RateLimiter][Security] Allow to use no lock in the rate limiter/login throttling (wouterj)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[RateLimiter][Security] Allow to use no lock in the rate limiter/login throttling

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix -
| License       | MIT
| Doc PR        | tbd

This PR adds support for disabling lock in rate limiters. This was brought up by @Seldaek. In most cases (e.g. login throttling), it's not critical to strictly avoid even a single overflow of the window/token. At least, it's probably not always worth the extra load on the lock storage (e.g. redis).

It also directly disables locking by default for login throttling. I'm not sure about this, but I feel like this fits the 80% case where it's definitely not needed (and it's easier to use if you don't need to set-up locking first).

Commits
-------

45be875e84 [Security][RateLimiter] Allow to use no lock in the rate limiter/login throttling
2021-02-26 08:27:17 +01:00
Robin Chalas
d771e449ec [HttpKernel] Handle multi-attribute controller arguments 2021-02-26 01:25:47 +01:00
Nicolas Grekas
59fbe57ed1 feature #39607 [Messenger] Add rediss:// DSN scheme support for TLS to Redis transport (njutn95)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[Messenger] Add `rediss://` DSN scheme support for TLS to Redis transport

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       |
| License       | MIT
| Doc PR        |

This adds a support for `rediss://` DSN (as discussed in https://github.com/symfony/symfony/pull/39599) and deprecates the use of `tls` parameter introduced in https://github.com/symfony/symfony/pull/35503 so it can be standardized to single format.

Commits
-------

28e7b74b47 [Messenger] Add `rediss://` DSN scheme support for TLS to Redis transport
2021-02-26 01:02:05 +01:00
viktor
28e7b74b47 [Messenger] Add rediss:// DSN scheme support for TLS to Redis transport 2021-02-26 01:01:54 +01:00
Nicolas Grekas
008f28026c Merge branch '5.2' into 5.x
* 5.2:
  [Cache] Add server-commands support for Predis Replication Environments
  Speedup psalm
2021-02-26 00:55:26 +01:00
Nicolas Grekas
2068652fc9 Merge branch '4.4' into 5.2
* 4.4:
  [Cache] Add server-commands support for Predis Replication Environments
  Speedup psalm
2021-02-26 00:54:56 +01:00
Nicolas Grekas
3fe1564912 bug #40299 [Cache] Add server-commands support for Predis Replication Environments (DemigodCode)
This PR was merged into the 4.4 branch.

Discussion
----------

[Cache] Add server-commands support for Predis Replication Environments

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #35867
| License       | MIT
| Doc PR        |

This fix is for predis MasterSlaveConnections which don't allow to run server commands.
Due to that it's not possible to e.g. clear a cache with cache:pool:clear.

PhpRedis and Predis do not have the same interface, so have to check which implementation is used.
Furthermore, the getClientFor('master') works only for replicated redis instances.

Commits
-------

2ae5c33c80 [Cache] Add server-commands support for Predis Replication Environments
2021-02-26 00:52:22 +01:00
DemigodCode
2ae5c33c80 [Cache] Add server-commands support for Predis Replication Environments 2021-02-26 00:52:11 +01:00
Nicolas Grekas
e141afb60b minor #40311 Speedup psalm (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

Speedup psalm

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

My try at #40310

Commits
-------

3fb74abe62 Speedup psalm
2021-02-26 00:44:25 +01:00
Nicolas Grekas
3fb74abe62 Speedup psalm 2021-02-26 00:35:49 +01:00
Robin Chalas
64b76968bf minor #40309 Fix deprecation messages (rosier)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

Fix deprecation messages

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | yes
| Tickets       | -
| License       | MIT
| Doc PR        | -

The wrong namespace is used in the deprecation messages

Commits
-------

4aca3edb9e Fix deprecation messages
2021-02-25 19:35:29 +01:00
Jan Rosier
4aca3edb9e Fix deprecation messages 2021-02-25 19:35:00 +01:00
Pierrick VIGNAND
8dada95cbf
fix: MockResponse total_time should not be simulated when provided 2021-02-25 19:06:45 +01:00
Nicolas Grekas
d9dedb45bd feature #40306 [HttpClient] Add HttpClientInterface::withOptions() (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[HttpClient] Add `HttpClientInterface::withOptions()`

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

I've been thinking about this method for a few months already.
We miss a way to configure an HTTP client in a generic way.
This is useful when eg building an API client as this allows configuring default options once for a consumer, eg in the constructor.

```php
$this->client = $client->withOptions(['base_uri' => 'https://...']);

// [...]

$response = $this->client->request('GET', '/relative-url');
```

Commits
-------

439742ff33 [HttpClient] Add `HttpClientInterface::withOptions()`
2021-02-25 18:53:57 +01:00
Nicolas Grekas
60ce52f503 Merge branch '5.2' into 5.x
* 5.2:
  fix merge
2021-02-25 18:37:08 +01:00
Nicolas Grekas
5854d55aef fix merge 2021-02-25 18:36:22 +01:00
Nicolas Grekas
cd59bfa080 Merge branch '5.2' into 5.x
* 5.2:
  [HttpKernel] Configure `session.cookie_secure` earlier
  Make sure the Psalm review CI job is working
  Adding a Github action to run Psalm
2021-02-25 18:20:06 +01:00
Nicolas Grekas
d978bea326 Merge branch '4.4' into 5.2
* 4.4:
  [HttpKernel] Configure `session.cookie_secure` earlier
  Make sure the Psalm review CI job is working
  Adding a Github action to run Psalm
2021-02-25 18:16:57 +01:00
Nicolas Grekas
87aeb8da13 bug #40231 [HttpKernel] Configure session.cookie_secure earlier (tamcy)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpKernel] Configure `session.cookie_secure` earlier

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #40221
| License       | MIT
| Doc PR        | N/A

This PR does what @stof had suggested in #40221, allow me to quote him directly:

> 1. avoid setting auto as a value for the ini setting in the NativeSessionStorage initialization
> 2. ensuring that SessionListener resolves the auto value by the time the SessionListener runs, and not by the time the getSession() method is called in the Request session factory callback

Commits
-------

e82918cd60 [HttpKernel] Configure `session.cookie_secure` earlier
2021-02-25 18:12:57 +01:00
tamcy
e82918cd60 [HttpKernel] Configure session.cookie_secure earlier 2021-02-25 18:11:33 +01:00
Nicolas Grekas
07b6efb19f minor #40308 Make sure the Psalm review CI job is working (Nyholm)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

Make sure the Psalm review CI job is working

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

This PR is just a test to make sure psalm works as expected.

EDIT: It also fixes issues..

Commits
-------

d5a05f1b30 Make sure the Psalm review CI job is working
2021-02-25 17:51:29 +01:00
Nyholm
d5a05f1b30 Make sure the Psalm review CI job is working 2021-02-25 17:51:23 +01:00
Nicolas Grekas
439742ff33 [HttpClient] Add HttpClientInterface::withOptions() 2021-02-25 17:38:04 +01:00
Wouter de Jong
45be875e84 [Security][RateLimiter] Allow to use no lock in the rate limiter/login throttling 2021-02-25 17:33:05 +01:00
Nicolas Grekas
e2f1c46734 feature #39883 [Uid] Add Generate and Inspect commands (fancyweb)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Uid] Add Generate and Inspect commands

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

After some time using the component, I realized I often needed to quickly generate new ulids or to convert them from one format to another so I thought having those commands would be useful.

# Usage

## Generate a ULID - outputs N ULID(s) separated by new lines in base 32, base 58 or RFC 4122 format

### Generate 1 ULID now
`php bin/console ulid:generate`

### Generate 1 ULID with a specific timestamp
`php bin/console ulid:generate --time="2021-02-02 14:00:00"`

### Generate 2 ULIDs and ouput the RFC4122 format
`php bin/console ulid:generate --count=2 --format=rfc4122`

## Generate a UUID - outputs N UUID(s) separated by new lines in RFC 4122, base 58 or base 32 format

### Generate 1 UUID (defaults from the underlying factory)
`php bin/console uuid:generate`

### Generate 1 time-based UUID now
`php bin/console uuid:generate --time-based=now`

### Generate 1 time-based UUID with a specific timestamp
`php bin/console uuid:generate --time-based="2021-02-02 14:00:00"`

### Generate 1 time-based UUID with a specific node
`php bin/console uuid:generate --time-based=now --node=fb3502dc-137e-4849-8886-ac90d07f64a7`

### Generate 1 name-based UUID (there must be a default namespace in the underlying factory)
`php bin/console uuid:generate --name-based=foo`

### Generate 1 name-based UUID with a specific namespace (overrides the default namespace from the underlying factory)
`php bin/console uuid:generate --name-based=foo --namespace=fb3502dc-137e-4849-8886-ac90d07f64a7`

### Generate 1 random-based UUID
`php bin/console uuid:generate --random-based`

### Generate 2 UUIDs and output their base 58 format
`php bin/console uuid:generate --count=2 --format=base58`

## Inspect a ULID - outputs base32, base58 and RFC 4122 formats of a ULID and its humand readable timestamp if it is time-based
`php bin/console ulid:inspect 01EWAKBCMWQ2C94EXNN60ZBS0Q`
`php bin/console ulid:inspect 1BVdfLn3ERmbjYBLCdaaLW`
`php bin/console ulid:inspect 01771535-b29c-b898-923b-b5a981f5e417`

## Inspect a UUID - outputs RFC 4122, base 58 and base 32 formats of a UUID and its human readable timestamp
`php bin/console uuid:inspect a7613e0a-5986-11eb-a861-2bf05af69e52`
`php bin/console uuid:inspect MfnmaUvvQ1h8B14vTwt6dX`
`php bin/console uuid:inspect 57C4Z0MPC627NTGR9BY1DFD7JJ`

# Register the commands

## YAML
```yaml
# services.yaml
services:
    Symfony\Component\Uid\Command\GenerateUlidCommand: ~
    Symfony\Component\Uid\Command\GenerateUuidCommand: ~
    Symfony\Component\Uid\Command\InspectUlidCommand: ~
    Symfony\Component\Uid\Command\InspectUuidCommand: ~
```

## PHP
```php
<?php

// services.php

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use Symfony\Component\Uid\Command\GenerateUlidCommand;
use Symfony\Component\Uid\Command\GenerateUuidCommand;
use Symfony\Component\Uid\Command\InspectUlidCommand;
use Symfony\Component\Uid\Command\InspectUuidCommand;

return static function (ContainerConfigurator $configurator): void {
    $services = $configurator->services()
        ->defaults()
        ->autowire()
        ->autoconfigure();

    $services
        ->set(GenerateUlidCommand::class)
        ->set(GenerateUuidCommand::class)
        ->set(InspectUlidCommand::class)
        ->set(InspectUuidCommand::class);
};
```

Commits
-------

223421b6ca [Uid] Add Generate and Inspect commands
2021-02-25 17:25:32 +01:00
Nicolas Grekas
890ada429d minor #40291 Adding a Github action to run Psalm (Nyholm)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

Adding a Github action to run Psalm

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/15024

I've seen sometimes that we've forgotten to add `\` before `Throwable` or that we refer to a class that does not exist. One could argue that the code is not properly tested, but somehow these PRs still get merged. (And quickly fixed in a follow up PR).

I suggest to add psalm to check every PR for some errors that can be found with a static analyser. This is to help/automate the PR review process. All psalm errors found should be reviewed and discussed. The maintainers can decide to ignore some warnings if they want to. (Ie false positives)

This PR is about “Psalm PR review”. It does not try to fix “Psalm compatibility”. Psalm compatibility is a separate issue that should be discussed separate from the "Psalm PR review".

I currently plan to follow up with the more controversial topic of "Should we make Symfony more compatible with Psalm or not".

Commits
-------

c5ed24d8cb Adding a Github action to run Psalm
2021-02-25 17:18:26 +01:00
Nyholm
c5ed24d8cb Adding a Github action to run Psalm 2021-02-25 17:18:18 +01:00
Nicolas Grekas
1849b571b5 feature #40140 [DependencyInjection] Add ContainerBuilder::willBeAvailable() to help with conditional configuration (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[DependencyInjection] Add ContainerBuilder::willBeAvailable() to help with conditional configuration

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #40136, fix #39356
| License       | MIT
| Doc PR        | no need to

Leverages https://github.com/composer/composer/pull/9682 to ignore dev-packages when configuring the container.

Commits
-------

47c471e2c4 [DependencyInjection] Add ContainerBuilder::willBeAvailable() to help with conditional configuration
2021-02-25 17:13:15 +01:00
Robin Chalas
adbb34115c Merge branch '5.2' into 5.x
* 5.2:
  [TwigBridge] Install symfony/intl to run tests on Travis
  [Translation] Make `name` attribute optional in xliff2
  [Security] #[CurrentUser] argument should resolve to null when it is anonymous
2021-02-25 14:42:49 +01:00
Robin Chalas
f4c9feeb75 Merge branch '4.4' into 5.2
* 4.4:
  [TwigBridge] Install symfony/intl to run tests on Travis
  [Translation] Make `name` attribute optional in xliff2
2021-02-25 14:42:30 +01:00
Nyholm
b95544559a
minor #40304 [TwigBridge] Install symfony/intl to run tests on Travis (wouterj)
This PR was merged into the 4.4 branch.

Discussion
----------

[TwigBridge] Install symfony/intl to run tests on Travis

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | bi
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

The hard dependency on `symfony/intl` was removed from the Form component in 5.3-dev (#40298). I suggest to add the explicit dev dependency on TwigBridge on 4.4 already.

Commits
-------

b2970456bf [TwigBridge] Install symfony/intl to run tests on Travis
2021-02-25 13:43:50 +01:00
Wouter de Jong
b2970456bf [TwigBridge] Install symfony/intl to run tests on Travis 2021-02-25 12:27:58 +01:00
Fabien Potencier
d54a1223f7 feature #40266 [Routing] Construct Route annotations using named arguments (derrabus)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Routing] Construct Route annotations using named arguments

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | N/A
| License       | MIT
| Doc PR        | Not needed

This PR proposes to bump the `doctrine/annotations` library to 1.12 to gain access to its emulation layer for named arguments. Furthermore, constructing a `Route` annotation the old way by passing an array of parameters is deprecated.

### Reasons for this change

The constructors of our annotation classes have become unnecessarily complicated because we have to support two ways of calling them:
* An array of parameters, passed as first argument, because that's the default behavior `doctrine/annotations`.
* A set of named arguments because that's how PHP 8 attributes work.

Since we can now tell the Doctrine annotation reader to use named arguments as well, we can simplify the constructors of our annotations significantly.

### Drawback

After this change, there is no easy way anymore to construct instances of the `Route` annotation class directly on PHP 7. The PR has been built under the assumption that instances of this class are usually created using either Doctrine annotations or a PHP 8 attribute. Thus, most applications should be unaffected by this change.

Commits
-------

29b0f96046 [Routing] Construct Route annotations using named arguments
2021-02-25 08:31:04 +01:00