-
-
Notifications
You must be signed in to change notification settings - Fork 5.2k
[Security] add & update doc entries on AbstractVoter implementation #4257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
28c6536
da32a5e
b1cd35b
b1a90ba
36eabca
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,12 +37,19 @@ For more information take a look at | |
The Voter Interface | ||
------------------- | ||
|
||
A custom voter must implement | ||
A custom voter needs to implement | ||
:class:`Symfony\\Component\\Security\\Core\\Authorization\\Voter\\VoterInterface` | ||
and an :class:`Symfony\\Component\\Security\\Core\\Authorization\\Voter\\AbstractVoter` | ||
class is provided with following structure: | ||
or extend :class:`Symfony\\Component\\Security\\Core\\Authorization\\Voter\\AbstractVoter`, | ||
which makes creating a voter even easier. | ||
|
||
.. include:: /cookbook/security/abstract_voter.rst.inc | ||
.. code-block:: php | ||
|
||
abstract class AbstractVoter implements VoterInterface | ||
{ | ||
abstract protected function getSupportedClasses(); | ||
abstract protected function getSupportedAttributes(); | ||
abstract protected function isGranted($attribute, $object, $user = null); | ||
} | ||
|
||
In this example, the voter will check if the user has access to a specific | ||
object according to your custom conditions (e.g. they must be the owner of | ||
|
@@ -106,6 +113,22 @@ edit a particular object. Here's an example implementation: | |
That's it! The voter is done. The next step is to inject the voter into | ||
the security layer. | ||
|
||
To recap, here's what's expected from the three abstract methods: | ||
|
||
The :method:`Symfony\\Component\\Security\\Core\\Authorization\\Voter\\AbstractVoter::getSupportedClasses` | ||
method tells Symfony that your voter should be called whenever an object of one of the given classes | ||
is passed to `isGranted` For example, if you return ['\Acme\DemoBundle\Model\Product'], | ||
Symfony will call your voter when a `Product` object is passed to `isGranted`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. double-ticks!: `` There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should add one more note:
|
||
|
||
The :method:`Symfony\\Component\\Security\\Core\\Authorization\\Voter\\AbstractVoter::getSupportedAttributes` | ||
method tells Symfony that your voter should be called whenever one of these strings is passes as the | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. strings is passed |
||
first argument to `isGranted`. For example, if you return `array('CREATE', 'READ')`, then | ||
Symfony will call your voter when one of these is passed to `isGranted`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. a few more double-ticks in this paragraph are needed |
||
|
||
The :method:`Symfony\\Component\\Security\\Core\\Authorization\\Voter\\AbstractVoter::isGranted` | ||
method must implement the business logic that verifies whether or not a given | ||
user is allowed access to a given attribute on a given object. This method must return a boolean. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ... access to a given attribute (e.g. `CREATE` or `READ`) on a give object. |
||
|
||
Declaring the Voter as a Service | ||
-------------------------------- | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
double-ticks around
isGranted
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change the
['Acme\DemoBundle...
to beAppBundle\Model\Product
and use a fullarray(
there instead of[
.