Commit Graph

29224 Commits

Author SHA1 Message Date
Laurent Masforné
1331584fa1 [String] Add locale-sensitive map for slugging symbols 2020-04-21 21:55:25 +02:00
Sebastiaan Stok
5cb633c0dd
Update CsrfTokenBadge.php 2020-04-21 17:08:27 +02:00
Fabien Potencier
6167ce4961 [Notifier] Fix error handling for Free mobile 2020-04-21 16:08:57 +02:00
Fabien Potencier
2235be0864 feature #36516 [Notifier] Throw an exception when the Slack DSN is not valid (fabpot)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Notifier] Throw an exception when the Slack DSN is not valid

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes-ish
| New feature?  | yes-ish <!-- 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 #", if any -->
| License       | MIT
| Doc PR        | n/a

Improved errors in case of a DSN issue.
+ proper error for the Slack DSN when path is empty (will help catch when people haven't updated their Slack DSN for 5.1).

Commits
-------

6b1a64a642 [Notifier] Throw an exception when the Slack DSN is not valid
2020-04-21 15:48:22 +02:00
Fabien Potencier
5a9481784c Fix wrong version in composer.json 2020-04-21 15:43:00 +02:00
Fabien Potencier
a89a2a8893 Fix package name 2020-04-21 15:29:37 +02:00
Fabien Potencier
6b1a64a642 [Notifier] Throw an exception when the Slack DSN is not valid 2020-04-21 15:15:11 +02:00
Fabien Potencier
4cc605537f feature #35690 [Notifier] Add Free Mobile notifier (noniagriconomie)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Notifier] Add Free Mobile notifier

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Implements https://github.com/symfony/symfony-docs/pull/13025#pullrequestreview-352447344
| License       | MIT
| Doc PR        | Will document if accepted (see **Usage** below)

## Add a new notifier (SMS) with the French Free Mobile provider.

It is a **special notifier** as it **only send the SMS to the self user**,
but I think it can be **useful for notification alerting purposes** (the way I use it already, and plan to use it with the component)

---

**Provider doc:** (🇫🇷 sorry)

https://mobile.free.fr/moncompte/index.php?page=options

<img width="716" alt="1" src="https://user-images.githubusercontent.com/13205768/74357784-b55c3500-4dc0-11ea-95ba-19ded062e800.png">

<img width="431" alt="2" src="https://user-images.githubusercontent.com/13205768/74357786-b7be8f00-4dc0-11ea-837e-b922c20e9a2e.png">

---

**Usage:**

```
// .env file
FREEMOBILE_DSN=freemobile://LOGIN:PASSWORD@default?phone=PHONE
```

where:
 - `LOGIN` is your Free Mobile login
 - `PASSWORD` is the token displayed in the config panel
- `PHONE` is your Free Mobile phone number

```yaml
// config/packages/notifiers.yaml file
framework:
    notifier:
        texter_transports:
            freemobile: '%env(FREEMOBILE_DSN)%'
```

Then you can then use it like documented here https://symfony.com/doc/current/notifier/texters.html

ℹ️ As this is a special notifier, the `PHONE` provided inside the DSN mut be the same used [here](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Notifier/Message/SmsMessage.php#L31) for `$phone` value

---

Voilà!

Commits
-------

1b8709ee72 Add Free Mobile notifier
2020-04-21 15:13:45 +02:00
Fabien Potencier
1abdcbb205 feature #33558 [Security] AuthenticatorManager to make "authenticators" first-class security (wouterj)
This PR was squashed before being merged into the 5.1-dev branch.

Discussion
----------

[Security] AuthenticatorManager to make "authenticators" first-class security

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

The tl;dr
---

The old authentication listener + authentication provider system was replaced by a new "authenticator" system (similar to Guard authentication). All existing "auth systems" (e.g. `form_login` are now written as an "authenticator" in core).

Instead of each "authentication system" registering its own listener in the `Firewall`, there is now only one listener: `AuthenticatorManagerListener`

* `Firewall` -> executes `AuthenticatorManagerListener`
* `AuthenticatorManagerListener` -> calls `AuthenticatorManager`
* `AuthenticatorManager` -> calls each authenticator

This PR contains *no deprecations* and the "new system" is *marked as experimental*. This allows to continue to develop the new Security system during the 5.x release cycle without disturbing Symfony users. In 5.4, we can deprecate "old" Security and remove it completely in 6.0.

Important Decisions
---

* A) **The new authentication manager - `AuthenticatorManager` - now dispatches 3 important "hook" events**:

  * `VerifyAuthenticatorCredentialsEvent`: occurs at the point when a "password" needs to be checked. Allows us to centralize password checking, CSRF validation, password upgrading and the "user checker" logic.
  * `LoginSuccessEvent`: Dispatched after a successful authentication. E.g. used by remember me listener.
  * `LoginFailedEvent`: Dispatched after an unsuccessful authentication. Also used by remember me (and in theory could be used for login throttling).

* B) **`getCredentials()`, `getUser()` and `checkCredentials()` methods from old Guard are gone: their logic is centralized**.
   Authenticators now have an `authenticate(Request $request): PassportInterface` method. A passport contains the user object, the credentials and any other add-in Security badges (e.g. CSRF):

   ```php
   public function authenticate(Request $request): PassportInterface
   {
       return new Passport(
           $user,
           new PasswordCredentials($request->get('_password')),
           [
               new CsrfBadge($request->get('_token'))
           ]
       );
   }
   ```

   All badges (including the credentials) need to be resolved by listeners to `VerifyAuthenticatorCredentialsEvent`. There is build-in core support for the following badges/credentials:

   * `PasswordCredentials`: validated using the password encoder factory
   * `CustomCredentials`: allows a closure to do credentials checking
   * `CsrfTokenBadge`: automatic CSRF token verification
   * `PasswordUpgradeBadge`: enables password migration
   * `RememberMeBadge`: enables remember-me support for this authenticator

