Commit Graph

714 Commits

Author SHA1 Message Date
Fabien Potencier
0ba5096fe6 fixed CS 2012-03-15 17:42:47 +01:00
Fabien Potencier
c4df57212b merged branch meandmymonkey/switchuser-noexception (PR #3580)
Commits
-------

0e4f789 changed test config
a98d554 [SecurityBundle] Allow switching to the user that is already impersonated (fix #2554)

Discussion
----------

[Security] Disabled exception when switching to the user that is already impersonated

Bug fix: yes-ish
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #2554
Todo: -

---------------------------------------------------------------------------

by vicb at 2012-03-13T14:31:45Z

@meandmymonkey thank you for your work on this issue. Would you have time to add functional tests ?

---------------------------------------------------------------------------

by meandmymonkey at 2012-03-13T14:49:52Z

Probably not today, but during the next few days, yes, of course.

---------------------------------------------------------------------------

by meandmymonkey at 2012-03-14T18:05:19Z

@vicb @schmittjoh Writing the tests I noticed switching to an non-existent user will not raise an exception. While it's not a security issue, it should raise an error for completeness sake, shouldn't it?

---------------------------------------------------------------------------

by vicb at 2012-03-14T20:28:52Z

I think it should (throw an `AuthenticationCredentialsNotFoundException`). _btw there is an extra `sprintf` in the original code that could be remove when attempting to exit_

---------------------------------------------------------------------------

by meandmymonkey at 2012-03-14T21:13:16Z

The problem with throwing an  `AuthenticationCredentialsNotFoundException` (or any other security exception for that matter) is that it derives from `AuthenticationException`, which means it gets caught by the framework and redirects to the login form, which is not what we want in this case.

We need to throw something 500-ish at [L89](d40b3376ec/src/Symfony/Component/Security/Http/Firewall/SwitchUserListener.php (L89)), either a generic or a (new) custom Exception.

---------------------------------------------------------------------------

by meandmymonkey at 2012-03-14T21:43:57Z

IMHO a `LogicException`would be fine, like the one used at [L117](d40b3376ec/src/Symfony/Component/Security/Http/Firewall/SwitchUserListener.php (L117)), as the error is not really about a failed authentication.

---------------------------------------------------------------------------

by vicb at 2012-03-14T21:49:04Z

I agree and btw very good job on the tests !

---------------------------------------------------------------------------

by meandmymonkey at 2012-03-14T22:12:43Z

Thanks :)

---------------------------------------------------------------------------

by vicb at 2012-03-15T08:01:13Z

Could you squash the commits, prefix the commit message with `[SecurityBundle]` and add `(fix #2554)` at the end ?

---------------------------------------------------------------------------

by meandmymonkey at 2012-03-15T08:53:12Z

Done.

---------------------------------------------------------------------------

by vicb at 2012-03-15T09:19:09Z

@fabpot this PR looks good to me.

---------------------------------------------------------------------------

by fabpot at 2012-03-15T12:50:50Z

Tests do not pass when you run them all.

---------------------------------------------------------------------------

by meandmymonkey at 2012-03-15T13:41:45Z

@fabpot @vicb With this config change, they pass when run together.

What is weird though is that the reason seems to be that the config for the profiler gets overwritten when running all tests together, while being used correctly when run alone. Any idea what can cause this? They should be isolated from each other.

The new config from 0e4f789 works, but enables the profiler for all SecurityBundle Tests... which is not strictly necessary.
2012-03-15 14:53:33 +01:00
Andreas Hucks
0e4f789084 changed test config 2012-03-15 14:32:58 +01:00
Andreas Hucks
a98d554472 [SecurityBundle] Allow switching to the user that is already impersonated (fix #2554)
Disabled exception when switching to the user that is already impersonated, exception is now only thrown when trying to switch to a new user.

Added an Excption exception when switching fails because target user does not exist.

Added funtional tests for switching users.
2012-03-15 01:50:14 -07:00
Joseph Bielawski
6ad201f5ba [FrameworkBundle + WebProfilerBundle] Optimized images and icons with PunnyPNG 2012-03-14 23:31:48 +01:00
Victor Berchet
c68c8b87c3 [SecurityBundle] Lazily load the post schema listener 2012-03-11 23:31:17 +01:00
Fabien Potencier
673bbb8a8e fixed CS 2012-03-11 18:00:25 +01:00
Victor Berchet
6d27aecb02 [SecurityBundle] Improve the init:acl command 2012-03-11 15:50:58 +01:00
Johannes M. Schmitt
e8094589f0 [Security]replaced acl:init command with postGenerateSchema listener 2012-03-11 14:52:28 +01:00
Jeremy Mikola
8796276611 [SecurityBundle] Avoid direct request dependency in LogoutUrlHelper
This quickly addresses the problem when the helper is constructed in a console environment without request scope. Ideally, the helper should be able to construct the absolute logout URL using data already available in the UrlGenerator's RequestContext and the $_SERVER environment variable; however, that will require copying some code from the Request class to create a base URI and path.

Fixes #3508
2012-03-06 02:36:11 -05:00
Tiago Ribeiro
85fd9f330c This should be 3 not 4, otherwiser I get the following error:
OutOfBoundsException: The index "4" is not in the range [0, 3].
2012-03-06 00:33:52 +00:00
Fabien Potencier
294b57e1b1 merged branch jmikola/logout-csrf (PR #3007)
Commits
-------

49a8654 [Security] Use LogoutException for invalid CSRF token in LogoutListener
a96105e [SecurityBundle] Use assertCount() in tests
4837407 [SecurityBundle] Fix execution of functional tests with different names
66722b3 [SecurityBundle] Templating helpers to generate logout URL's with CSRF tokens
aaaa040 [Security] Allow LogoutListener to validate CSRF tokens
b1f545b [Security] Refactor LogoutListener constructor to take options
c48c775 [SecurityBundle] Add functional test for form login with CSRF token

Discussion
----------

[Security] Implement support for CSRF tokens in logout URL's

```
Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -
```

[![Build Status](https://secure.travis-ci.org/jmikola/symfony.png?branch=logout-csrf)](http://travis-ci.org/jmikola/symfony)

This derived from #3006 but properly targeting on the master branch.

This exposes new configuration options to the logout listener to enable CSRF protection, as already exists for the form login listener. The individual commits and their extended messages should suffice for explaining the logical changes of the PR.

In addition to changing LogoutListener, I also created a templating helper to generate logout URL's, which includes a CSRF token if necessary. This may or may not using routing, depending on how the listener is configured since both route names or hard-coded paths are valid options.

Additionally, I added unit tests for LogoutListener and functional tests for both CSRF-enabled form logins and the new logout listener work.

Kudo's to @henrikbjorn for taking the time to document CSRF validation for form login listeners (see [here](http://henrik.bjrnskov.dk/symfony2-cross-site-request-forgery/)). The [Logout CSRF Protection](http://www.yiiframework.com/wiki/190/logout-csrf-protection/) article on the Yii Framework wiki was also helpful in drafting this.

---------------------------------------------------------------------------

by jmikola at 2011-12-31T07:50:31Z

Odd that Travis CI reported a build failure for PHP 5.3.2, but both 5.3 and 5.4 passed: http://travis-ci.org/#!/jmikola/symfony/builds/463356

My local machine passes as well.

---------------------------------------------------------------------------

by jmikola at 2012-02-06T20:05:30Z

@schmittjoh: Please let me know your thoughts on the last commit. I think it would be overkill to add support for another handler service and/or error page just for logout exceptions.

Perhaps as an alternative, we might just want to consider an invalid CSRF token on logout imply a false return value for `LogoutListener::requiresLogout()`. That would sacrifice the ability to handle the error separately (which a 403 response allows us), although we could still add logging (currently done in ExceptionListener).

---------------------------------------------------------------------------

by jmikola at 2012-02-13T17:41:33Z

@schmittjoh: ping

---------------------------------------------------------------------------

by fabpot at 2012-02-14T23:36:22Z

@jmikola: Instead of merging symfony/master, can you rebase?

---------------------------------------------------------------------------

by jmikola at 2012-02-15T00:00:49Z

Will do.

---------------------------------------------------------------------------

by jmikola at 2012-02-15T00:05:48Z

```
[avocado: symfony] logout-csrf (+9/-216) $ git rebase master
First, rewinding head to replay your work on top of it...
Applying: [SecurityBundle] Add functional test for form login with CSRF token
Applying: [Security] Refactor LogoutListener constructor to take options
Applying: [Security] Allow LogoutListener to validate CSRF tokens
Applying: [SecurityBundle] Templating helpers to generate logout URL's with CSRF tokens
Applying: [SecurityBundle] Fix execution of functional tests with different names
Applying: [SecurityBundle] Use assertCount() in tests
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Applying: [Security] Use LogoutException for invalid CSRF token in LogoutListener

[avocado: symfony] logout-csrf (+7) $ git st
# On branch logout-csrf
# Your branch and 'origin/logout-csrf' have diverged,
# and have 223 and 9 different commit(s) each, respectively.
#
nothing to commit (working directory clean)

[avocado: symfony] logout-csrf (+7) $
```

After rebasing, my merge commits disappeared. Is this normal?

---------------------------------------------------------------------------

by stof at 2012-02-15T00:15:07Z

Are you sure they disappeared ? Diverging from the remote branch is logical (you rewrote the history and so changed the commit id) but are you sure it does not have the commits on top of master ? Try ``git log master..logout-scrf``

If your commut are there, you simply need to force the push for the logout-csrf branch (take care to push only this branch during the force push to avoid messing all others as git won't warn you when asking to force)

---------------------------------------------------------------------------

by stof at 2012-02-15T00:17:09Z

ah sorry, you talked only about the merge commit. Yeah it is normal. When reapplying your commits on top of master, the merge commit are not kept as you are reapplying the changes linearly on top of the other branch (and deleting the merge commit was the reason why @fabpot asked you to rebase instead of merging btw)

---------------------------------------------------------------------------

by jmikola at 2012-02-15T00:18:00Z

The merge commits are not present in `git log master..logout-csrf`. Perhaps it used those merge commits when rebasing, as there were definitely conflicts resolved when I originally merged in symfony/master (@fabpot had made his own changes to LogoutListener).

I'll force-push the changes to my PR brange. IIRC, GitHub is smart enough to preserve inline diff comments, provided they were made through the PR and not on the original commits.

---------------------------------------------------------------------------

by jmikola at 2012-02-15T00:19:38Z

That worked well. In the future, I think I'll stick to merging upstream in and then rebasing afterwards. Resolving conflicts is much easier during a merge than interactive rebase.

---------------------------------------------------------------------------

by jmikola at 2012-02-23T18:46:13Z

@fabpot @schmittjoh: Is there anything else I can do for this PR? I believe the exception was the only outstanding question (see: [this comment](https://github.com/symfony/symfony/pull/3007#issuecomment-3835716)).
2012-03-05 16:12:24 +01:00
Jordi Boggiano
bafcaafbe6 Removed version field 2012-02-27 09:59:20 +01:00
Jordi Boggiano
f9d9dc7ce9 Add branch-alias for composer 2012-02-25 03:26:20 +01:00
Kris Wallsmith
eb7aa1bf78 [SecurityBundle] added interface to compiler 2012-02-15 14:14:40 -08:00
Jeremy Mikola
a96105e332 [SecurityBundle] Use assertCount() in tests
See: fd174a228b
2012-02-14 19:03:51 -05:00
Jeremy Mikola
4837407527 [SecurityBundle] Fix execution of functional tests with different names
Using "securitybundletest" as the default environment for the functional test's kernel causes a PHP fatal error redeclaring the class "appSecuritybundletestDebugProjectContainer" when multiple tests (with unique names) are executed. In lieu of forcing tests to specify their own environment explicitly, we can simply append the test name into the environment.

Note: this bug may be related to PHPUnit executing multiple tests within the same process.
2012-02-14 19:03:51 -05:00
Jeremy Mikola
66722b3d2e [SecurityBundle] Templating helpers to generate logout URL's with CSRF tokens
As each firewall is configured, its logout listener (if any) will be registered with the LogoutUrlHelper service. In a template, this helper may be used to generate relative or absolute URL's to a particular firewall's logout path. A CSRF token will be appended to the URL as necessary.

The Twig extension composes the helper service to avoid code duplication (see: #2999).
2012-02-14 19:03:51 -05:00
Jeremy Mikola
aaaa04003d [Security] Allow LogoutListener to validate CSRF tokens
This adds several new options to the logout listener, modeled after the form_login listener:

 * csrf_parameter
 * intention
 * csrf_provider

The "csrf_parameter" and "intention" have default values if omitted. By default, "csrf_provider" is empty and CSRF validation is disabled in LogoutListener (preserving BC). If a service ID is given for "csrf_provider", CSRF validation will be enabled. Invalid tokens will result in an InvalidCsrfTokenException being thrown before any logout handlers are invoked.
2012-02-14 19:03:51 -05:00
Jeremy Mikola
b1f545b677 [Security] Refactor LogoutListener constructor to take options
This will facilitate adding additional options for CSRF protection. Additionally, a unit test for existing behavior was added.
2012-02-14 19:03:51 -05:00
Jeremy Mikola
c48c775018 [SecurityBundle] Add functional test for form login with CSRF token 2012-02-14 19:03:51 -05:00
Drak
1ed6ee325c [DoctribeBridge][SecurityBundle][WebProfiler] Refactor code for HttpFoundation changes. 2012-02-11 11:21:30 +05:45
kbond
4847d3ad35 renamed command 2012-02-02 11:47:41 -05:00
kbond
fa32885ea3 [SecurityBundle] added configuration info 2012-02-02 08:20:37 -05:00
Bernhard Schussek
9153f0e569 [Validator] Deprecated ConstraintValidator methods setMessage(), getMessageTemplate() and getMessageParameters()
Had to refactor the validation tests at the same time and fixed various small bugs while doing so.
2012-02-01 14:03:13 +01:00
Fabien Potencier
c290d829a7 merged branch gustavopiltcher/master (PR #2858)
Commits
-------

4a797df Oracle issues
81d73bb Oracle issues
2316b21 Oracle issues
315bfc4 just update
b20b15b Oracle 10 issues

Discussion
----------

Oracle issues

updated with some adjustments required by stof

---------------------------------------------------------------------------

by fabpot at 2011-12-13T07:24:12Z

@schmittjoh: Can you have a look at this PR?

---------------------------------------------------------------------------

by fabpot at 2011-12-24T08:19:37Z

Can you squash your commit before I merge your PR? Thanks.
2012-01-22 10:45:17 +01:00
Dariusz Górecki
3cfaade8f7 [CS] Fix usage of assertCount
Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -
2012-01-18 14:42:47 +01:00
Fabien Potencier
8ce034fae0 Revert "merged 2.0"
This reverts commit 7000e944fd, reversing
changes made to 9d9013d662.
2012-01-08 20:43:02 +01:00
Fabien Potencier
7000e944fd merged 2.0 2012-01-05 14:54:04 +01:00
Fabien Potencier
208c2e468c removed the version attribute in all composer.json files 2012-01-05 14:51:20 +01:00
Henrik Bjørnskov
c37c14528e [SecurityBundle] Only throw exception if check_path looks like an url 2011-12-30 20:00:08 +01:00
Gustavo Piltcher
4a797df90b Oracle issues
minor modifications
2011-12-23 14:13:05 -02:00
William DURAND
818a3321c0 [Component] Moved Filesystem class to its own component 2011-12-22 19:36:46 +01:00
Fabien Potencier
30f2be3b70 merged branch juliendidier/twig-security-class (PR #2835)
Commits
-------

60ebaaa [SecurityBundle] fix service class by adding a parameter, on twig extension

Discussion
----------

[SecurityBundle] fix service class by adding a parameter, on twig extension

Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -

To override the is_granted twig function, the class of TwigExtension is now set in a parameter.

---------------------------------------------------------------------------

by stof at 2011/12/10 10:38:38 -0800

First thing, you could overwrite the extension at the twig level by simply registering another twig extension with the same ``getName`` method.

And second point, replacing core Twig functions is probably one of the best way to forbid you to use third party bundles as the change will also impact their code. Do you really need to do it (especially considering that this function simply calls the security context and all the logic is in the context) ?

---------------------------------------------------------------------------

by juliendidier at 2011/12/10 15:43:08 -0800

Yes, overriding ```is_granted``` function is probably a bad example. But having it set as parameter allow you to redefine it (if you know what you are doing).
2011-12-19 08:06:39 +01:00
Fabien Potencier
5d6a7d35b0 merged 2.0 2011-12-18 14:48:17 +01:00
Fabien Potencier
4316595dbb fixed CS 2011-12-18 14:42:59 +01:00
Fabien Potencier
6504d05804 fixed CS 2011-12-18 14:36:25 +01:00
Fabien Potencier
43a51c5d7f Merge branch '2.0'
* 2.0:
  fixed functional tests so that the cache/logs are specific to one version of Symfony (to avoid weird side effects)
  [FrameworkBundle] Prove client insulation and non-insulation works in session tests.
  [FrameworkBundle] Add tests to prove functional testing works with simultaneous clients.
  [FrameworkBundle] Small changes to test setup.
  [DoctrineBundle] Fixed incorrectly shown params
  [SwiftmailerBundle] fixed the send email command when the queue does not extends Swift_ConfigurableSpool
2011-12-17 11:02:23 +01:00
Fabien Potencier
f03692a507 fixed functional tests so that the cache/logs are specific to one version of Symfony (to avoid weird side effects) 2011-12-17 11:02:17 +01:00
Fabien Potencier
2750adb52d Merge branch '2.0'
* 2.0:
  [FrameworkBundle] Added functional tests.
  [Form] Added missing use statements (closes #2880)
  [Console] Improve input definition output for Boolean defaults
  [SecurityBundle] Changed environment to something unique.
  2879: missing space between catch and the brace
  #2688: Entities are generated in wrong folder (doctrine:generate:entities Namespace)
  [TwigBundle] Fix the exception message escaping
2011-12-15 18:17:38 +01:00
Drak
62f3dc4c49 [SecurityBundle] Changed environment to something unique.
If you run functional tests from different bundles you it will cause a redeclare error
because the DIC appKernel name is not unique.
2011-12-15 05:36:58 +00:00
Fabien Potencier
142cef21bb merged 2.0 2011-12-13 16:12:53 +01:00
Kevin Bond
73ac77336b [Config] added ability to set info message and example to node definition 2011-12-13 06:04:53 -05:00
Fabien Potencier
e3421a0b1d [DoctrineBridge] fixed some CS 2011-12-13 10:22:12 +01:00
Gustavo Piltcher
81d73bb968 Oracle issues
minor changes on code
2011-12-13 00:38:22 -02:00
Julien DIDIER
60ebaaad70 [SecurityBundle] fix service class by adding a parameter, on twig extension 2011-12-10 19:04:22 +01:00
Gustavo Piltcher
315bfc472a just update 2011-12-01 13:33:03 -02:00
Fabien Potencier
2363748ba2 merged branch canni/failed_login_event (PR #2678)
Commits
-------

09562df Update CHANGELOG for 2.1, describe new auth events
cf09c2d added authentication success/failure events

Discussion
----------

[Security] Implementation of a "failed login" event, replaces: PR #1307

As I have to use this feature I have completed its implementation.

Bugfix: no
Feature addition: yes
Symfopny2 tests pass: yes
Replaces/closes PR: #1307

---------------------------------------------------------------------------

by schmittjoh at 2011/11/18 23:57:56 -0800

Usually, this event is used for the wrong reasons (to customize what happens on authentication failure). Can you move your implementation to the AuthenticationProviderManager instead?

see https://github.com/schmittjoh/symfony/blob/master/src/Symfony/Component/Security/Core/Authentication/AuthenticationProviderManager.php#L103

---------------------------------------------------------------------------

by canni at 2011/11/19 06:00:36 -0800

Good point :) I'll not rewrite yours work, I've cherry-picked yours commits. (BTW you added call to `setEventDispatcher` on `security.authentication.manager` to commit related to some different work ;)

---------------------------------------------------------------------------

by fabpot at 2011/11/22 00:12:19 -0800

The new files are missing the LICENSE header. As far as I can see, @schmittjoh fork has a different license from the Symfony one. This needs to be clarified before I can merge this PR.

---------------------------------------------------------------------------

by schmittjoh at 2011/11/22 01:53:09 -0800

No biggy, MIT is fine here.

---------------------------------------------------------------------------

by canni at 2011/11/22 01:57:51 -0800

@fabpot done

---------------------------------------------------------------------------

by fabpot at 2011/11/22 02:22:47 -0800

@canni: Can you update the CHANGELOG file (to reference the changes and the BC breaks -- like the move of KernelEvents for instance).

---------------------------------------------------------------------------

by canni at 2011/11/22 02:40:33 -0800

@fabpot: no problem & done

PS I haven't realized that namespace change of `SecurityEvents` is actually a BC Break, thx for pointing this.

---------------------------------------------------------------------------

by fabpot at 2011/11/22 03:06:17 -0800

@canni: What about keeping a `SecurityEvents` class in the `Http` namespace that just extends the new one. That way, we don't break BC.

---------------------------------------------------------------------------

by canni at 2011/11/22 03:53:01 -0800

@fabpot: that will force us to remove `final` keyword form one of classes.

Maybe we can add new, not extending class e.g.: `GeneralSecurityEvents` or `AuthenticationEvents`, that way we dont break BC and dont introduce confusion in naming?

---------------------------------------------------------------------------

by canni at 2011/11/22 05:53:15 -0800

@fabpot: I've removed the BC break, and squashed schmittjoh commits, to keep things nice and clear.
2011-11-24 08:31:18 +01:00
Fabien Potencier
94416129a2 removed unused use statements 2011-11-24 07:17:02 +01:00
Fabien Potencier
a7f7be2309 merged 2.0 2011-11-23 23:28:22 +01:00
Gustavo Piltcher
b20b15bd4c Oracle 10 issues
I've changed Schema.php to not use Restrict on delete/update since
oracle report it as missing keyword. Both restrict and no action on
oracle seems to be redundant and used by default. So the output query
can't use it. I've also changed Schema construct to accept a
SchemaConfig parameter. InitAcl was changed to pass on new Schema a
SchemaConfig generated by SchemaManager, I did that because acl command
was generating names with more than 30 characters and Oracle doesn't
accept, this seems to solve the problem and init:acl works properly.
2011-11-23 19:02:00 -02:00
Jordi Boggiano
c76487ee04 Fix composer.json files to be stricter 2011-11-23 17:51:23 +01:00
Jordi Boggiano
e7215aeb40 Fix composer.json 2011-11-23 16:10:32 +01:00
Johannes Schmitt
cf09c2db55 added authentication success/failure events 2011-11-22 14:44:41 +01:00
Fabien Potencier
c73476929b merged branch stof/security_factories (PR #2668)
Commits
-------

413756c [BC break][SecurityBundle] Changed the way to register factories

Discussion
----------

[BC break][SecurityBundle] Changed the way to register factories

As discussed in #2454, this changes the way to register the factories to let each bundles register the factories it provides.
2011-11-22 09:24:57 +01:00
Fabien Potencier
98a8854c61 merged branch flevour/add-security-auth-manager-parameter (PR #2658)
Commits
-------

2adc36c [Security] renamed security option to erase_credentials
104b697 [Security] added configurable option security.erase_credentials_from_token
ede55d2 [Security] added configuration parameter for AuthorizationManagerProvider

Discussion
----------

[Security] added configuration parameter to AuthorizationManagerProvider

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: 2657
Todo: -

---------------------------------------------------------------------------

by fabpot at 2011/11/16 10:30:34 -0800

You should also add a configurable option under the `security` entry to ease the configurability.
2011-11-22 09:23:09 +01:00
Christophe Coevoet
413756c103 [BC break][SecurityBundle] Changed the way to register factories 2011-11-17 20:16:17 +01:00
Francesco Levorato
2adc36c3a9 [Security] renamed security option to erase_credentials 2011-11-17 17:27:28 +01:00
Fabien Potencier
ae1e9cbedf fixed some tests broken by previous merge 2011-11-17 16:05:15 +01:00
Fabien Potencier
ec2c81bc84 merged branch stof/security_providers (PR #2454)
Commits
-------

d2195cc Fixed phpdoc and updated the changelog
9e41ff4 [SecurityBundle] Added a validation rule
b107a3f [SecurityBundle] Refactored the configuration
633f0e9 [DoctrineBundle] Moved the entity provider service to DoctrineBundle
74732dc [SecurityBundle] Added a way to extend the providers section of the config

Discussion
----------

[WIP][SecurityBundle] Added a way to extend the providers section of the config

Bug fix: no
Feature addition: yes
BC break: <del>no (for now)</del> yes
Tests pass: yes

This adds a way to extend the ``providers`` section of the security config so that other bundles can hook their stuff into it. An example is available in DoctrineBundle which is now responsible to handle the entity provider (<del>needs some cleanup as the service definition is still in SecurityBundle currently</del>). This will allow PropelBundle to provide a ``propel:`` provider for instance.

In order to keep BC with the existing configuration for the in-memory and the chain providers, I had to allow using a prototyped node instead of forcing using an array node with childrens. This introduces some issues:

- impossible to validate easily that a provider uses only one setup as prototyped node always have a default value (the empty array)
- the ``getFixableKey`` method is needed in the interface to support the XML format by pluralizing the name.

Here is my non-BC proposal for the configuration to clean this:

```yaml
security:
    providers:
        first:
            memory: # BC break here by adding a level before the users
                users:
                     joe: { password: foobar, roles: ROLE_USER }
                     john: { password: foobarbaz, roles: ROLE_USER }
        second:
            entity: # this one is BC
                class: Acme\DemoBundle\Entity\User
        third:
            id: my_custom_provider # also BC
        fourth:
            chain: # BC break by adding a level before the providers
                 providers: [first, second, third]
```

What do you think about it ? Do we need to keep the BC in the config of the bundle or no ?

Btw note that the way to register the factories used by the firewall section should be refactored using the new way to provide extension points in the extensions (as done here) instead of relying on the end user to register factories, which would probably mean a BC break anyway.

---------------------------------------------------------------------------

by lsmith77 at 2011/10/23 09:19:23 -0700

i don't think we should keep BC. the security config is complex as is .. having BC stuff in there will just make it even harder and confusing.

---------------------------------------------------------------------------

by willdurand at 2011/10/23 09:41:25 -0700

Is the security component tagged with `@api` ?

So basically, we just have to create a factory (`ModelFactory` for instance) and to register it in the `security` extension, right ? Seems quite simple to extend and much better than the hardcoded version…

Why did you call the method to pluralize a key `getFixableKey` ?

---------------------------------------------------------------------------

by beberlei at 2011/10/23 14:48:26 -0700

Changing security config will introduce risk for users. We should avoid that

---------------------------------------------------------------------------

by stof at 2011/10/23 15:34:47 -0700

@beberlei as the config is validated, it will simply give them an exception during the loading of the config if they don't update their config.

---------------------------------------------------------------------------

by stof at 2011/10/24 01:01:42 -0700

@schmittjoh @fabpot Could you give your mind about it ?

---------------------------------------------------------------------------

by stof at 2011/10/31 17:08:12 -0700

@fabpot @schmittjoh ping

---------------------------------------------------------------------------

by stof at 2011/11/11 14:08:18 -0800

I updated the PR by implementing my proposal as the latest IRC meeting agreed that we don't need to keep the BC for this change. This allows to add the validation rule now.

---------------------------------------------------------------------------

by stof at 2011/11/16 11:16:06 -0800

@fabpot ping

---------------------------------------------------------------------------

by fabpot at 2011/11/16 22:29:05 -0800

@stof: Before merging, you must also add information about how to upgrade in the CHANGELOG-2.1.md file.

---------------------------------------------------------------------------

by stof at 2011/11/17 00:01:23 -0800

@fabpot done
2011-11-17 16:00:33 +01:00
Fabien Potencier
e3655f3a5c changed priorities for kernel.request listeners
The Firewall is now executed after the Router. This was needed to have access
to the locale and other request attributes that are set by the Router. This
change implies that all Firewall specific URLs have proper (empty) routes like
`/login_check` and `/logout`.
2011-11-17 14:22:53 +01:00
Johannes Schmitt
46e5fa5c87 fixed previous merges partially, there still seems to be a problem with the test client 2011-11-17 14:04:01 +01:00
Fabien Potencier
6ae5082bbf [SecurityBundle] fixed typos in functional tests 2011-11-17 14:02:17 +01:00
Francesco Levorato
104b697767 [Security] added configurable option security.erase_credentials_from_token 2011-11-17 09:57:17 +01:00
Christophe Coevoet
d2195cc3d1 Fixed phpdoc and updated the changelog 2011-11-17 08:59:41 +01:00
Fabien Potencier
d1ae6c7cb6 bumped Symfony version in composer.json files to 2.0.7 2011-11-17 06:58:47 +01:00
Francesco Levorato
ede55d2abe [Security] added configuration parameter for AuthorizationManagerProvider 2011-11-16 11:51:44 +01:00
Christophe Coevoet
9e41ff4db5 [SecurityBundle] Added a validation rule
This enforces to configure each provider in exactly one way.
2011-11-11 23:02:41 +01:00
Christophe Coevoet
b107a3fdf0 [SecurityBundle] Refactored the configuration
The configuration is now cleaner by avoiding using prototyped nodes
as additional keys. This is a BC break for existing providers.

 - MemoryProvider:

    security:
        providers:
	    my_provider:
	        memory:  # this level has been added
		    users:
		    	# ...

 - ChainProvider:

    security:
        providers:
	    my_provider:
	    	chain:  # This level has been added
		    providers:
		    	# ...
2011-11-11 22:42:14 +01:00
Fabien Potencier
f8f622b39c bumped Symfony version to 2.0.6-DEV 2011-11-02 14:18:45 +01:00
Fabien Potencier
7f21a5e979 bumped Symfony version in composer.json files to 2.0.5 2011-11-02 12:42:41 +01:00
Fabien Potencier
fd380e37a9 merged 2.0 2011-11-01 20:19:25 +01:00
Fabien Potencier
fc97472f64 updated composer.json files to contain information about autoloading and target dirs 2011-11-01 20:17:57 +01:00
Fabien Potencier
dec43f5539 merged 2.0 2011-10-29 12:01:39 +02:00
Fabien Potencier
851eb73778 removed unused use statements 2011-10-29 11:56:30 +02:00
Arnout Boks
454e602c06 [SecurityBundle] Skipped two tests in PHP <5.3.9 on Windows as these hang due to a known bug 2011-10-27 09:21:07 +02:00
Adam Monsen
4bd340d239 [Security] Fix typo in init:acl command name 2011-10-26 22:06:51 -07:00
Christophe Coevoet
633f0e9d77 [DoctrineBundle] Moved the entity provider service to DoctrineBundle 2011-10-23 15:13:40 +02:00
Christophe Coevoet
74732dc223 [SecurityBundle] Added a way to extend the providers section of the config 2011-10-23 14:39:05 +02:00
Fabien Potencier
74bc699b27 moved management of the locale from the Session class to the Request class
The locale management does not require sessions anymore.

In the Symfony2 spirit, the locale should be part of your URLs. If this is the case
(via the special _locale request attribute), Symfony will store it in the request
(getLocale()).

This feature is now also configurable/replaceable at will as everything is now managed
by the new LocaleListener event listener.

How to upgrade:

The default locale configuration has been moved from session to the main configuration:

Before:

framework:
    session:
        default_locale: en

After:

framework:
    default_locale: en

Whenever you want to get the current locale, call getLocale() on the request (was on the
session before).
2011-10-08 18:34:49 +02:00
Fabien Potencier
245ff6d7a8 updated composer.json for 2.1 2011-09-29 17:40:43 +02:00
Fabien Potencier
f5ab6ec934 Merge branch '2.0'
* 2.0:
  [composer] add missing deps for FrameworkBundle
  [composer] change ext/intl to the new ext-intl syntax
  [composer] fix monolog-bridge composer.json, add more inter-component deps
  [composer] add composer.json
2011-09-29 17:29:32 +02:00
Igor Wiedler
d535afeb98 [composer] fix monolog-bridge composer.json, add more inter-component deps 2011-09-27 09:33:21 +02:00
Igor Wiedler
9ade639bb4 [composer] add composer.json 2011-09-27 00:55:43 +02:00
Fabien Potencier
7d3c2df98d [SecurityBundle] added a validator for the user password
This validator is useful when you want to validate that an input value
is equal to the user current password (in a form where the user can change
his password for instance).

Note that this should not be used to validate a login form as this is
done automatically by the built-in security mechanism.
2011-09-21 16:30:46 +02:00
Fabien Potencier
e7b2d2d659 merged 2.0 branch 2011-09-04 09:28:37 +02:00
Vincent
0224a34bb1 Fixes typo on ACL Doctrine cache. 2011-09-01 11:35:36 +03:00
Fabien Potencier
0eae562cb2 converted file_exists calls to either is_file or is_dir where it makes sense 2011-08-29 15:28:26 +02:00
Victor Berchet
1515912e2e [SecurityBundle] Fix autoloading in tests (autoload.php overrides autoload.php.dist when it exists) 2011-08-18 09:27:14 +02:00
Hugo Hamon
e16ccaac71 [SecurityBundle] added short description and help for the init:acl command. 2011-07-28 09:49:02 +02:00
Fabien Potencier
8700cd6154 fixed CS 2011-07-27 08:27:46 +02:00
Fabien Potencier
20a704431e [SecurityBundle] fixed typo in tests 2011-07-22 14:50:38 +02:00
Johannes Schmitt
eae6a773c6 fixed wrong case 2011-07-20 08:43:26 +02:00
Johannes Schmitt
d0a175b6cd fixes #1659 2011-07-19 20:51:30 +02:00
Johannes Schmitt
f300edebe4 fixes several bugs 2011-07-19 16:21:58 +02:00
Johannes Schmitt
a4f05ac7ab added some tests 2011-07-19 14:50:39 +02:00
Fabien Potencier
c3a060e368 updated all core extensions to use the new shortcut method 2011-07-18 17:46:00 +02:00
marc.weistroff
b33e1bae29 [SecurityBundle] Reported namespace change of EntityUserProvider 2011-07-13 08:46:21 +02:00
Fabien Potencier
6a7359389d removed usage of \Exception as PHPUnit won't allow to catch them anymore in the next major version 2011-07-11 11:54:00 +02:00
Fabien Potencier
1436d8dab7 [Security] added an HttpUtils class to manage logic related to Requests and Responses
This change removes the need for the {_locale} hack.
Now, all paths in the Security component can be:

* An absolute path (/login)
* An absolute URL (http://symfony.com/login)
* A route name (login)

So, if you want to use a path that includes a global parameter (like _locale),
use a route instead of a path.
2011-06-22 14:47:19 +02:00
Jordi Boggiano
7350109f6e Renamed core.* events to kernel.* and CoreEvents to KernelEvents 2011-06-21 16:35:14 +02:00
Jordi Boggiano
edbdf7b154 Rename kernel.listener to kernel.event_listener
Better consistency with doctrine.event_listener
2011-06-21 16:35:12 +02:00
Fabien Potencier
9ceaf6fcbe [SecurityBundle] fixed typo 2011-06-21 08:09:24 +02:00
Fabien Potencier
25e99e894b renamed Command to ContainerAwareCommand 2011-06-20 21:04:55 +02:00
Fabien Potencier
38fa4e65dc fixed tests 2011-06-20 08:06:32 +02:00
Fabien Potencier
adb9aaf47d merged branch kriswallsmith/kernel/static-test-methods (PR #1291)
Commits
-------

5b0f1da [HttpKernel] made WebTestCase methods static

Discussion
----------

[HttpKernel] made WebTestCase methods static

This makes it possible to load fixture data in `::setUpBeforeClass()` which makes tests run much faster.

Also, `createClient()` is not protected instead of public; I'm not sure why it was public in the first place.
2011-06-16 16:33:42 +02:00
Fabien Potencier
a232c148eb fixed CS 2011-06-14 12:54:32 +02:00
Kris Wallsmith
5b0f1da074 [HttpKernel] made WebTestCase methods static 2011-06-11 08:50:27 -07:00
Fabien Potencier
355f802546 [TwigBundle] fixed tests 2011-06-11 07:54:10 +02:00
Fabien Potencier
1aabc5da64 fixed CS 2011-06-08 12:16:48 +02:00
Fabien Potencier
62e4342a86 fixed CS 2011-06-08 12:12:55 +02:00
Fabien Potencier
33b47b22db Merge remote branch 'schmittjoh/security'
* schmittjoh/security:
  [SecurityBundle] exposed setting in the configuration
  [Security/Http] removed irrelevant code
2011-06-04 13:52:18 +02:00
Johannes M. Schmitt
d03c6c72eb [SecurityBundle] exposed setting in the configuration 2011-06-03 14:06:55 +02:00
Joseph Bielawski
a414e56881 Fix for failing tests #1199 when Twig vendor doesn't exists. 2011-06-03 01:42:19 -07:00
Johannes M. Schmitt
9ad318546d [SecurityBundle] fixed a regression 2011-06-01 13:53:21 +02:00
Johannes M. Schmitt
66f3abfe0c [SecurityBundle] re-use local variable 2011-06-01 13:20:52 +02:00
Johannes M. Schmitt
6f8871d2d7 [SecurityBundle] added validation for check paths 2011-06-01 13:05:34 +02:00
Johannes M. Schmitt
d2fa6c3e4e [SecurityBundle] added user_providers option for remember_me 2011-06-01 11:48:20 +02:00
Fabien Potencier
65200aa86a added missing license headers 2011-05-31 10:57:06 +02:00
Fabien Potencier
839c332438 moved all listener classes under a common EventListener sub-namespace 2011-05-31 10:43:20 +02:00
Fabien Potencier
02605f3481 merged origin/master 2011-05-31 08:34:05 +02:00
Fabien Potencier
2e56703a32 [SecurityBundle] fixed error_log() being called during functional tests 2011-05-31 08:02:18 +02:00
Fabien Potencier
c8f9904ac8 merged origin/master 2011-05-30 15:00:41 +02:00
Fabien Potencier
6731065626 tweaked priorities 2011-05-30 14:59:32 +02:00
Fabien Potencier
ea848be42f [SecurityBundle] added some cleanup 2011-05-30 14:59:18 +02:00
Fabien Potencier
9181e5dd0c merged origin/master 2011-05-30 14:28:54 +02:00
Fabien Potencier
5059559035 Merge remote branch 'Seldaek/events' into events1
* Seldaek/events:
  [EventDispatcher] Removed temporary code
  [FrameworkBundle] Improved code readability
  [FrameworkBundle] Clarified code and fixed regression
  Update Core and Security events to latest model
  [EventDispatcher] Allow registration of arbitrary callbacks
  [EventDispatcher] Remove useless code
  [EventDispatcher] Minor memory optimization to getListeners()
  [FrameworkBundle] Small optimization, remove some function calls
2011-05-30 08:58:49 +02:00
Johannes Schmitt
e3ddb81b38 added some tests for security/routing integration 2011-05-28 17:58:44 +02:00
Johannes Schmitt
439699daeb Merge branch 'functionalTests' into security 2011-05-28 17:17:00 +02:00
Johannes Schmitt
5cda240c6f refactored functional tests a bit 2011-05-28 17:16:55 +02:00
Johannes Schmitt
f37386e336 Merge branch 'master' of git://github.com/symfony/symfony into security 2011-05-28 17:07:16 +02:00
Johannes Schmitt
746151c783 added another test case 2011-05-27 07:37:54 +02:00
Johannes Schmitt
1ca4dcad91 [SecurityBundle] bootstrapped functional test suite 2011-05-27 01:07:04 +02:00
Jordi Boggiano
af0bd8a136 Update Core and Security events to latest model
The main benefit is that in XML/YML files we have common syntax (i.e. core.controller, form.pre_bind) that properly namespaces event names (before: onCoreController was ok, preBind was not).
On the other hand in PHP land we also have namespaced events, CoreEvents::controller, FormEvents::preBind, before it was Events::onCoreController, Events::onPreBind, we now have more context.
2011-05-26 11:55:07 +02:00
Ryan Weaver
afe6005f49 [SecurityBundle] Using a DelegatingLoader so that security factories can be in any config format 2011-05-24 11:35:49 -05:00
Johannes Schmitt
0eb7564f7d Merge remote branch 'origin/master' into security
Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Listener/RequestAttributeInitializingListener.php
2011-05-18 12:54:47 +02:00
Kris Wallsmith
b645278f8b [Security] updated with "intention" 2011-05-16 14:16:30 -07:00
Johannes Schmitt
a97e8b82d0 [FrameworkBundle][SecurityBundle] fixes a regression in the listener order 2011-05-14 13:25:02 +02:00
Fabien Potencier
0de8a55f02 [SecurityBundle] re-introduced parameters in the DIC for better overridability 2011-05-13 14:34:14 +02:00
Johannes Schmitt
c3084050a0 [SecurityBundle] added some tests 2011-05-05 08:20:35 +02:00
Johannes Schmitt
f787a2a748 Merge branch 'acl' of https://github.com/IamPersistent/symfony into security 2011-05-05 08:06:31 +02:00
Pascal Borreli
391744719a Various typos 2011-04-30 19:40:15 +00:00
IamPersistent
806c534560 add provider to configuration 2011-04-26 21:57:17 -07:00
IamPersistent
ebcd6f4563 update DI to handle change in config and another provider 2011-04-26 21:57:17 -07:00
IamPersistent
314f361846 separate dbal specific acl config 2011-04-26 21:57:17 -07:00
Pascal Borreli
8c0beea677 [Phpdoc] Cleaning/fixing 2011-04-23 15:18:47 +00:00
Pascal Borreli
b5769c52d6 Fixed various typo 2011-04-22 23:12:50 +00:00
Johannes Schmitt
8ae7a21e30 [SecurityBundle] changed expected value for token_provider key in the rememberme section 2011-04-20 22:20:55 +02:00
Kris Wallsmith
470baaab9f [DependencyInjection] renamed ContainerBuilder::remove() as removeDefinition() to be more consistent with other definition-related methods 2011-04-20 04:48:19 -07:00
Kris Wallsmith
cdf706d357 [DependencyInjection] renamed Definition::setArgument() as replaceArgument() to be more specific 2011-04-20 04:47:44 -07:00
Brikou CARRE
e898445b94 removed empty lines/trailing spaces 2011-04-15 21:12:02 +02:00
Johannes Schmitt
5a4ffcd8b6 [Security] re-added some parameters 2011-04-08 07:24:42 +02:00
Victor Berchet
b640fcb0f0 [Config] Introduction of an ConfigurationInterface 2011-04-05 11:26:28 +02:00
Fabien Potencier
01ee1bfed1 merged stof/monolog 2011-04-04 12:29:15 +02:00
Fabien Potencier
f4276a88f6 Merge remote branch 'schmittjoh/parameterCleanup'
* schmittjoh/parameterCleanup:
  [SecurityBundle] inline parameters which are only used in one place
  [SecurityBundle] moved all non-class parameters to the Configuration file
2011-04-04 11:57:31 +02:00
Fabien Potencier
f232b3cdda reverted Merge remote branch 'kriswallsmith/kernel/shorter-bundle-names' 2011-04-04 11:10:56 +02:00
Fabien Potencier
743592d81e Revert "fixed remaining Bundle suffixes"
This reverts commit 315147c6c8.
2011-04-04 11:08:56 +02:00
Johannes Schmitt
4776f9523b [SecurityBundle] inline parameters which are only used in one place 2011-04-01 12:40:44 +02:00
Johannes Schmitt
e0c745757d [SecurityBundle] moved all non-class parameters to the Configuration file 2011-04-01 09:09:17 +02:00
Fabien Potencier
315147c6c8 fixed remaining Bundle suffixes 2011-03-28 19:04:02 +02:00
Kris Wallsmith
ade83e2e80 updated codebase to use shorter bundle names
Controllers:
"BlogBundle:Post:show" is now "Blog:Post:show"

Templates:
"BlogBundle:Post:show.html.twig" is now "Blog:Post:show.html.twig"

Resources:
"@BlogBundle/Resources/config/blog.xml" is now "@Blog/Resources/config/blog.xml"

Doctrine:
"$em->find('BlogBundle:Post', $id)" is now "$em->find('Blog:Post', $id)"
2011-03-27 06:25:43 -07:00
Alexey Popkov
7423f0bf50 [SecurityBundle] fixed missing argument EventDisplatcher in RememberMe service 2011-03-24 14:00:16 +03:00
Christophe Coevoet
a6265e9337 [SecurityBundle] Fixed some config node to allow to unset them 2011-03-19 12:40:51 +01:00
Johannes Schmitt
a56dbec6d8 [Security] removed un-needed event parameter from many interfaces 2011-03-18 18:26:55 +01:00
Fabien Potencier
9d8c053d42 updated icons for swiftmailer and security 2011-03-18 15:19:39 +01:00
Fabien Potencier
20a717ea3c [WebProfileBundle] added the controller callable name in the WDT (also tweaked the CSS to free some space) 2011-03-18 14:57:41 +01:00
Jordi Boggiano
8fabca609f Added monolog tags to create all core channels 2011-03-18 12:29:20 +01:00
Fabien Potencier
3627eee3c6 Merge remote branch 'vicb/cfg_rebase'
* vicb/cfg_rebase:
  [Config] Ability to add and override node types without having to subclass NodeBuilder
  [DoctrineBundle] Fix some typos
  [SwiftMailerBundle] Fix a merge issue in the configuration
  Tweak PHPDocs in the extension configuration files
  [Config] Component refactoring
2011-03-18 11:41:43 +01:00
Fabien Potencier
6c8e71c8e7 renamed filterCore* to onCore*
The onCore* events are fired at some pre-defined points during the
handling of a request. At this is more important than the fact
that you can change things from the event.
2011-03-17 17:01:59 +01:00
Victor Berchet
0e84757d94 Tweak PHPDocs in the extension configuration files 2011-03-17 16:29:03 +01:00
Victor Berchet
1e0ed22c55 [Config] Component refactoring
The Config component API have changed and the extension configuration files must be updated accordingly:

1. Array nodes must enclosed their children definition in ->children() ... ->end() calls:

Before:

    $treeBuilder->root('zend', 'array')
        ->arrayNode('logger')
            ->scalarNode('priority')->defaultValue('INFO')->end()
            ->booleanNode('log_errors')->defaultFalse()->end()
        ->end();

After:

    $treeBuilder->root('zend', 'array')
        ->children()
            ->arrayNode('logger')
                ->children()
                    ->scalarNode('priority')->defaultValue('INFO')->end()
                    ->booleanNode('log_errors')->defaultFalse()->end()
                ->end()
            ->end()
        ->end();

2. The 'builder' method (in NodeBuilder) has been dropped in favor of an 'append' method (in ArrayNodeDefinition)

Before:

    $treeBuilder->root('doctrine', 'array')
        ->arrayNode('dbal')
            ->builder($this->getDbalConnectionsNode())
        ->end();

After:

    $treeBuilder->root('doctrine', 'array')
        ->children()
            ->arrayNode('dbal')
                ->append($this->getDbalConnectionsNode())
            ->end()
        ->end();

3. The root of a TreeBuilder is now an NodeDefinition (and most probably an ArrayNodeDefinition):

Before:

    $root = $treeBuilder->root('doctrine', 'array');
    $this->addDbalSection($root);

    public function addDbalSection(NodeBuilder $node)
    {
        ...
    }

After:

    $root = $treeBuilder->root('doctrine', 'array');
    $this->addDbalSection($root);

    public function addDbalSection(ArrayNodeDefinition $node)
    {
        ...
    }

4. The NodeBuilder API has changed (this is seldom used):

Before:

    $node = new NodeBuilder('connections', 'array');

After:

The recommended way is to use a tree builder:

    $treeBuilder = new TreeBuilder();
    $node = $treeBuilder->root('connections', 'array');

An other way would be:

    $builder = new NodeBuilder();
    $node = $builder->node('connections', 'array');

Some notes:

- Tree root nodes should most always be array nodes, so this as been made the default:

    $treeBuilder->root('doctrine', 'array') is equivalent to $treeBuilder->root('doctrine')

- There could be more than one ->children() ... ->end() sections. This could help with the readability:

    $treeBuilder->root('doctrine')
        ->children()
            ->scalarNode('default_connection')->end()
        ->end()
        ->fixXmlConfig('type')
        ->children()
            ->arrayNode('types')
                ....
            ->end()
        ->end()
2011-03-17 16:26:15 +01:00
Bernhard Schussek
5f14d8d6aa Merge remote branch 'symfony/master' into event-manager
Conflicts:
	src/Symfony/Bundle/AsseticBundle/CacheWarmer/AssetWriterCacheWarmer.php
	src/Symfony/Bundle/AsseticBundle/Tests/CacheWarmer/AssetWriterCacheWarmerTest.php
	src/Symfony/Bundle/FrameworkBundle/Profiler/ProfilerListener.php
	src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml
	src/Symfony/Component/HttpKernel/HttpKernel.php
	src/Symfony/Component/Security/Http/Firewall/AbstractAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php
2011-03-17 12:34:12 +01:00
Fabien Potencier
429d927e8c Merge remote branch 'hason/extensions' 2011-03-16 13:37:06 +01:00
Fabien Potencier
05ab74e7b9 [SecurityBundle] simplified things 2011-03-16 12:58:52 +01:00
Martin Hason
aae492f79b removed unused use statements in DIC extensions 2011-03-16 11:29:41 +01:00
Martin Hason
3bdacafb1b [SecurityBundle] simplified resource location 2011-03-16 10:32:37 +01:00
Fabien Potencier
2cf0601f18 [SecurityBundle] made the anonymous key parameter configurable and random by default 2011-03-16 09:31:28 +01:00
Fabien Potencier
2610e1b699 [SecurityBundle] made user and credentials configuration for X509 authentication 2011-03-16 09:30:48 +01:00
Fabien Potencier
b638cf07a5 [SecurityBundle] made realm configurable for HTTP basic and digest authentication 2011-03-16 09:29:44 +01:00
Fabien Potencier
db27b4d288 [SecurityBundle] made a small tweak to the WDT panel 2011-03-15 22:52:09 +01:00
Fabien Potencier
11f42a82dc [SecurityBundle] added a note about why a user can be logged in but not authenticated 2011-03-15 22:02:26 +01:00
Fabien Potencier
39504fc98d [SecurityBundle] made some tweaks to the security profiler panel 2011-03-15 21:50:56 +01:00
Fabien Potencier
44c95f97a4 [SecurityBundle] fixed profiler template when the user is logged in but has no roles 2011-03-15 21:48:49 +01:00
Fabien Potencier
345e2d39b5 [SecurityBundle] tweaked WDT security tab 2011-03-15 21:02:36 +01:00
Fabien Potencier
d7663e7046 [SecurityBundle] fixed the anonymous listener which was always registered 2011-03-15 20:44:46 +01:00
Fabien Potencier
50e463977b Merge remote branch 'vicb/profiler_again' 2011-03-15 13:37:52 +01:00
hhamon
201cb65ecd [SecurityBundle] fixed typo in security_rememberme.xml services definition 2011-03-14 19:46:11 +01:00
Johannes M. Schmitt
032fa2bde8 [Security] fixed default entity provider 2011-03-14 17:31:29 +01:00
Victor Berchet
8128300baa [WebProfilerBundle] Revert the support for a status in data collectors 2011-03-14 17:24:11 +01:00
Bernhard Schussek
06c682b4fb Switched from Doctrine's EventManager implementation to the EventManager clone in Symfony2 (now called EventDispatcher again) 2011-03-13 19:49:10 +01:00
Bernhard Schussek
25931caeab Merge remote branch 'symfony/master' into event-manager
Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventManager.php
	src/Symfony/Bundle/WebProfilerBundle/WebDebugToolbarListener.php
	src/Symfony/Component/Security/Http/Firewall.php
	src/Symfony/Component/Security/Http/Firewall/AbstractAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php
	src/Symfony/Component/Security/Http/Firewall/AccessListener.php
	src/Symfony/Component/Security/Http/Firewall/AnonymousAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/ChannelListener.php
	src/Symfony/Component/Security/Http/Firewall/ContextListener.php
	src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/ExceptionListener.php
	src/Symfony/Component/Security/Http/Firewall/ListenerInterface.php
	src/Symfony/Component/Security/Http/Firewall/LogoutListener.php
	src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php
	src/Symfony/Component/Security/Http/Firewall/SwitchUserListener.php
	tests/Symfony/Tests/Component/Security/Http/Firewall/RememberMeListenerTest.php
2011-03-13 19:15:25 +01:00
Victor Berchet
5b39894efc [WebProfilerBundle] Add shortcuts to the panels in the toolbar 2011-03-13 15:50:44 +01:00
Victor Berchet
f752dd34a0 [Profiler] Profilers now return a status which is used for visual feedback 2011-03-13 15:50:44 +01:00
Victor Berchet
481bb4cdf9 [WebProfilerBundle] Introduce a template for toolbar items 2011-03-13 15:50:44 +01:00
Kris Wallsmith
1314d6fda7 fixed listener definition 2011-03-12 13:24:57 +01:00
Johannes Schmitt
97125269d2 [Security] fixed some tests 2011-03-11 12:50:52 +01:00
Johannes Schmitt
c73d1c3406 [SecurityBundle] removed the option to declare access_control rules based on request attributes 2011-03-11 01:47:23 +01:00
Johannes Schmitt
d8022e34eb [Security] removed core.security event 2011-03-11 01:43:22 +01:00
Johannes M. Schmitt
3d97638813 [Security] refactored remember-me code 2011-03-11 01:19:55 +01:00
Johannes M. Schmitt
76e33022cf [Security] renamed Twig function has_role to is_granted 2011-03-10 12:21:35 +01:00
Johannes M. Schmitt
3e5fe74cfb Merge branch 'master' of git://github.com/petajaros/symfony into visibilityChanges 2011-03-10 10:25:48 +01:00
Johannes M. Schmitt
13665fc113 [Security] added some more tests 2011-03-10 10:25:33 +01:00
Johannes Schmitt
1d5538fc60 [Security] various changes, see below
- visibility changes from protected to private
- AccountInterface -> UserInterface
- SecurityContext::vote() -> SecurityContext::isGranted()
2011-03-10 10:25:32 +01:00
Petr Jaroš
82a44ec9d4 [Security] Bugfix - Ensure that passwords is of string type. Function BasePasswordEncoder::comparePasswords haven't been working properly for numeric (plaintype) passwords. 2011-03-09 15:54:06 -08:00
Bernhard Schussek
a54d3e6fb0 Merge remote branch 'symfony/master' into event-manager 2011-03-07 19:15:57 +01:00
Francis Besset
a7e1058898 [WebProfilerBundle] Added security icon for the Web Profiler menu 2011-03-06 23:28:45 +01:00
Francis Besset
f3eca3dab7 [SecurityBundle] Resize security icon for the web debug toolbar 2011-03-06 16:17:54 +01:00
Francis Besset
354996e344 [SecurityBundle] Fixed typo 2011-03-06 15:46:21 +01:00
Francis Besset
4c0f7f26e4 [WebProfiler] Fixed integration of web debug toolbar 2011-03-06 15:30:02 +01:00
Fabien Potencier
8c423edfef replaced symfony-project.org by symfony.com 2011-03-06 12:40:06 +01:00
alexandresalome
659bfc5615 Remove png_fix class 2011-03-06 11:44:58 +01:00
hhamon
ce7fddd4ea [SecurityBundle] updated profiler panel for the latest profiler theme 2011-03-06 11:44:57 +01:00
hhamon
1134fd17ab [SecurityBundle] fixed authentication panel for the new web debug toolbar layout 2011-03-06 11:44:56 +01:00
Bernhard Schussek
f1393d7b1f Replaced EventDispatcher by Doctrine's EventManager implementation
Doctrine's EventManager implementation has several advantages over the
EventDispatcher implementation of Symfony2. Therefore I suggest that we
use their implementation.

Advantages:

 * Event Listeners are objects, not callbacks. These objects have handler
   methods that have the same name as the event. This helps a lot when
   reading the code and makes the code for adding an event listener shorter.
 * You can create Event Subscribers, which are event listeners with an
   additional getSubscribedEvents() method. The benefit here is that the
   code that registers the subscriber doesn't need to know about its
   implementation.
 * All events are defined in static Events classes, so users of IDEs benefit
   of code completion
 * The communication between the dispatching class of an event and all
   listeners is done through a subclass of EventArgs. This subclass can be
   tailored to the type of event. A constructor, setters and getters can be
   implemented that verify the validity of the data set into the object.
   See examples below.
 * Because each event type corresponds to an EventArgs implementation,
   developers of event listeners can look up the available EventArgs methods
   and benefit of code completion.
 * EventArgs::stopPropagation() is more flexible and (IMO) clearer to use
   than notifyUntil(). Also, it is a concept that is also used in other
   event implementations

Before:

    class EventListener
    {
        public function handle(EventInterface $event, $data) { ... }
    }

    $dispatcher->connect('core.request', array($listener, 'handle'));
    $dispatcher->notify('core.request', new Event(...));

After (with listeners):

    final class Events
    {
        const onCoreRequest = 'onCoreRequest';
    }

    class EventListener
    {
        public function onCoreRequest(RequestEventArgs $eventArgs) { ... }
    }

    $evm->addEventListener(Events::onCoreRequest, $listener);
    $evm->dispatchEvent(Events::onCoreRequest, new RequestEventArgs(...));

After (with subscribers):

    class EventSubscriber
    {
        public function onCoreRequest(RequestEventArgs $eventArgs) { ... }

        public function getSubscribedEvents()
        {
            return Events::onCoreRequest;
        }
    }

    $evm->addEventSubscriber($subscriber);
    $evm->dispatchEvent(Events::onCoreRequest, new RequestEventArgs(...));
2011-03-05 15:30:34 +01:00
Johannes Schmitt
f82b89cdc5 [Security] changed defaults for MessageDigestEncoder
- encode_as_base64 set to true
- iterations increased to 5000 from 1
2011-03-05 13:45:35 +01:00
Pascal Borreli
added08c92 [SecurityBundle] Fixed typo 2011-02-26 20:02:05 +01:00
Kris Wallsmith
2b2a7f0a1d added nowrap style to WDT toolbar so image and text stays together when the toolbar wraps 2011-02-24 06:14:08 -08:00
Fabien Potencier
23e9386a0e changed all extensions to use the default Extension::getAlias() impl 2011-02-20 08:58:37 +01:00
Ryan Weaver
c9406b62b2 [SecurityBundle] Allowing the main Configuration tree to allow "factories" without a validation exception.
The main tree doesn't actually process the factories (that's done in an earlier step), so it doesn't actually need their real value. It does, however, need to *not* throw an exception when they're present. An alternative to this approach would be to call ignoreExtraKeys() on the root node of the main tree, but this would allow extra keys to be passed in at the root level, which I thought was a less-desirable solution.
2011-02-18 16:12:12 -06:00
Ryan Weaver
b20ee0fb71 [SecurityBundle] Removing an old configuration key in a test - caught by the Configuration validation. 2011-02-18 13:36:10 -06:00
Ryan Weaver
a334a576cf [SecurityBundle] Adding the ignoreExtraFields option to the factories tree so that there aren't validation errors on all the other unknown fields. 2011-02-18 13:35:19 -06:00
Fabien Potencier
6b12c21261 moved DependencyInjection\Configuration to Config\Definition 2011-02-17 16:03:48 +01:00
Johannes M. Schmitt
1a0742003f [Security] use 'database_connection' as default connection for ACL 2011-02-16 23:00:27 +01:00
Johannes M. Schmitt
22947da18d [Security] added some classes to the compilation map 2011-02-16 23:00:27 +01:00
Johannes M. Schmitt
53f3ff8258 [Security] adds a chain user provider 2011-02-16 23:00:27 +01:00
Johannes Schmitt
82c6844147 [Security] moved Security classes out of DoctrineBundle, cleaned-up SecurityExtension accordingly
Note that this commit removes the built-in support for MongoDB user providers.
This code can be moved back in once there is a stable release for MongoDB, but
for now you have to set-up that user provider just like you would set-up any
custom user provider:

    security:
         providers:
             document_provider:
                 id: my.mongo.provider
2011-02-16 23:00:27 +01:00
Johannes Schmitt
dfd921822a [Security/Http] Adds CSRF protection to the form-login 2011-02-16 23:00:27 +01:00
Fabien Potencier
a29a413c48 made DIC extensions members of the Container instead of static members 2011-02-15 22:22:32 +01:00
Fabien Potencier
62e3053769 refactored previous commit, fixed tests
How to upgrade?

For XML configuration files:

 * All extensions should now use the config tag (this is just a convention as
   the YAML configurations files do not use it anymore):

 * The previous change means that the doctrine and security bundles now are
   wrapped under a main "config" tag:

        <doctrine:config>
            <doctrine:orm />
            <doctrine:dbal />
        </doctrine:config>

        <security:config>
            <security:acl />
            ...
        </security:config>

For YAML configuration files:

 * The main keys have been renamed as follows:

        * assetic:config -> assetic
        * app:config -> framework
        * webprofiler:config -> web_profiler
        * doctrine_odm.mongodb -> doctrine_mongo_db
        * doctrine:orm -> doctrine: { orm: ... }
        * doctrine:dbal -> doctrine: { dbal: ... }
        * security:config -> security
        * security:acl -> security: { acl: ... }
        * twig.config -> twig
        * zend.config -> zend
2011-02-15 22:22:28 +01:00
Lukas Kahwe Smith
7f182bd877 implicitly load all registered bundles, all loading is now handled by load(), disable loading of an extension explcitly via setting the extension config to false (for now only Yaml is implemented) 2011-02-15 22:11:08 +01:00
Fabien Potencier
14aa95ba21 added the concept of a main DIC extension for bundles
This allows for better conventions and better error messages if you
use the wrong configuration alias in a config file.

This is also the first step for a bigger refactoring of how the configuration
works (see next commits).

 * Bundle::registerExtensions() method has been renamed to Bundle::build()

 * The "main" DIC extension must be renamed to the new convention to be
   automatically registered:

      SensioBlogBundle -> DependencyInjection\SensioBlogExtension

 * The main DIC extension alias must follow the convention:

      sensio_blog for SensioBlogBundle

 * If you have more than one extension for a bundle (which should really
   never be the case), they must be registered manually by overriding the
   build() method

 * If you use YAML or PHP for your configuration, renamed the following
   configuration entry points in your configs:

      app -> framework
      webprofiler -> web_profiler
      doctrine_odm -> doctrine_mongo_db
2011-02-15 22:11:07 +01:00
Johannes Schmitt
32b0b64d2d [Security] fixed AbstractFactory test 2011-02-14 21:58:59 +01:00
Johannes Schmitt
b685b3ab4d [Security] adds logout success handler 2011-02-14 20:55:07 +01:00
Johannes Schmitt
bc283f1a66 [Security] removed 'security.authentication_provider' tag 2011-02-14 20:55:06 +01:00
Johannes Schmitt
5c7fe8f866 [Security] simplified encoder factory implementation 2011-02-14 20:55:06 +01:00
Johannes M. Schmitt
0643dc44fd [Security] adds a priority attribute to security voters 2011-02-14 20:55:06 +01:00
Fabien Potencier
5c905beb13 moved common configuration classes to a new Config component 2011-02-13 22:31:50 +01:00
Johannes M. Schmitt
3dfc09cd8d [Security] fixes some regressions 2011-02-13 00:15:57 +01:00
Christophe Coevoet
556305b4ac Fixed the default value of the access denied url
The custom error page is now disabled by default as this would throw an
exception if the /access_denied url does not match a route.
This commit also remove the old parameter for this url which is not used
anymore in the code.

Moved the default value to the Configuration class
2011-02-12 22:11:11 +01:00
Johannes Schmitt
a5cfc2207c [Security/DependencyInjection] updated SecurityBundle's configuration, some bug fixes in DIC config classes 2011-02-12 22:05:54 +01:00
Johannes Schmitt
19bbafc441 [Security] Refactored security context, moved getUser() implementation to templating 2011-02-12 21:53:04 +01:00
Fabien Potencier
b91f082be5 Revert "moved Resource to the Config component"
This reverts commit f53080860a.

Revert "[Router] config fixes"

This reverts commit 51beecc6f2.

Revert "moved duplicated files to a new Config component"

This reverts commit a8ec9b27f0.
2011-02-10 16:14:12 +01:00
Fabien Potencier
f53080860a moved Resource to the Config component 2011-02-10 16:07:42 +01:00
Fabien Potencier
a8ec9b27f0 moved duplicated files to a new Config component 2011-02-10 03:43:36 +01:00
Fabien Potencier
e58a84eb09 added a FileLocator to DIC so that we can load resources like @BundleName/Resources/... 2011-02-10 00:44:02 +01:00
Johannes Schmitt
2316c90ec2 [Security] fixes a regression 2011-02-06 20:11:08 +01:00
Johannes Schmitt
0b8fef2347 [Security/DependencyInjection] adds support for merging security configurations
The merging is done in three steps:

    1. Normalization:
    =================
    All passed config arrays will be transformed into the same structure
    regardless of what format they come from.

    2. Merging:
    ===========
    This is the step when the actual merging is performed. Starting at the root
    the configs will be passed along the tree until a node has no children, or
    the merging of sub-paths of the current node has been specifically disabled.

       Left-Side       Right-Side      Merge Result
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       -nothing-       array           Right-Side will be taken.
       scalar          scalar          Right-Side will be taken.
       array           false           Right-Side will be taken if ->canBeUnset()
                                       was called on the array node.
       false           array           Right-Side will be taken.
       array           array           Each value in the array will be passed to
                                       the specific child node, or the prototype
                                       node (whatever is present).

    3. Finalization:
    ================
    The normalized, and merged config will be passed through the config tree to
    perform final validation on the submitted values, and set default values
    where this has been requested.

You can influence this process in various ways, here is a list with some examples.
All of these methods must be called on the node on which they should be applied.

  * isRequired(): Node must be present in at least one config file.
  * requiresAtLeastOneElement(): PrototypeNode must have at least one element.
  * treatNullLike($value): Replaces null with $value during normalization.
  * treatTrueLike($value): Same as above just for true
  * treatFalseLike($value): Same as above just for false
  * defaultValue($value): Sets a default value for this node (only for scalars)
  * addDefaultsIfNotSet(): Whether to add default values of an array which has not
                           been defined in any configuration file.
  * disallowNewKeysInSubsequentConfigs(): All keys for this array must be defined
                                          in one configuration file, subsequent
                                          configurations may only overwrite these.
  * fixXmlConfig($key, $plural = null): Transforms XML config into same structure
                                        as YAML, and PHP configurations.
  * useAttributeAsKey($name): Defines which XML attribute to use as array key.
  * cannotBeOverwritten(): Declares a certain sub-path as non-overwritable. All
                           configuration for this path must be defined in the same
                           configuration file.
  * cannotBeEmpty(): If value is set, it must be non-empty.
  * canBeUnset(): If array values should be unset if false is specified.

Architecture:
=============
The configuration consists basically out of two different sets of classes.

  1. Builder classes: These classes provide the fluent interface and
                      are used to construct the config tree.

  2. Node classes: These classes contain the actual logic for normalization,
                   merging, and finalizing configurations.

After you have added all the metadata to your builders, the call to
->buildTree() will convert this metadata to actual node classes. Most of the
time, you will not have to interact with the config nodes directly, but will
delegate this to the Processor class which will call the respective methods
on the config node classes.
2011-02-06 20:11:08 +01:00
Fabien Potencier
e5403490e7 removed the need to define getNamespace() and getPath() in bundles 2011-02-05 22:40:30 +01:00
Fabien Potencier
f455700b88 fixed previous commit 2011-02-04 12:18:26 +01:00
Victor Berchet
3ed47114d6 [Bundle] Make getPath() less error prone by allowing both backward and forward slashes 2011-02-04 12:12:19 +01:00
Johannes M. Schmitt
fbc21fedf7 [Security] some bug fixes 2011-02-02 11:31:28 +01:00
Johannes Schmitt
36e30e21cd [Security] some tests 2011-01-29 14:51:13 +01:00
Johannes M. Schmitt
f2a3135bd0 [Security] made a unique name required for each firewall 2011-01-29 10:22:27 +01:00
Lukas Kahwe Smith
2539da5e6a [Security] added AbstractFactory 2011-01-29 10:22:27 +01:00
Johannes M. Schmitt
3ac4994507 [Security] added missing argument to SwitchUserListener 2011-01-29 10:22:27 +01:00
Johannes M. Schmitt
8a879531bd [Security] added key normalization, and removed some conditionals 2011-01-29 10:22:27 +01:00
Johannes M. Schmitt
af696f6a65 [Security] allow custom logout handlers to be configured 2011-01-29 10:22:26 +01:00
Johannes M. Schmitt
e23f39c42f [Security] config refactoring 2011-01-29 10:22:26 +01:00
Christophe Coevoet
96a0a7e7d1 Fixed SecurityDataCollector 2011-01-29 10:12:07 +01:00
Jeremy Mikola
7b287550ff [SecurityBundle] Remove obsolete "path" option from HttpBasicFactory 2011-01-28 18:26:49 +01:00
Fabien Potencier
532bbbde30 [SecurityBundle] fixed typo 2011-01-27 14:50:10 +01:00
Johannes M. Schmitt
cf64d2cfe7 namespace changes
Symfony\Component\Security -> Symfony\Component\Security\Core
Symfony\Component\Security\Acl remains unchanged
Symfony\Component\HttpKernel\Security -> Symfony\Component\Security\Http
2011-01-26 22:23:20 +01:00
Lukas Kahwe Smith
d10f631c3d fixed security engine loading 2011-01-26 21:15:00 +01:00
Fabien Potencier
e645090423 moved security related things to a new SecurityBundle (the Security component is left unchanged) 2011-01-26 19:10:54 +01:00