Commit Graph

154 Commits

Author SHA1 Message Date
Fabien Potencier
637aaacccb merged branch uwej711/security_target_path_master (PR #4409)
Commits
-------

8ffaafa Make the session entry for the target url firewall dependent.

Discussion
----------

[Security] Make the session entry for the target url firewall dependent.

Bug fix: yes
Feature addition: no
Backwards compatibility break: yes
Symfony2 tests pass: yes
Fixes the following tickets:
License of the code: MIT

If there are two firewalls (eg. main and admin), calling an protected admin url
will direct you to the login form of the admin. If I ignore this and go to the login
form of the main firewall directly I will end up being redirected to the stored
admin target url, which will lead me to the admin login form again.

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

by travisbot at 2012-05-25T09:33:44Z

This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1431566) (merged 8ffaafa8 into 45849ce3).

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

by uwej711 at 2012-06-09T08:05:54Z

Doesn't this make sense or did this slip through? Or is there something missing?
2012-07-02 19:27:21 +02:00
Fabien Potencier
16a0af1262 [Security] changed the HttpUtils constructor to tak both a UrlGenerator and a UrlMatcher instead of a Router (to make it useable by Silex) 2012-06-26 11:18:35 +02:00
Fabien Potencier
0995b1f28b moved the UserPassword validator from the security bundle to the security component to make it reusable outside the full-stack framework 2012-06-10 21:58:31 +02:00
Fabien Potencier
7bec0786be moved the Security Twig extension to the bridge 2012-06-10 19:01:52 +02:00
Uwe Jäger
8ffaafa867 Make the session entry for the target url firewall dependent.
If there are two firewalls (eg. main and admin), calling an protected admin url
will direct you to the login form of the admin. If I ignore this and go to the login
form of the main firewall directly I will end up being redirected to the stored
admin target url. This is not what you usually want to happen.
2012-05-25 10:47:31 +02:00
Fabien Potencier
4c7261e3b1 merged 2.0 2012-05-11 18:14:47 +02:00
Uwe Jäger
7fe236a44d [Security] Configure ports in RetryAuthenticationEntryPoint according to router settings
Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes

Currently the ports in RetryAuthenticationEntryPoint are fixed in the constructor call, there is no way to set them when you run your application on different ports.

With this fix the ports are taken from the router configuration.
2012-04-30 16:39:18 +02:00
Ryan Weaver
a9d8197d21 Removing the security_factories.xml file - not needed after sha: 413756c103 2012-04-21 17:16:58 -05:00
Juti Noppornpitak
306533b5d0 Updated the responsive design in addition to the scenario with authenticated users and exception notification. 2012-04-13 16:19:42 -04:00
Juti Noppornpitak
4a3312bda3 Updated the toolbar with the responsive design (normal-to-large scenario). 2012-04-13 15:25:11 -04:00
Juti Noppornpitak
d5e0cccacc Made the toolbar to show the version, memory usage, the state of security (both a abbreviation and an associate description) and number of DB requests and request time. 2012-04-10 22:12:49 -04:00
Joseph Bielawski
6ad201f5ba [FrameworkBundle + WebProfilerBundle] Optimized images and icons with PunnyPNG 2012-03-14 23:31:48 +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
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
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
Julien DIDIER
60ebaaad70 [SecurityBundle] fix service class by adding a parameter, on twig extension 2011-12-10 19:04:22 +01:00
Johannes Schmitt
cf09c2db55 added authentication success/failure events 2011-11-22 14:44:41 +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
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
Francesco Levorato
104b697767 [Security] added configurable option security.erase_credentials_from_token 2011-11-17 09:57:17 +01:00
Francesco Levorato
ede55d2abe [Security] added configuration parameter for AuthorizationManagerProvider 2011-11-16 11:51:44 +01:00
Christophe Coevoet
633f0e9d77 [DoctrineBundle] Moved the entity provider service to DoctrineBundle 2011-10-23 15:13:40 +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
Vincent
0224a34bb1 Fixes typo on ACL Doctrine cache. 2011-09-01 11:35:36 +03:00
marc.weistroff
b33e1bae29 [SecurityBundle] Reported namespace change of EntityUserProvider 2011-07-13 08:46:21 +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
62e4342a86 fixed CS 2011-06-08 12:12:55 +02:00
Johannes M. Schmitt
d03c6c72eb [SecurityBundle] exposed setting in the configuration 2011-06-03 14:06:55 +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
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
9181e5dd0c merged origin/master 2011-05-30 14:28:54 +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
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
IamPersistent
314f361846 separate dbal specific acl config 2011-04-26 21:57:17 -07:00
Pascal Borreli
b5769c52d6 Fixed various typo 2011-04-22 23:12:50 +00:00
Johannes Schmitt
5a4ffcd8b6 [Security] re-added some parameters 2011-04-08 07:24:42 +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
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
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
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
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
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
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
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
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 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
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
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
Johannes M. Schmitt
1a0742003f [Security] use 'database_connection' as default connection for ACL 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
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 M. Schmitt
0643dc44fd [Security] adds a priority attribute to security voters 2011-02-14 20:55:06 +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
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
Johannes M. Schmitt
3ac4994507 [Security] added missing argument to SwitchUserListener 2011-01-29 10:22:27 +01:00
Johannes M. Schmitt
e23f39c42f [Security] config refactoring 2011-01-29 10:22:26 +01:00