* C) **`AuthenticatorManager` contains all logic to authenticate**
  As authenticators always relate to HTTP, the `AuthenticatorManager` contains all logic to authenticate. It has three methods, the most important two are:

  * `authenticateRequest(Request $request): TokenInterface`: Doing what is previously done by a listener and an authentication provider;
  * `authenticateUser(UserInterface $user, AuthenticatorInterface $authenticator, Request $request, array $badges = [])` for manual login in e.g. a controller.

* D) **One AuthenticatorManager per firewall**
  In the old system, there was 1 authentication manager containing all providers and each firewall had a specific firewall listener. In the new system, each firewall has a specific authentication manager.

* E) **Pre-authentication tokens are dropped.**
  As everything is now handled inside `AuthenticatorManager` and everything is stored in the Security `Passport`, there was no need for a token anymore (removing lots of confusion about what information is inside the token).

  This change deprecates 2 authentication calls: one in `AuthorizationChecker#isGranted()` and one in `AccessListener`.  These seem now to be mis-used to reload users (e.g. re-authenticate the user after you change their roles). This (some "way" to change a user's roles *without* logging them out) needs to be "fixed"/added in another PR.

* F) **The remember me service now uses *all* user providers**
  Previously, only user providers of authentication providers listening on that firewall were used. This change is due to practical reasons and we don't think it is common to have 2 user providers supporting the same user instance. In any case, you can always explicitly configure the user provider under `remember_me`.

* G) **Auth Providers No Longer Clear the Token on Auth Failure**
  Previously, authentication providers did `$this->tokenStorage->setToken(null)` upon authentication failure. This is not yet implemented: our reasoning is that if you've authenticated successfully using e.g. the login form, why should you be logged out if you visit the same login form and enter wrong credentials?
  The pre-authenticated authenticators are an exception here, they do reset the token upon authentication failure, just like the old system.

* H) **CSRF Generator Service ID No Longer Configurable**
  The old Form login authentication provider allowed you to configure the CSRF generator service ID. This is no longer possible with the automated CSRF listener. This feature was introduced in the first CSRF commit and didn't get any updates ever since, so we don't think this feature is required. This could also be accomplished by checking CSRF manually in your authenticator, instead of using the automated check.

Future Considerations
---

* Remove Security sub-components: Move CSRF to `Symfony\Component\Csrf` (just like mime); Deprecated Guard; Put HTTP + Core as `symfony/security`. This means moving the new classes to `Symfony\Component\Security`

* Convert LDAP to the new system

* This is fixed (and merged) by #36243 <s>There is a need for some listeners to listen for events on one firewall, but not another (e.g. `RememberMeListener`). This is now fixed by checking the `$providerKey`. We thought it might be nice to introduce a feature to the event dispatcher:</s>

  * <s>Create one event dispatcher per firewall;</s>
  * <s>Extend the `kernel.event_subscriber` tag, so that you can optionally specify the dispatcher service ID (to allow listening on events for a specific dispatcher);</s>
  * <s>Add a listener that always also triggers the events on the main event dispatcher, in case you want a listener that is listening on all firewalls.</s>

* Drop the `AnonymousToken` and `AnonymousAuthenticator`: Anonymous authentication has never made much sense and complicates things (e.g. the user can be a string). For access control, an anonymous user has the same meaning as an un-authenticated one (`null`). This require changes in the `AccessListener` and `AuthorizationChecker` and probably also a new Security attribute (to replace `IS_AUTHENTICATED_ANONYMOUSLY`). Related issues: #34909, #30609

> **How to test**
> 1. Install the Symfony demo application (or any Symfony application)
> 2. Clone my Symfony fork (`git clone git@github.com:wouterj/symfony`) and checkout my branch (`git checkout security/deprecate-providers-listeners`)
> 3. Use the link utility to link my fork to the Symfony application: `/path/to/symfony-fork/link /path/to/project`
> 4. Enable the new system by setting `security.enable_authenticator_manager` to `true`

Commits
-------

b1e040f311 Rename providerKey to firewallName for more consistent naming
50224aa285 Introduce Passport & Badges to extend authenticators
9ea32c4ed3 Also use authentication failure/success handlers in FormLoginAuthenticator
0fe5083a3e Added JSON login authenticator
7ef6a7ab03 Use the firewall event dispatcher
95edc806a1 Added pre-authenticated authenticators (X.509 & REMOTE_USER)
f5e11e5f32 Reverted changes to the Guard component
ba3754a80f Differentiate between interactive and non-interactive authenticators
6b9d78d5e0 Added tests
59f49b20ca Rename AuthenticatingListener
60d396f2d1 Added automatically CSRF protected authenticators
bf1a452e94 Merge AuthenticatorManager and AuthenticatorHandler
44cc76fec2 Use one AuthenticatorManager per firewall
09bed16d3d Only load old manager if new system is disabled
ddf430fc1e Added remember me functionality
1c810d5d2a Added support for lazy firewalls
7859977324 Removed all mentions of 'guard' in the new system
999ec2795f Refactor to an event based authentication approach
b14a5e8c52 Moved new authenticator to the HTTP namespace
b923e4c4f6 Enabled remember me for the GuardManagerListener
873b949cf9 Mark new core authenticators as experimental
4c06236933 Fixes after testing in Demo application
fa4b3ec213 Implemented password migration for the new authenticators
5efa892395 Create a new core AuthenticatorInterface
50132587a1 Add provider key in PreAuthenticationGuardToken
526f75608b Added GuardManagerListener
a172bacaa6 Added FormLogin and Anonymous authenticators
9b7fddd10c Integrated GuardAuthenticationManager in the SecurityBundle
a6890dbcf0 Created HttpBasicAuthenticator and some Guard traits
c321f4d73a Created GuardAuthenticationManager to make Guard first-class Security
2020-04-21 14:44:22 +02:00
Fabien Potencier
bc85eb34c7 [Notifier] Mark the component as experimental in 5.1 2020-04-21 13:50:35 +02:00
Christian Flothmann
1452619a52 remove not needed BC layer 2020-04-21 09:24:21 +02:00
Thomas Calvet
9ac1c76fd5 [Routing] Remove unused properties from the Route annotation 2020-04-20 16:41:27 +02:00
noniagriconomie
1b8709ee72 Add Free Mobile notifier 2020-04-20 15:47:45 +02:00
Wouter de Jong
b1e040f311 Rename providerKey to firewallName for more consistent naming 2020-04-20 14:20:56 +02:00
Wouter de Jong
50224aa285 Introduce Passport & Badges to extend authenticators 2020-04-20 14:20:56 +02:00
Wouter de Jong
9ea32c4ed3 Also use authentication failure/success handlers in FormLoginAuthenticator 2020-04-20 14:20:56 +02:00
Wouter de Jong
0fe5083a3e Added JSON login authenticator 2020-04-20 14:20:56 +02:00
Wouter de Jong
7ef6a7ab03 Use the firewall event dispatcher 2020-04-20 14:20:56 +02:00
Wouter de Jong
95edc806a1 Added pre-authenticated authenticators (X.509 & REMOTE_USER) 2020-04-20 14:20:56 +02:00
Wouter de Jong
f5e11e5f32 Reverted changes to the Guard component 2020-04-20 14:20:56 +02:00
Wouter de Jong
ba3754a80f Differentiate between interactive and non-interactive authenticators 2020-04-20 14:20:56 +02:00
Wouter de Jong
6b9d78d5e0 Added tests 2020-04-20 14:20:56 +02:00
Wouter de Jong
59f49b20ca Rename AuthenticatingListener 2020-04-20 14:20:56 +02:00
Wouter de Jong
60d396f2d1 Added automatically CSRF protected authenticators 2020-04-20 14:20:56 +02:00
Wouter de Jong
bf1a452e94 Merge AuthenticatorManager and AuthenticatorHandler
The AuthenticatorManager now performs the whole authentication process. This
allows for manual authentication without duplicating or publicly exposing parts
of the process.
2020-04-20 14:20:56 +02:00
Wouter de Jong
44cc76fec2 Use one AuthenticatorManager per firewall 2020-04-20 14:20:56 +02:00
Wouter de Jong
ddf430fc1e Added remember me functionality 2020-04-20 14:20:56 +02:00
Wouter de Jong
1c810d5d2a Added support for lazy firewalls 2020-04-20 14:20:56 +02:00
Wouter de Jong
7859977324 Removed all mentions of 'guard' in the new system
This to remove confusion between the new system and Guard. When using the new
system, guard should not be installed. Guard did however influence the idea
behind the new system. Thus keeping the mentions of "guard" makes it confusing
to use the new system.
2020-04-20 14:20:56 +02:00
Wouter de Jong
999ec2795f Refactor to an event based authentication approach
This allows more flexibility for the authentication manager (to e.g. implement
login throttling, easier remember me, etc). It is also a known design pattern
in Symfony HttpKernel.
2020-04-20 14:20:56 +02:00
Wouter de Jong
b14a5e8c52 Moved new authenticator to the HTTP namespace
This removes the introduced dependency on Guard from core. It also allows an
easier migration path, as the complete Guard subcomponent can now be deprecated
later in the 5.x life.
2020-04-20 14:20:56 +02:00
Wouter de Jong
b923e4c4f6 Enabled remember me for the GuardManagerListener 2020-04-20 14:20:56 +02:00
Wouter de Jong
873b949cf9 Mark new core authenticators as experimental 2020-04-20 14:20:56 +02:00
Wouter de Jong
4c06236933 Fixes after testing in Demo application 2020-04-20 14:20:56 +02:00
Wouter de Jong
fa4b3ec213 Implemented password migration for the new authenticators 2020-04-20 14:20:55 +02:00
Wouter de Jong
5efa892395 Create a new core AuthenticatorInterface
This is an iteration on the AuthenticatorInterface of the Guard, to allow more
flexibility so it can be used as a real replaced of the authentication
providers and listeners.
2020-04-20 14:20:55 +02:00
Wouter de Jong
50132587a1 Add provider key in PreAuthenticationGuardToken
This is required to create the correct authenticated token in the
GuardAuthenticationManager.
2020-04-20 14:20:55 +02:00
Wouter de Jong
526f75608b Added GuardManagerListener
This replaces all individual authentication listeners when guard authentication
manager is enabled.
2020-04-20 14:20:55 +02:00
Wouter de Jong
a172bacaa6 Added FormLogin and Anonymous authenticators 2020-04-20 14:20:55 +02:00
Wouter J
a6890dbcf0 Created HttpBasicAuthenticator and some Guard traits 2020-04-20 14:20:55 +02:00
Wouter J
c321f4d73a Created GuardAuthenticationManager to make Guard first-class Security 2020-04-20 14:20:55 +02:00
Thomas Calvet
9fd62f79fb [Routing] Add missing _locale requirements
Co-authored-by: Nicolas Grekas <nicolas.grekas@gmail.com>
2020-04-20 14:17:53 +02:00
Olivier Dolbeau
4751a732f2 [Routing] Deal with hosts per locale 2020-04-20 10:51:50 +02:00
stoccc
4bda68a9a2
Update LdapBindAuthenticationProvider.php 2020-04-19 23:34:01 +02:00
Nicolas Grekas
95becc4078 bug #36457 [Cache] CacheItem with tag is never a hit after expired (alexander-schranz, nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[Cache] CacheItem with tag is never a hit after expired

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes/no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36458
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

