Skip to content

[RFR] [Ldap] Improving the LDAP component #15994

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 786 commits into from
Closed

[RFR] [Ldap] Improving the LDAP component #15994

wants to merge 786 commits into from

Conversation

csarrazi
Copy link
Contributor

Q A
Bug fix? no
New feature? yes
BC breaks? no
Deprecations? no
Tests pass? no
Fixed tickets #14602
License MIT
Doc PR not yet

This PR will address a few issues mentioned in #14602.

  • Integrate the Config component in order to simplify the client's configuration
  • Separate Connection handling from the Client
  • Add functional tests (using a mockup LDAP server)

@csarrazi csarrazi changed the title [WIP] Improving the LDAP component [WIP] [Ldap] Improving the LDAP component Sep 29, 2015
$dn,
$query,
implode(',', $filter)
));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be on one line.

@csarrazi
Copy link
Contributor Author

@lisachenko @iltar, if there is anything that I haven't listed yet, please add a comment here.


public function connect()
{
if (!$this->connection) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For readability, I suggest to invert the condition

fabpot and others added 6 commits November 23, 2015 10:33
… member (belka-ew)

This PR was merged into the 3.0-dev branch.

Discussion
----------

[HttpFoundation] Delete not existing session handler proxy member

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

open() and close() SessionHandlerProxy method suse $this->active
that was removed from the parent AbstractProxy class after 2.8.

Commits
-------

b06b93f [HttpFoundation] Remove not existing class member
* 2.8:
  removed usage of the deprecated StringUtils::equals() method
  Fix: Resolve tempdir symlink, not working on OSX
  fixed tests
  migrate session after remember me authentication
  prevent timing attacks in digest auth listener
  mitigate CSRF timing attack vulnerability
  fix potential timing attack issue
  [WebProfilerBundle] Added a top left border radius to the minified to…
  [Routing] Changing RouteCollectionBuilder::import() behavior to add to the builder
  [HttpKernel] Don't reset on shutdown but in FrameworkBundle/Test/KernelTestCase
  [Process] PhpExecutableFinder: add regression test
This PR was merged into the 3.0-dev branch.

Discussion
----------

[3.0] Removed unneeded polyfill

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Surely we don't need these on 3.x?

Commits
-------

42c9a48 Removed unneeded polyfill from the master
* 2.8:
  [travis] Disable xdebug on PHP7
  Tweaking deprecation message to include class name
  bumped Symfony version to 2.7.8
  updated VERSION for 2.7.7
  updated CHANGELOG for 2.7.7
  bumped Symfony version to 2.3.36
  updated VERSION for 2.3.35
  update CONTRIBUTORS for 2.3.35
  updated CHANGELOG for 2.3.35

Conflicts:
	CHANGELOG-2.3.md
	CHANGELOG-2.7.md
	src/Symfony/Component/Config/Resource/BCResourceInterfaceChecker.php
@csarrazi csarrazi mentioned this pull request Nov 25, 2015
5 tasks
@csarrazi
Copy link
Contributor Author

The remaining tasks:

  • Rebase the PR against the 2.8 branch.
  • Run functional tests for the LDAP component
    • Install slapd and ldap-utils.
    • Install fixtures to test against a real LDAP server.
    • Run functional tests against the server.
  • Add documentation for the LDAP component.

rande and others added 2 commits November 25, 2015 16:48
This PR was squashed before being merged into the 3.0-dev branch (closes #16615).

Discussion
----------

fix type assignement

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This PR make sure the original key is used when the type is resolved. Also the code now respect the PHPDoc.

Commits
-------

cc26454 fix type assignement
@csarrazi csarrazi changed the title [WIP] [Ldap] Improving the LDAP component [RFR] [Ldap] Improving the LDAP component Nov 25, 2015
nicolas-grekas and others added 6 commits November 26, 2015 08:02
* 2.8:
  Always enable clock-mock for HttpFoundation
  [ClassLoader] Fix parsing namespace when token_get_all() is missing
  Bug #16343 [Router] Too many Routes ?
  Fixes the stack traces of the deprecation logs
  fix unused variable warning
  [Translation][Form] Do not translate form labels and placeholders when 'translation_domain' is false
  add composer exclude-from-classmap for new 2.8 components
  [Yaml] sync changelog and upgrade files
  [Debug] Ensure class declarations are loaded only once
  Minor design tweaks for the Logs and Doctrine profiler panels

Conflicts:
	UPGRADE-2.8.md
* 2.8:
  [Security] Deprecate "AbstractVoter" in favor of "Voter"
  [Security] Revert changes made between 2.7 and 2.8-beta

Conflicts:
	UPGRADE-2.8.md
	src/Symfony/Component/Security/Core/Authorization/Voter/AbstractVoter.php
	src/Symfony/Component/Security/Core/Tests/Authorization/Voter/AbstractVoterTest.php
This PR was merged into the 3.0-dev branch.

Discussion
----------

[Debug] remove unused use statement

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

ref #15418

Commits
-------

a862e5e [Debug] remove unused use statement
This PR was merged into the 3.0-dev branch.

Discussion
----------

[DI] use try-finally for container

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Continuation of #15949

Commits
-------

1ab7316 [DI] use try-finally for container
fabpot and others added 28 commits January 26, 2016 13:18
This PR was squashed before being merged into the 3.1-dev branch (closes #17113).

Discussion
----------

[Serializer] Add a MaxDepth option

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #14924 (comment), api-platform/core#104 (comment)
| License       | MIT
| Doc PR        | todo

Add a max depth option during the normalization process. Especially useful when normalizing trees.

Usage:

```php
use Symfony\Component\Serializer\Annotation\MaxDepth;

class MyObj
{
    /**
     * @MaxDepth(2)
     */
    public $foo;

    /**
     * @var self
     */
    public $child;
}

use Doctrine\Common\Annotations\AnnotationReader;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;

$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$normalizer = new ObjectNormalizer($classMetadataFactory);
$serializer = new Serializer(array($this->normalizer));

$level1 = new MyObj();
$level1->foo = 'level1';

$level2 = new MyObj();
$level2->foo = 'level2';
$level1->child = $level2;

$level3 = new MyObj();
$level3->foo = 'level3';
$level2->child = $level3;
$result = $serializer->normalize($level1, null, array(ObjectNormalizer::ENABLE_MAX_DEPTH => true));
/*      $result = array(
            'foo' => 'level1',
            'child' => array(
                    'foo' => 'level2',
                    'child' => array(
                            'child' => null,
                        ),
                ),
        );
*/
```

* [x] Metadata support
* [x] `@MaxDepth(2)` annotation and loader
* [x] XML loader
* [x] YAML loader
* [x] Delegate recursive normalization at the end of the process
* [x] Use constants with Late Static Binding in the abstract class instead of raw strings
* [x] Move common logic to the abstract class

/cc @mRoca @csarrazi

Commits
-------

a44bead [Serializer] Add a MaxDepth option
This PR was squashed before being merged into the 3.1-dev branch (closes #17440).

Discussion
----------

[Validator] Add a PSR-6 adapter

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | todo

Commits
-------

1f0ba00 [Validator] Add a PSR-6 adapter
This PR was squashed before being merged into the 3.1-dev branch (closes #17532).

Discussion
----------

[Asset] Version as service

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

While I working on #14832 I realize that all this problems and hidden magic can be avoided, if we will have ability to set asset version strategy as service.

This PR implementation of this idea.

Now it is possible to do something like this:

```yaml
framework:
    assets:
        version_strategy: assets.custom_version_strategy
        base_urls: http://cdn.example.com
        packages:
            foo:
                base_urls: ["https://example.com"]
                version_strategy: assets.custom_version_strategy
```

There is can be some conflicts with #16511 when it will be in master

Commits
-------

52d116b [Asset] Version as service
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Validator] PSR-6 cache: Avoid name collision

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

See tests.

Commits
-------

12852c2 [Validator] PSR-6 cache: Avoid name collision
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Validator] Minor fixes for the PSR-6 adapter

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | todo

Follows #17440. Take into account comments of @Tobion.

Commits
-------

aa60d5b [Validator] Minor fixes for the PSR-6 adapter
This PR was squashed before being merged into the 3.1-dev branch (closes #16917).

Discussion
----------

[PropertyInfo] Cache support

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #16893
| License       | MIT
| Doc PR        | todo

Replace #16893 with several advantages:

- Less complex patch
- Work for all usages of PropertyInfo (even outside of the Serializer)
- Avoid a circular reference between Serializer's CallMetadataFactory and PropertyInfo's SerializerExtractor
- Allow @mihai-stancu's #16143 to work as-is

Commits
-------

86c20df [PropertyInfo] Cache support
This PR was squashed before being merged into the 3.1-dev branch (closes #17446).

Discussion
----------

[Serializer] Add PSR-6 adapter

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | todo

- [x] Add tests

Commits
-------

4bf9d05 [Serializer] Add PSR-6 adapter
…equest list table (kucharovic)

This PR was submitted for the 2.8 branch but it was merged into the 3.1-dev branch instead (closes #17540).

Discussion
----------

[WebProfilerBundle] Add HTTP return code in the Ajax request list table

Q | A
---|---
Bug fix? | no
New feature? | yes
BC breaks? | no
Deprecations? | no
Tests pass? | yes
Fixed tickets | #17518
License | MIT
Doc PR | -

Commits
-------

9192e1b [WebProfilerBundle] Add HTTP return code in the Ajax request list table
…aid)

This PR was squashed before being merged into the 3.1-dev branch (closes #17504).

Discussion
----------

[Console] Show code when an exception is thrown

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Hi !

When an exception is thrown, sf console doesn't show the code exception, while this code is very useful during developpement (for example, [guzzle put http status code in his code exception](https://github.com/guzzle/guzzle/blob/6.1.1/src/Exception/RequestException.php#L30-L33)).

I propose you that we show the code exception only when the code exception > 0 and with ``-v`` verbosity. It means :

- ``throw new Exception('Not found', 0)`` with normal verbosity --> no change
- ``throw new Exception('Not found', 0)`` with ``-v`` verbosity --> no change
- ``throw new Exception('Not found', 404)`` with normal verbosity --> no change
- **but** ``throw new Exception('Not found', 404)`` with ``-v`` verbosity --> showing :

![image](https://cloud.githubusercontent.com/assets/4578773/12530638/052991f2-c1e5-11e5-92f1-b7b3f60cc4ba.png)

Commits
-------

f8cd9e8 [Console] Show code when an exception is thrown
@csarrazi
Copy link
Contributor Author

I'm re-opening this PR for the master branch.

@csarrazi csarrazi closed this Jan 27, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.