Commit Graph

52532 Commits

Author SHA1 Message Date
Fabien Potencier
9f484e691d bug #39187 [Security] Support for SwitchUserToken instances serialized with 4.4/5.1 (derrabus)
This PR was merged into the 5.2 branch.

Discussion
----------

[Security] Support for SwitchUserToken instances serialized with 4.4/5.1

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

This PR enables `SwitchUserToken` to unserialize earlier versions of itself.

I've executed the following script on the 4.4 branch with php 7.2 to create the fixture included with this PR:

```php
$token = new SwitchUserToken(
    new User('john', null, ['ROLE_USER']),
    ['foo' => 'bar'],
    'main',
    ['ROLE_USER'],
    new UsernamePasswordToken(new User('jane', null, ['ROLE_USER']), ['foo' => 'bar'], 'main', ['ROLE_USER'])
);

file_put_contents(__DIR__.'/switch-user-token-4.4.txt', serialize($token));
```

Commits
-------

01bea3c085 Support for SwitchUserToken instances serialized with 4.4/5.1.
2020-11-27 06:55:40 +01:00
Fabien Potencier
3d384ba76b bug #39180 [Serializer] Fix denormalizing scalar with UnwrappingDenormalizer (camilledejoye)
This PR was merged into the 5.1 branch.

Discussion
----------

[Serializer] Fix denormalizing scalar with UnwrappingDenormalizer

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

In order to work the `UnwrappingDenormlizer` needs to be called first to unwrap the data so that it can be handled by other denormalizers.
To not introduce any BC break this PR does not move the logic into it's own class, instead it checks if a denormalizer supports the data and only denormalize scalar values if there is none.

Commits
-------

98cf389fb9 fix denormalizing scalar with UnwrappingDenormalizer
2020-11-27 06:53:16 +01:00
Alexander M. Turek
01bea3c085 Support for SwitchUserToken instances serialized with 4.4/5.1. 2020-11-27 02:03:01 +01:00
Alexander M. Turek
a07b722891 Merge branch '5.2' into 5.x
* 5.2:
  Fix test.
  [PhpUnitBridge] Fix qualification of deprecations triggered by the debug class loader
  Improve return phpdoc for Normalizer
  Use a partial buffer in SymfonyStyle
  Fix console closing tag
  Fix typo in comment
  [VarDumper] fix casting resources turned into objects on PHP 8
  Removing AnonymousPassport
2020-11-27 01:47:04 +01:00
Alexander M. Turek
62184bd8f0 Merge branch '5.1' into 5.2
* 5.1:
  Fix test.
  [PhpUnitBridge] Fix qualification of deprecations triggered by the debug class loader
  Improve return phpdoc for Normalizer
  Use a partial buffer in SymfonyStyle
  Fix console closing tag
  Fix typo in comment
  [VarDumper] fix casting resources turned into objects on PHP 8
2020-11-27 01:39:34 +01:00
Alexander M. Turek
b047064842 Fix test. 2020-11-27 01:30:48 +01:00
Alexander M. Turek
b96d0089a5 Merge branch '4.4' into 5.1
* 4.4:
  [PhpUnitBridge] Fix qualification of deprecations triggered by the debug class loader
  Improve return phpdoc for Normalizer
  Use a partial buffer in SymfonyStyle
  Fix console closing tag
  Fix typo in comment
  [VarDumper] fix casting resources turned into objects on PHP 8
2020-11-27 00:46:31 +01:00
Alexander M. Turek
6224ffa5a3 bug #38597 [PhpUnitBridge] Fix qualification of deprecations triggered by the debug class loader (fancyweb)
This PR was merged into the 4.4 branch.

Discussion
----------

[PhpUnitBridge] Fix qualification of deprecations triggered by the debug class loader

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

I tested it successfully against the two examples stof gave in the issue. However, I don't see how to write a working real test for this.

The solution I found is to add the missing checked file in the original files stack so when the type of the deprecation is computed instead of having "self" -> "self", we have "vendor" -> "self".

Commits
-------

dff539434e [PhpUnitBridge] Fix qualification of deprecations triggered by the debug class loader
2020-11-26 19:03:26 +01:00
Thomas Calvet
dff539434e [PhpUnitBridge] Fix qualification of deprecations triggered by the debug class loader 2020-11-26 18:48:00 +01:00
Camille Dejoye
98cf389fb9 fix denormalizing scalar with UnwrappingDenormalizer 2020-11-26 14:58:42 +01:00
Robin Chalas
fd910eb5b5 bug #39160 [Console] Use a partial buffer in SymfonyStyle (jderusse)
This PR was merged into the 4.4 branch.

Discussion
----------

[Console] Use a partial buffer in SymfonyStyle

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

Symfony style needs to buffer output in order to get the last 2 chars in order to prepend Block.

By using a `BufferedOutput` symfony bufferize everything while it not needed.

This PR adds a new `TrimmedBufferOutput` that keep only the N last chars.

Commits
-------

18fca2984d Use a partial buffer in SymfonyStyle
2020-11-26 00:15:36 +01:00
Robin Chalas
fb161ec0ee minor #39170 Improve return value for phpdoc of Normalizer (VincentLanglet)
This PR was merged into the 4.4 branch.

Discussion
----------

Improve return value for phpdoc of Normalizer

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | Phpdoc
| New feature?  | no
| Deprecations? | no
| License       | MIT

The inheritdoc return type is too large.
The return type type can be more precise for lot of Normalizer.

Commits
-------

f2713d6580 Improve return phpdoc for Normalizer
2020-11-25 13:22:39 +01:00
Vincent Langlet
f2713d6580 Improve return phpdoc for Normalizer 2020-11-25 12:55:08 +01:00
Jérémy Derussé
18fca2984d
Use a partial buffer in SymfonyStyle 2020-11-25 12:18:08 +01:00
Fabien Potencier
4c378d467e bug #39168 [Console] Fix console closing tag (jderusse)
This PR was merged into the 4.4 branch.

Discussion
----------

[Console] Fix console closing tag

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

When using SymfonyStyle, in some cases, closing a tag, is called twice.
In the following code `<question>do you want <comment>something</>?</>` the first `</>` close both the `comment` and the `question` tags.

![Screenshot from 2020-11-25 01-21-06](https://user-images.githubusercontent.com/578547/100166475-191d9d80-2ebd-11eb-991a-6541210c479b.png)

The reason is, part of the content is sent in 2 Outputs (see #39160 for another issue), and both outputs share the same `$styleStack`.
This PR updates the `OutputFormatter::__clone` method to prevent sharing the same state.

Commits
-------

2834c279d7 Fix console closing tag
2020-11-25 08:47:56 +01:00
Jérémy Derussé
2834c279d7
Fix console closing tag 2020-11-25 01:21:23 +01:00
Alexander M. Turek
f9d2afb9a0 bug #39155 [VarDumper] fix casting resources turned into objects on PHP 8 (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[VarDumper] fix casting resources turned into objects on PHP 8

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

Commits
-------

76a077d947 [VarDumper] fix casting resources turned into objects on PHP 8
2020-11-24 17:05:32 +01:00
Robin Chalas
14945bbeab minor #39158 Fix typo in comment (eltociear)
This PR was submitted for the 5.x branch but it was merged into the 4.4 branch instead.

Discussion
----------

Fix typo in comment

| Q             | A
| ------------- | ---
| Branch?       | 5.x  <!-- see below -->
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch 5.x.
-->

fixed spelling below.

* possibe -> possible

Commits
-------

ca93ae5b1a Fix typo in comment
2020-11-24 14:31:40 +01:00
Ikko Ashimine
ca93ae5b1a Fix typo in comment
possibe -> possible
2020-11-24 14:31:32 +01:00
Christian Flothmann
673b8e941a fix lexing strings containing escaped quotation characters 2020-11-24 13:28:30 +01:00
Nicolas Grekas
76a077d947 [VarDumper] fix casting resources turned into objects on PHP 8 2020-11-24 10:55:37 +01:00
gary houbre
449147bc17 Added Invalid constant into Command Class 2020-11-23 16:56:49 +01:00
Michael Käfer
1e3baad386 23412 Stop treating multiline resources as globs 2020-11-22 23:59:06 +01:00
Robin Chalas
ac2822f61f minor #39138 [Security] Removing Unused AnonymousPassport (weaverryan)
This PR was merged into the 5.2 branch.

Discussion
----------

[Security] Removing Unused AnonymousPassport

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | none
| License       | MIT
| Doc PR        | not needed

This is not used - it's leftover from the security component authenticator changes. I double-checked with @wouterj.

Cheers!

Commits
-------

79571e0e77 Removing AnonymousPassport
2020-11-22 15:59:58 +01:00
Ryan Weaver
79571e0e77 Removing AnonymousPassport
This is not used - is leftover from the security component
authenticator changes
2020-11-22 09:22:08 -05:00
Christian Flothmann
fe6a2dd64f prevent duplicated error message for file upload limits 2020-11-21 11:45:32 +01:00
Christian Flothmann
49eafee033 Merge branch '5.2' into 5.x
* 5.2:
  Bump Symfony version to 5.2.0
  Update VERSION for 5.2.0-RC2
  Update CHANGELOG for 5.2.0-RC2
  Display debug info
  [HttpFoundation] Typo on deprecation package name
  [DoctrineBridge] drop binary variants of UID types
  [HttpClient] don't fallback to HTTP/1.1 when HTTP/2 streams break
  Default to user provider, if available, in password upgrader
  fix lexing nested sequences/mappings
2020-11-21 10:41:20 +01:00
Christian Flothmann
bdadbf31a0 Merge branch '5.1' into 5.2
* 5.1:
  Display debug info
  [HttpClient] don't fallback to HTTP/1.1 when HTTP/2 streams break
  fix lexing nested sequences/mappings
2020-11-21 10:39:55 +01:00
Christian Flothmann
634d168d9c Merge branch '4.4' into 5.1
* 4.4:
  [HttpClient] don't fallback to HTTP/1.1 when HTTP/2 streams break
  fix lexing nested sequences/mappings
2020-11-21 10:37:14 +01:00
Fabien Potencier
af8bd4bd26 Bump Symfony version to 5.2.0 2020-11-21 09:49:39 +01:00
Fabien Potencier
cbce53759e
Merge pull request #39133 from fabpot/release-5.2.0-RC2
released v5.2.0-RC2
2020-11-21 09:46:11 +01:00
Fabien Potencier
192b826178 Update VERSION for 5.2.0-RC2 2020-11-21 09:45:53 +01:00
Fabien Potencier
81e11928ce Update CHANGELOG for 5.2.0-RC2 2020-11-21 09:45:38 +01:00
Fabien Potencier
ab9c4a7702 bug #39131 [Cache] Fix CI because of Couchbase version (jderusse)
This PR was merged into the 5.1 branch.

Discussion
----------

[Cache] Fix CI because of Couchbase version

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

It looks likes the version 3.0 of the couchbase extension does not exposes the `\CouchbaseCluster` class anymore.
I didn't find documentaiton about the BC break, but their documentation changes
version 2.6 => https://docs.couchbase.com/php-sdk/2.6/managing-connections.html
version 3.0 => https://docs.couchbase.com/php-sdk/current/howtos/managing-connections.html

It wasn't reported before, because `shivammathur/setup-php` added the extension 3days ago https://github.com/shivammathur/setup-php/pull/337

Sounds like the adapter were never tested, because the extension where missing and phpunit skipped the tests.

Commits
-------

fcbf0bf76e Display debug info
2020-11-21 06:48:12 +01:00
Alexander M. Turek
09a79d3f1f minor #39121 [HttpFoundation] Typo on deprecation package name (andersonamuller)
This PR was merged into the 5.2 branch.

Discussion
----------

[HttpFoundation] Typo on deprecation package name

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

Commits
-------

4c6f4c7b9c [HttpFoundation] Typo on deprecation package name
2020-11-21 01:28:00 +01:00
Jérémy Derussé
fcbf0bf76e
Display debug info 2020-11-20 23:06:42 +01:00
Anderson Müller
4c6f4c7b9c
[HttpFoundation] Typo on deprecation package name 2020-11-20 18:25:36 +01:00
Alexander M. Turek
9ce2e86207 [HttpFoundation] Deprecate BinaryFileResponse::create(). 2020-11-20 16:47:02 +01:00
Robin Chalas
a273b71151 feature #39075 [Messenger]  Allow InMemoryTransport to serialize message (tyx)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Messenger]  Allow InMemoryTransport to serialize message

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

This introduce a query parameter in dsn to enable serialization as @Nyholm has suggested in #38893

`in-memory://?serialize=true`

Commits
-------

46a8007afc [Messenger] Allow InMemoryTransport to serialize message
2020-11-20 11:29:41 +01:00
Robin Chalas
04eec8bfc7 feature #38982 [Console][Yaml] Linter: add Github annotations format for errors (ogizanagi)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[Console][Yaml] Linter: add Github annotations format for errors

| Q             | A
| ------------- | ---
| Branch?       | 5.x <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | N/A <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | TODO

Github actions [can write errors and warning](https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-error-message) directly in their output, which result into annotations into the Github checks. It can even provide a filename, line & col number, allowing to display the annnotations inside the PR diff directly, at the right place.

More advanced usage of annotations can be made using the [API](https://docs.github.com/en/free-pro-team@latest/rest/reference/checks#list-check-run-annotations), but regarding the linters provided in Symfony components, it seems the shortcut using output is a great way to enhance the integration with Github Actions.

This PR starts by proposing these changes in the yaml linter:
- add the `github` format, which is the same as the `txt` one, except for errors and warning, for which we'll adapt the output to the Github annotations format.
- remove the `txt` format as default, and autodetect if the script is running in a Github action context, then use `github` format. If it's not, we fallback to `txt` as before.

Once we agree on the details, we could perform the same for other linters (xliff, twig, ...)

Here is a PR using it: https://github.com/ogizanagi/symfony-lint-gha-demo/pull/2

and some screenshots:

| PR checks run | PR checks annotations | PR diff |
| -- | -- | -- |
| ![Capture d’écran 2020-11-04 à 09 37 07](https://user-images.githubusercontent.com/2211145/98089377-ed416600-1e82-11eb-8b10-40602b45efb1.png) | ![Capture d’écran 2020-11-04 à 09 37 28](https://user-images.githubusercontent.com/2211145/98089379-edd9fc80-1e82-11eb-8302-4e104abaeb2c.png) | ![Capture d’écran 2020-11-04 à 09 38 28](https://user-images.githubusercontent.com/2211145/98089381-edd9fc80-1e82-11eb-982a-9e4413ec30ba.png) |

~~(tests to add)~~

---

This was inspired by [PHPStan](d77bd87da9/src/Command/ErrorFormatter/GithubErrorFormatter.php) which is already auto-adapting the output according to the CI, using https://github.com/OndraM/ci-detector

Commits
-------

f0bbdc8d72 [Console][Yaml] Linter: add Github annotations format for errors
2020-11-20 09:48:18 +01:00
Maxime Steinhausser
f0bbdc8d72 [Console][Yaml] Linter: add Github annotations format for errors 2020-11-20 09:48:10 +01:00
Grégoire Paris
574a184b9a
Require doctrine/persistence 2
This allows us to remove autoload calls that are necessary for the
persistence 1 backwards-compatibility layer to work.
The require-dev constraints on doctrine/orm are bumped to ^2.7.3 because
lower versions are not compatible with doctrine/persistence 2.
2020-11-20 09:22:35 +01:00
Fabien Potencier
c13d5b5053 bug #39113 [DoctrineBridge] drop binary variants of UID types (nicolas-grekas)
This PR was merged into the 5.2 branch.

Discussion
----------

[DoctrineBridge] drop binary variants of UID types

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

#39112 made me realize that when the DB engine doesn't have a native UUID/GUID type, there's no benefit to representing ULIDs as UUIDs.

This PR proposes to use the native GUID type for both UUIDs and ULIDs only when the DB engine provides such a type, and to use `BINARY(16)` when the DB engine doesn't have a native GUID type.

This leaves us in a situation where, whether the DB engine supports GUID natively or not, UUID and ULID are always stored in the most compact format.

This makes the "binary" variants useless.

MySQL 8 has [functions](https://mysqlserverteam.com/mysql-8-0-uuid-support/) to deal with binary GUID, and so does [SQLite](https://sqlite.org/src/file/ext/misc/uuid.c).

Commits
-------

bdfc20520e [DoctrineBridge] drop binary variants of UID types
2020-11-19 10:31:30 +01:00
Fabien Potencier
b60bb6e2d6 bug #39115 [HttpClient] don't fallback to HTTP/1.1 when HTTP/2 streams break (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] don't fallback to HTTP/1.1 when HTTP/2 streams break

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix https://github.com/composer/composer/issues/9481
| License       | MIT
| Doc PR        | -

With this change, I don't reproduce the failures that I describe in https://github.com/composer/composer/issues/9481 when running the script in #38690

Apparently curl has an issue when both h1.1 and h2 connections are open to the same host.

Instead of switching to HTTP/1.1 when retrying requests that failed because of an HTTP/2 stream error, I propose to close the http/2 connection when issuing a retry.

With this change, running the mirroring script of packagist works like a charm.

No need to investigate your mirrors @Seldaek, this was definitely a data corruption issue.

Commits
-------

0c92bc5a83 [HttpClient] don't fallback to HTTP/1.1 when HTTP/2 streams break
2020-11-19 07:02:19 +01:00
Fabien Potencier
308231aafb bug #33763 [Yaml] fix lexing nested sequences/mappings (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Yaml] fix lexing nested sequences/mappings

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #34805, #37788, #37876, #39011, #39013, #39064
| License       | MIT
| Doc PR        |

Commits
-------

4c15f80d84 fix lexing nested sequences/mappings
2020-11-19 06:58:37 +01:00
Nicolas Grekas
bdfc20520e [DoctrineBridge] drop binary variants of UID types 2020-11-19 01:44:06 +01:00
Nicolas Grekas
0c92bc5a83 [HttpClient] don't fallback to HTTP/1.1 when HTTP/2 streams break 2020-11-19 01:16:06 +01:00
Robin Chalas
de09329253 feature #39111 [Security] Update password upgrader listener to work with the new UserBadge (wouterj)
This PR was merged into the 5.2 branch.

Discussion
----------

[Security] Update password upgrader listener to work with the new UserBadge

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

While working on a new amazing `make:auth` maker, @jrushlow discovered that we forgot to update the `PasswordUpgradeBadge` with the 5.2 `UserBadge` changes (ref https://github.com/symfony/symfony/pull/37846).

This PR fixes it, by making the password upgrader optional and falling back to the user provider instead. Without these changes, each authenticator still needs to know the user repository/user provider in order to pass it to `PasswordUpgradeBadge`.

I'm sorry for catching this soo late in the release cycle. There is a BC break involved here, but it's (a) very unlikely to impact application code and (b) in an experimental class.

Commits
-------

e39e844606 Default to user provider, if available, in password upgrader
2020-11-18 22:42:13 +01:00
Wouter de Jong
e39e844606 Default to user provider, if available, in password upgrader 2020-11-18 22:00:38 +01:00
Alexander M. Turek
3c0cfbcb8c Merge branch '5.2' into 5.x
* 5.2:
  do not depend on the actual time to fix a transient test
  Run Redis Sentinel tests in GithubAction
  Minor : Removed typo (extra "the" term)
  Check if method inheritEnvironmentVariables exists
  [PhpUnitBridge] Fix test fixture file name
2020-11-18 11:00:07 +01:00