It seems like a tag cacheItem is never a hit again. Not sure how fix this but the cache component is really hard to debug 🙈 .

It need to be somewhere generally as all TagAware caches are effected:

```
1) Symfony\Component\Cache\Tests\Adapter\FilesystemTagAwareAdapterTest::testRefreshAfterExpires

Failed asserting that false is true.

/home/travis/build/symfony/symfony/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php:194

2) Symfony\Component\Cache\Tests\Adapter\PredisTagAwareClusterAdapterTest::testRefreshAfterExpires

Failed asserting that true is false.

/home/travis/build/symfony/symfony/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php:183

3) Symfony\Component\Cache\Tests\Adapter\RedisTagAwareAdapterTest::testRefreshAfterExpires

Failed asserting that true is false.

/home/travis/build/symfony/symfony/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php:183

4) Symfony\Component\Cache\Tests\Adapter\RedisTagAwareClusterAdapterTest::testRefreshAfterExpires

Failed asserting that true is false.

/home/travis/build/symfony/symfony/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php:183
```

Commits
-------

d082eca7dd Add reproducer to for hit after update expire cacheItem
f815b011c3 [Cache] fix FilesystemTagAwareAdapter failing when a tag link preexists
2020-04-19 21:54:45 +02:00
Nicolas Grekas
8f9ff4f7a0 [Routing] fix CS 2020-04-19 19:10:00 +02:00
Nicolas Grekas
69b6c90330 Merge branch '5.0'
* 5.0:
  [HttpFoundation] workaround PHP bug in the session module
  [SecurityBundle] fix accepting env vars in remember-me configurations
  [Form] Fixed handling groups sequence validation
  [Mime] Ensure proper line-ending for SMIME
  [Cache] Avoid memory leak in TraceableAdapter::reset()
2020-04-18 22:50:29 +02:00
Nicolas Grekas
efbe752918 Merge branch '4.4' into 5.0
* 4.4:
  [HttpFoundation] workaround PHP bug in the session module
  [SecurityBundle] fix accepting env vars in remember-me configurations
  [Form] Fixed handling groups sequence validation
  [Cache] Avoid memory leak in TraceableAdapter::reset()
2020-04-18 22:50:06 +02:00
Nicolas Grekas
e0e3cf634e Merge branch '3.4' into 4.4
* 3.4:
  [HttpFoundation] workaround PHP bug in the session module
2020-04-18 22:40:08 +02:00
Nicolas Grekas
0cbca19edc [HttpFoundation] workaround PHP bug in the session module 2020-04-18 22:23:17 +02:00
Wouter de Jong
94f47630ba Fixed fetching sessionId from InputBag 2020-04-18 20:51:12 +02:00
Alexander Schranz
d082eca7dd Add reproducer to for hit after update expire cacheItem 2020-04-18 16:28:10 +02:00
Nicolas Grekas
f815b011c3 [Cache] fix FilesystemTagAwareAdapter failing when a tag link preexists 2020-04-18 16:28:10 +02:00
Nicolas Grekas
80c5060401 Merge branch '3.4' into 4.4
* 3.4:
  [SecurityBundle] fix accepting env vars in remember-me configurations
  [Form] Fixed handling groups sequence validation
  [Cache] Avoid memory leak in TraceableAdapter::reset()
2020-04-18 14:50:46 +02:00
Nicolas Grekas
0f1a5c452e bug #36343 [Form] Fixed handling groups sequence validation (HeahDude)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] Fixed handling groups sequence validation

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | FIx https://github.com/symfony/symfony/issues/9939#issuecomment-607459505, Fix #35556
| License       | MIT
| Doc PR        | ~

This is not the same as the original issue fixed by #36245, that was reported in https://github.com/symfony/symfony/issues/9939#issuecomment-607459505.

The form also fails to cascade sequence validation properly because each nested field is validated against the sequence, and one can fail at a step independently from another which could failed in another step. I've added a lot of tests to ensure this is working properly and tested in a website skeleton too.

This PR aims to close #35556 which tries to fix the same issue but afterwards in its implementation as said in https://github.com/symfony/symfony/pull/35556#discussion_r379289230.

Commits
-------

dfb61c204c [Form] Fixed handling groups sequence validation
2020-04-18 14:07:22 +02:00
Jules Pietri
dfb61c204c
[Form] Fixed handling groups sequence validation 2020-04-18 13:27:37 +02:00
Fabien Potencier
2460ca59af feature #36464 [RedisMessengerBridge] Add a delete_after_ack option (Seldaek)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[RedisMessengerBridge] Add a delete_after_ack option

This allows Messenger to clean up processed messages from memory, avoiding a mem "leak" in redis

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/issues/33715
| License       | MIT
| Doc PR        | symfony/symfony-docs#... TODO - will pile it on to https://github.com/symfony/symfony-docs/pull/11869 as it kinda binds together and a bigger refactor of the docs here is much needed to avoid all these gotchas

Right now by default a redis transport for messenger will leak memory as all messages stay in redis forever. You can configure `stream_max_entries` to automatically trim to a max of X entries, but that means if you have big peaks in messages you might start losing messages which have not been processed.

This PR provides an alternative to that, by deleting message as they are processed. This is ideal as it avoids having to find the right number for `stream_max_entries` (do you want to risk losing data or use more memory than needed on average?). The only catch is that if you have multiple groups consuming the same stream, the first one processing a message will delete it, so other groups will not see it. For that reason `setup()` attempts to detect this and fails hard if it is misconfigured to prevent data loss.

Commits
-------

7c416a7173 [RedisMessengerBridge] Add a delete_after_ack option to automatically clean up processed messages from memory
2020-04-17 14:22:43 +02:00
Jordi Boggiano
7c416a7173
[RedisMessengerBridge] Add a delete_after_ack option to automatically clean up processed messages from memory 2020-04-17 08:23:45 +02:00
Fabien Potencier
67948a7ffb feature #36431 [Messenger] Add FIFO support to the SQS transport (cv65kr)
This PR was squashed before being merged into the 5.1-dev branch.

Discussion
----------

[Messenger] Add FIFO support to the SQS transport

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

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html

Commits
-------

37601753f1 [Messenger] Add FIFO support to the SQS transport
2020-04-17 05:34:16 +02:00
cv65kr
37601753f1 [Messenger] Add FIFO support to the SQS transport 2020-04-17 05:34:10 +02:00
Fabien Potencier
a85545f3e9 feature #36455 [Cache] Added context to log messages (Nyholm)
This PR was squashed before being merged into the 5.1-dev branch.

Discussion
----------

[Cache] Added context to log messages

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        | n/a

In my application logs, I've got many entries like:

> Failed to save key "foobar" of type string.

I know it is related to the cache, But I dont know from what adapter. I use a chain of Array, Apcu and Redis. This PR adds some context to that log entry so I know which one of my cache adapter that fails.

Commits
-------

a4d9e0fc94 [Cache] Added context to log messages
2020-04-17 05:32:08 +02:00
Nyholm
a4d9e0fc94 [Cache] Added context to log messages 2020-04-17 05:31:59 +02:00
Fabien Potencier
6f81e03331 bug #36463 [Mime] Ensure proper line-ending for SMIME (sstok)
This PR was merged into the 5.0 branch.

Discussion
----------

[Mime] Ensure proper line-ending for SMIME

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

Commits
-------

5e3ccc2814 [Mime] Ensure proper line-ending for SMIME
2020-04-17 05:29:44 +02:00
Fabien Potencier
5369aff94f minor #36468 Use ExpectDeprecationTrait (fancyweb)
This PR was merged into the 5.1-dev branch.

