Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // src/Security/Authorization/Voter/AbstractResourceVoter.php
- namespace App\Security\Authorization\Voter;
- use Symfony\Component\Security\Core\Authorization\Voter\Voter;
- use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
- abstract class AbstractResourceVoter extends Voter
- {
- const CREATE = 'ACTION_POST';
- const READ = 'ACTION_GET';
- const EDIT = 'ACTION_PUT';
- const DELETE = 'ACTION_DELETE';
- protected function supports($attribute, $subject)
- {
- if(!in_array($attribute, [
- self::CREATE,
- self::READ,
- self::EDIT,
- self::DELETE,
- ]))
- {
- return false;
- }
- return true;
- }
- protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
- {
- $user = $token->getUser();
- if(!$user instanceof User)
- {
- return false;
- }
- switch($attribute)
- {
- case self::CREATE:
- return $this->canCreate($subject, $token);
- case self::READ:
- return $this->canView($subject, $token);
- case self::EDIT:
- return $this->canEdit($subject, $token);
- case self::DELETE:
- return $this->canDelete($subject, $token);
- }
- throw new \LogicException('');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement