Commit Graph

146 Commits

Author SHA1 Message Date
Thomas Calvet
8dfb7b2ad1 [Validator] Add the divisibleBy option to the Count constraint 2020-02-19 17:59:38 +01:00
Fabien Potencier
32ce188b68 feature #34456 [Validator] Add a constraint to sequentially validate a set of constraints (ogizanagi)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Validator] Add a constraint to sequentially validate a set of constraints

| Q             | A
| ------------- | ---
| Branch?       | master <!-- 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 #", if any -->
| License       | MIT
| Doc PR        | Todo

Follows https://github.com/symfony/symfony/issues/20017#issuecomment-331276007 given some feedbacks about the suggested feature.

```php
/**
 * @var string
 *
 * @Assert\Sequentially({
 *     @Assert\Type("string"),
 *     @Assert\Length(min="4"),
 *     @Assert\Regex("[a-z]"),
 *     @SomeCustomConstraintWithHeavyExternalCalls(),
 * })
 */
public $foo;
```

This new `Sequentially` constraint solves - with less power but better DX - some of the use-cases of the `GroupSequence` feature, allowing to interrupt the validation of some constraints if a previous one in the list failed before. Constraints are validated in given order, and the first violation raised will prevent other constraint validators to be executed.
It can either prevent unexpected type exceptions thrown by further constraints or heavy & unnecessary calls to a database or external services if the value to validate already doesn't match some of the basic requirements.

Commits
-------

dfd9038d28 [Validator] Add a constraint to sequentially validate a set of constraints
2020-02-08 08:14:30 +01:00
Maxime Steinhausser
8f1b0dfdb7 [Validator] Allow to define a reusable set of constraints 2020-02-08 08:09:33 +01:00
Maxime Steinhausser
dfd9038d28 [Validator] Add a constraint to sequentially validate a set of constraints 2020-02-07 17:16:17 +01:00
maxime.perrimond
d6f34a5df6 [Validator] Add alpha3 option to country constraint 2020-01-31 09:29:00 +01:00
Fabien Potencier
d8bb14ccff Fix CS 2020-01-10 10:42:21 +01:00
Fabien Potencier
7dae1cad64 feature #31518 [Validator] Added HostnameValidator (karser)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Validator] Added HostnameValidator

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #10088   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

This PR adds HostnameValidator support. I encountered this need in my project and was surprised that this issue has been open for years.

Here is short example:
```
App\Entity\Acme:
    properties:
        domain:
            - Hostname: ~
        non_tld_domain:
            - Hostname: { requireTld: false }
```
The option `requireTld` is `true` by default and disallows domains like localhost and etc.

Commits
-------

8a08c2090a Added HostnameValidator
2020-01-10 10:41:53 +01:00
Nicolas Grekas
3c348df73b Merge branch '4.4' into 5.0
* 4.4:
  [DI] Service locators can't be decorated
  [HttpClient] force HTTP/1.1 when NTLM auth is used
  [Validation][FrameworkBundle] Allow EnableAutoMapping to work without auto-mapping namespaces
  [Console][SymfonyQuestionHelper] Handle multibytes question choices keys and custom prompt
  [DI] fix auto-binding service providers to their service subscribers
  [Mailer] fixed undefined index when sending mail
2019-12-17 11:33:13 +01:00
Maxime Steinhausser
00b46fa72e [Validation][FrameworkBundle] Allow EnableAutoMapping to work without auto-mapping namespaces 2019-12-17 09:15:02 +01:00
karser
8a08c2090a Added HostnameValidator 2019-11-14 19:31:20 +02:00
Nicolas Grekas
1cc66db290 Merge branch '4.4'
* 4.4:
  [Messenger] use events consistently in worker
  Deprecate things that prevent \Throwable from bubbling down
2019-11-05 18:32:06 +01:00
Thomas Calvet
abef506e89 Deprecate things that prevent \Throwable from bubbling down 2019-11-05 18:23:20 +01:00
Fabien Potencier
5dc29c402f Merge branch '4.4'
* 4.4:
  [HttpFoundation][FrameworkBundle] allow configuring the session handler with a DSN
  [Validator] Add AutoMapping constraint to enable or disable auto-validation
  [DI] Fix "!tagged" related upgrade/changelog notes
2019-10-30 11:44:38 +01:00
Kévin Dunglas
f6519ce88b [Validator] Add AutoMapping constraint to enable or disable auto-validation 2019-10-30 08:50:22 +01:00
Nicolas Grekas
3bcfe2f169 typo 2019-09-05 15:24:07 +02:00
Nicolas Grekas
34a37bfe87 Merge branch '4.4'
* 4.4:
  [Validator] Deprecated CacheInterface in favor of PSR-6.
  Fix wrong namespace
  [Mailer] Fix typo
  [Mailer] Fix an error message
  maintain sender/recipient name in SMTP envelopes
  [Mailer] Improve an exception when trying to send a RawMessage without an Envelope
  Fix #32148 TransportException was not thrown
  Add ErrorController to preview and render errors
2019-09-05 14:46:35 +02:00
Alexander M. Turek
0b08040459 [Validator] Deprecated CacheInterface in favor of PSR-6. 2019-09-05 14:29:38 +02:00
Nicolas Grekas
64e96e0af8 Merge branch '4.4'
* 4.4:
  Fix typo
  Fix unitialized variable in DeprecationErrorHandler
  fix Danish translations
  Support ISO 3166-1 Alpha-3 country codes
  Added the missing translations for the Slovak 'sk' locale.
  Add deprecation for method signature
  Add compatibility trait for PHPUnit constraint classes
  [HttpFoundation] Clear invalid session cookie
  Fix tst patern to handle callstack with/without return typehint
  Fix negative DateInterval
  [Validator] Allow objects implementing __toString() to be used as violation messages
  [FrameworkBundle][Routing] Private service route loaders
  [DoctrineBridge] Allow invokable event listeners
2019-08-09 13:53:04 +02:00
Jérémy Derussé
56d5d6d0e6
Add deprecation for method signature 2019-08-09 10:19:49 +02:00
Michael Lutz
79f4dcd2dc [Validator] Allow objects implementing __toString() to be used as violation messages
[Validator] updated changelog

[Validator] updated typehint for ConstraintViolationInterface::getMessage()

[Validator] fixed spacing issue inadvertantly added in previous commit

[Validator] fixed coding standard issues

[Validator] Address feedback

[Validator] Fix coding standard violation

[Validator] update tests

[Validator] Address feedback, Round 2

[Validator] Document ConstraintViolationBuilder::__construct()  parameter

[Validator] Update changelog

[Validator] Adjust parameter documentation order
2019-08-08 13:18:47 -04:00
Nicolas Grekas
330a093b83 Merge branch '4.4'
* 4.4:
  [WebProfilerBundle] Remove unneeded information in the routing panel
  Add transport factories (closes #31385, closes #32523)
  [Lock] remove uusage of the StoreInterface
  [HttpClient] make toStream() throw by default
  [Mailer] added XML configuration for the mailer envelope
  added missing test
  [Mailer] Allow register mailer configuration in xml format
  [VarDumper] Allow to configure VarDumperTestTrait casters & flags
  Improve errors when trying to find a writable property
  [Lock] add aliases for LockFactory
  fixed CS
  fix some deprecations and add upgrade instructions
  fix typo
  Added Nl translations
  fixed CS
  [FrameworkBundle] Fix descriptor of routes described as callable array
  [Debug][DebugClassLoader] Include found files instead of requiring them
  [HttpKernel] fix tests
  Adding missing event_dispatcher wiring for messenger.middleware.send_message
2019-07-17 20:45:05 +02:00
Christian Flothmann
24b7feff91 fix typo 2019-07-13 12:01:31 +02:00
Fabien Potencier
a8f9727e72 Merge branch '4.4'
* 4.4:
  fixed CS
  [Validator] Add a new constraint message when there is both min and max
  fixed CS
  [Bundles] Rename getPublicPath() as getPublicDir()
  Remove experimental notice from components
  [LDAP] add new option implemented in php 7.1
  Replace missing message parameter
2019-07-12 09:03:26 +03:00
Fabien Potencier
fd3ad6520c feature #32435 [Validator] Add a new constraint message when there is both min and max (Lctrs)
This PR was squashed before being merged into the 4.4 branch (closes #32435).

Discussion
----------

[Validator] Add a new constraint message when there is both min and max

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | Part of #31503
| License       | MIT
| Doc PR        | to do

Currently, the failed validation messages in the `Range` constraint doesn't carry a notion of range. This can be confusing and error-prone if we report these messages to the user as-is.

This PR introduces a new message to the `Range` constraint (`This value should be between {{ min }} and {{ max }}.`) that will be displayed if both `min` and `max` are not `null`.

Commits
-------

c5488bcec1 [Validator] Add a new constraint message when there is both min and max
2019-07-12 08:12:45 +03:00
Lctrs
c5488bcec1 [Validator] Add a new constraint message when there is both min and max 2019-07-12 08:12:33 +03:00
Nicolas Grekas
4631e9cd6c Merge branch '4.4'
* 4.4: (53 commits)
  Fix Twig 1.x compatibility
  Deprecating templateExists method
  [Translator] Improve farsi(persian) translations for Form
  [Validator] Fix Changelog for #31511
  [Lock][Console] bump lock requirement in console
  [Lock] minor: add missing alias for PersistenStoreInterface
  Improve fa translations
  Dynamic bundle assets
  [Lock] rename and deprecate Factory into LockFactory
  [Debug] Restoring back the state of the Debug component (1st step)
  Spell "triggering" properly
  [Lock] Fix tests
  Added tests to cover the possibility of having scalars as services.
  fixed CS
  [Lock] Split \"StoreInterface\" into multiple interfaces with less responsability
  [VarDumper] Let browsers trigger their own search on double CMD/CTRL + F hit
  [Validator] Allow to use property paths to get limits in range constraint
  Fix missing deprecations
  fixed tests on old PHP versions
  [FrameworkBundle] Inform the user when save_path will be ignored
  ...
2019-07-11 07:40:26 +02:00
Lctrs
9d725054ce
[Validator] Fix Changelog for #31511 2019-07-09 09:54:33 +02:00
Fabien Potencier
e1cea970c0 feature #31511 [Validator] Allow to use property paths to get limits in range constraint (Lctrs)
This PR was squashed before being merged into the 4.4 branch (closes #31511).

Discussion
----------

[Validator] Allow to use property paths to get limits in range constraint

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | Part of #31503
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11793

Similar as #22576, but for the `Range` constraint.

Commits
-------

2b509904c8 [Validator] Allow to use property paths to get limits in range constraint
2019-07-08 15:05:23 +02:00
Lctrs
2b509904c8 [Validator] Allow to use property paths to get limits in range constraint 2019-07-08 15:04:44 +02:00
Maxime Steinhausser
26b804e82d [Validator] Change Length::$allowEmptyString default to false & make it optional 2019-07-04 17:43:30 +02:00
Nicolas Grekas
155cfb273f Merge branch '4.4'
* 4.4: (33 commits)
  [DI] fix processing of regular parameter bags by MergeExtensionConfigurationPass
  [FrameworkBundle] reset cache pools between requests
  [HttpFoundation] Accept must take the lead for Request::getPreferredFormat()
  [FrameworkBundle] Allow to use the BrowserKit assertions with Panther and API Platform's test client
  Use ConnectionRegistry instead of RegistryInterface.
  Fixes windows error
  Improving the request/response format autodetection
  [Messager] Simplified MessageBus::__construct()
  [WIP][Mailer] Overwrite envelope sender and recipients from config
  [Messenger] Added more test for MessageBus
  [Mime] Updated some PHPDoc contents
  [PropertyAccess] Adds entries to CHANGELOG and UPGRADE
  fixed typo
  [FrameworkBundle] Simplified some code in the DI configuration
  [Filesystem] added missing deprecations to UPGRADE-4.3.md
  [Filesystem] depreacte calling isAbsolutePath with a null
  Fix authentication for redis transport
  only decorate when an event dispatcher was passed
  [Messenger] Added support for auto trimming of redis streams
  [FrmaeworkBundle] More simplifications in the DI configuration
  ...
2019-07-04 15:54:52 +02:00
Fabien Potencier
6abaa8c5a2 feature #32265 [Validator] deprecate non-string constraint violation codes (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Validator] deprecate non-string constraint violation codes

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/32066#discussion_r294106130
| License       | MIT
| Doc PR        |

Commits
-------

e217729066 deprecate non-string constraint violation codes
2019-07-03 15:25:50 +02:00
Maxime Steinhausser
e113e7f812 [Validator] Add a Length::$allowEmptyString option to reject empty strings
which defaults to `true` in 4.4 but will trigger a deprecation if not set explicitly
in order to make the default `false` in 5.0.
2019-07-01 09:11:48 +02:00
Christian Flothmann
e217729066 deprecate non-string constraint violation codes 2019-06-28 19:01:10 +02:00
Yonel Ceruto
7b99fb45bb Removed legacy code and cleanup 2019-06-25 20:29:20 +02:00
Maxime Steinhausser
e4c4d2dce8 [Validator] Add ExpressionValidator typehint & remove deprecation 2019-06-21 10:29:21 +02:00
Nicolas Grekas
ac7d168ffa Merge branch '4.4'
* 4.4:
  [PhpUnitBridge] Bump PHPUnit 7+8
  Prepare for PHP 7.4 preload
  prevent double deprecation message
  [Validator] Deprecate unused arg in ExpressionValidator
  [Config] Introduce find method in ArrayNodeDefinition to ease configuration tree manipulation
  [DomCrawler][Feature][DX] Add Form::getName() method
  [VarDumper] caster for HttpClient's response dumps all info
2019-06-17 13:53:04 +02:00
Maxime Steinhausser
0c0978cd47 [Validator] Deprecate unused arg in ExpressionValidator 2019-06-14 10:40:37 +02:00
Nicolas Grekas
37ee3695ae Merge branch '4.4'
* 4.4:
  Several components are incompatible with HttpKernel 5.0
  [Validator] fix deprecation layer of ValidatorBuilder
  [HttpKernel] Fix missing use for request and response classes
  bumped Symfony version to 4.3.2
  updated VERSION for 4.3.1
  updated CHANGELOG for 4.3.1
2019-06-06 20:32:37 +02:00
Nicolas Grekas
c8c159a755 Merge branch '4.3' into 4.4
* 4.3:
  [Validator] fix deprecation layer of ValidatorBuilder
  [HttpKernel] Fix missing use for request and response classes
  bumped Symfony version to 4.3.2
  updated VERSION for 4.3.1
  updated CHANGELOG for 4.3.1
2019-06-06 20:30:43 +02:00
Nicolas Grekas
5c7b4a0fef Merge branch '4.2' into 4.3
* 4.2:
  [Validator] fix deprecation layer of ValidatorBuilder
2019-06-06 20:29:58 +02:00
Nicolas Grekas
7bb0359265 [Validator] remove deprecated code paths 2019-06-06 19:09:13 +02:00
Nicolas Grekas
154ce81519 [Validator] fix deprecation layer of ValidatorBuilder 2019-06-06 19:07:55 +02:00
Fabien Potencier
87e84ac40e Merge branch '4.4'
* 4.4:
  Extract Abstract Doctrine Middleware
  [Translation] refactor ArrayLoader::flatten
  [TwigBundle] mark TemplateIterator as internal
  Improved error message on create a form builder with invalid options
  [Security] add PasswordEncoderInterface::needsRehash()
  [HttpClient] add $response->cancel()
  Add clear Entity Manager middleware (closes #29662)
  [FrameworkBundle] Add missing BC layer for deprecated ControllerNameParser injections
  [Validator] Improve TypeValidator to handle array of types
  Add exception as HTML comment to beginning and end of `exception_full.html.twig`
  [Validator] Add compared value path to violation parameters
2019-06-04 09:20:45 +02:00
Fabien Potencier
8d359b2525 feature #31351 [Validator] Improve TypeValidator to handle array of types (jschaedl)
This PR was merged into the 4.4 branch.

Discussion
----------

[Validator] Improve TypeValidator to handle array of types

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #31330
| License       | MIT
| Doc PR        | tbd.

The `@Type` constraint is now able to handle multiple types:

```php
/**
 * @var string|array
 * @Assert\Type(type={"string", "array"})
 */
 private $name;
```

and will pass when `$name` is either of type `string` or `array`.

Commits
-------

c8100f34f8 [Validator] Improve TypeValidator to handle array of types
2019-06-04 09:08:54 +02:00
Jan Schädlich
c8100f34f8 [Validator] Improve TypeValidator to handle array of types 2019-06-01 10:45:40 +02:00
Roland Franssen
6183d2b84c [5.0] Update CHANGELOG.md 2019-05-29 18:50:53 +02:00
Maxime Steinhausser
2da226a57f [Validator] Add compared value path to violation parameters 2019-05-17 17:04:10 +02:00
Javier Spagnoletti
536e53f184 [Validator] add new Timezone validation constraint. 2019-04-06 20:45:46 +02:00
Javier Eguiluz
2f648b04ae Renamed NotPwned to NotCompromisedPassword 2019-04-06 16:19:57 +02:00