Discussion
----------

Use ExpectDeprecationTrait

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

Commits
-------

08febef500 Use ExpectDeprecationTrait
2020-04-17 05:15:37 +02:00
Fabien Potencier
17bbaa502a bug #36460 [Cache] Avoid memory leak in TraceableAdapter::reset() (lyrixx)
This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] Avoid memory leak in TraceableAdapter::reset()

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

When we call `ServicesResetter::reset()`, we want to reset the
application to its initial states. We don't want a memory leak :p

Commits
-------

15a8610c0c [Cache] Avoid memory leak in TraceableAdapter::reset()
2020-04-17 05:10:57 +02:00
Thomas Calvet
08febef500 Use ExpectDeprecationTrait 2020-04-16 18:52:30 +02:00
Thomas Calvet
24150370c3 [DependencyInjection][ServiceSubscriber] Support late aliases 2020-04-16 18:36:56 +02:00
Fabien Potencier
4d8a4b6ede Merge branch '5.0'
* 5.0:
  Fix From/Sender handling in Emails
2020-04-16 17:13:28 +02:00
Fabien Potencier
3b4c41fd4b Merge branch '4.4' into 5.0
* 4.4:
  Fix From/Sender handling in Emails
2020-04-16 17:13:13 +02:00
Fabien Potencier
e885860edc Fix From/Sender handling in Emails 2020-04-16 16:49:30 +02:00
Sebastiaan
5e3ccc2814
[Mime] Ensure proper line-ending for SMIME 2020-04-16 13:38:11 +02:00
Grégoire Pineau
15a8610c0c [Cache] Avoid memory leak in TraceableAdapter::reset() 2020-04-15 20:25:28 +02:00
Nicolas Grekas
6dc7d8b211 Merge branch '5.0'
* 5.0:
  [PhpUnitBridge] add PolyfillTestCaseTrait::expectExceptionMessageMatches to provide FC with recent phpunit versions
  [Messenger] Make sure redis transports are initialized correctly
  Remove return type for Twig function workflow_metadata()
  [DI] fix typo
2020-04-15 18:09:08 +02:00
Nicolas Grekas
4f8f3747d3 Merge branch '4.4' into 5.0
* 4.4:
  [PhpUnitBridge] add PolyfillTestCaseTrait::expectExceptionMessageMatches to provide FC with recent phpunit versions
  [Messenger] Make sure redis transports are initialized correctly
  Remove return type for Twig function workflow_metadata()
  [DI] fix typo
2020-04-15 17:59:10 +02:00
Nicolas Grekas
14a204636d bug #36408 [PhpUnitBridge] add PolyfillTestCaseTrait::expectExceptionMessageMatches to provide FC with recent phpunit versions (soyuka)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[PhpUnitBridge] add PolyfillTestCaseTrait::expectExceptionMessageMatches to provide FC with recent phpunit versions

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | na
| License       | MIT
| Doc PR        | na

expectExceptionMessageRegExp is deprecated coming phpunit 8.5.3  see https://github.com/sebastianbergmann/phpunit/issues/4133

Not sure if I need to add something else lmk.

Commits
-------

cfd5a29eaf [PhpUnitBridge] add PolyfillTestCaseTrait::expectExceptionMessageMatches to provide FC with recent phpunit versions
2020-04-15 17:56:18 +02:00
soyuka
cfd5a29eaf [PhpUnitBridge] add PolyfillTestCaseTrait::expectExceptionMessageMatches to provide FC with recent phpunit versions 2020-04-15 17:55:41 +02:00
Nicolas Grekas
98eeeae3d1 [DI] add syntax to stack decorators 2020-04-14 18:54:23 +02:00
Jordi Boggiano
68b3b898d8 [Messenger] Make sure redis transports are initialized correctly 2020-04-14 13:52:59 +02:00
Nicolas Grekas
b3333e552d [DI] fix typo 2020-04-14 10:30:58 +02:00
Fabien Potencier
b2f210f1f3 feature #34363 [HttpFoundation] Add InputBag (azjezz)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[HttpFoundation] Add InputBag

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | yes
| License       | MIT

When ppl read a request attribute, they never check if an array is returned
This means many apps just fail with a 500 when adding `[]` in the query string.
This PR turns them to 400 basically (with a deprecation for now)

Commits
-------

0a2ef70c04 [HttpFoundation] add InputBag
2020-04-13 22:42:08 +02:00
azjezz
0a2ef70c04 [HttpFoundation] add InputBag 2020-04-13 21:20:37 +01:00
Fabien Potencier
0933f90fd5 feature #36424 [Mailer][Messenger] add return statement for MessageHandler (ottaviano)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Mailer][Messenger] add return statement for MessageHandler

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |
| License       | MIT
| Doc PR        |

By returning the result of the transporter in `MessageHandler` we can get hold of `SentMessage` from `HandledStamp::getResult()`.
![image](https://user-images.githubusercontent.com/4582866/79046122-3bed9100-7c0f-11ea-878f-65a6eb610758.png)

Commits
-------

7854cb488e [Mailer][Messenger] add return statement for MessageHandler
2020-04-13 13:14:28 +02:00
Nicolas Grekas
4f0375dccd fix merge 2020-04-13 12:44:30 +02:00
Nicolas Grekas
e94506bee7 Merge branch '5.0'
* 5.0:
  [DI] fix loading defaults when using the PHP-DSL
  RepeatedType should always have inner types mapped
2020-04-13 12:14:44 +02:00
Nicolas Grekas
8647ad3b2b Merge branch '4.4' into 5.0
* 4.4:
  [DI] fix loading defaults when using the PHP-DSL
  RepeatedType should always have inner types mapped
2020-04-13 12:13:27 +02:00
Nicolas Grekas
acb1060754 Merge branch '3.4' into 4.4
* 3.4:
  [DI] fix loading defaults when using the PHP-DSL
  RepeatedType should always have inner types mapped
2020-04-13 12:13:05 +02:00
Nicolas Grekas
f70286333f bug #36411 [Form] RepeatedType should always have inner types mapped (biozshock)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] RepeatedType should always have inner types mapped

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Doc PR| https://github.com/symfony/symfony-docs/pull/13519 |
| Tickets       | Fix #36410
| License       | MIT

Always set mapped=true to override inner type mapped setting.
Throw an exception if inner types of RepeatedType has mapped=false

Commits
-------

728cd66a13 RepeatedType should always have inner types mapped
2020-04-13 11:46:34 +02:00
Nicolas Grekas
51e0d3792c [DI] fix loading defaults when using the PHP-DSL 2020-04-13 11:33:40 +02:00
Fabien Potencier
7eecd4fc11 Fix tests 2020-04-12 22:55:33 +02:00
Fabien Potencier
6ae2fc3d07 Merge branch '5.0'
* 5.0:
  Tweak the code to avoid fabbot false positives
2020-04-12 19:09:07 +02:00
Fabien Potencier
910cc727a0 Tweak the code to avoid fabbot false positives 2020-04-12 19:06:46 +02:00
Fabien Potencier
edb0518e56 Merge branch '5.0'
* 5.0:
  Fix tests
  Fix test
2020-04-12 18:56:52 +02:00
Fabien Potencier
780b539669 Merge branch '4.4' into 5.0
* 4.4:
  Fix tests
  Fix test
2020-04-12 18:56:42 +02:00
Fabien Potencier
093a71500a Fix tests 2020-04-12 18:56:09 +02:00
Fabien Potencier
311a944a08 Fix test 2020-04-12 18:54:01 +02:00
Fabien Potencier
b7c7b6f445 Merge branch '5.0'
* 5.0:
  Fix code
  Tweak the code to avoid fabbot false positives
2020-04-12 18:48:26 +02:00
Fabien Potencier
8e9bd7ad06 Merge branch '4.4' into 5.0
* 4.4:
  Fix code
  Tweak the code to avoid fabbot false positives
2020-04-12 18:45:47 +02:00
Fabien Potencier
9f9383b25f Fix code 2020-04-12 18:45:36 +02:00
Fabien Potencier
e4d4428bb3 Fix code 2020-04-12 18:39:58 +02:00
Fabien Potencier
7d2cab1644 Tweak the code to avoid fabbot false positives 2020-04-12 18:14:02 +02:00