diff --git a/Security/PasswordRecover/PasswordRecoverVoter.php b/Security/PasswordRecover/PasswordRecoverVoter.php new file mode 100644 index 000000000..59dcdd764 --- /dev/null +++ b/Security/PasswordRecover/PasswordRecoverVoter.php @@ -0,0 +1,54 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +namespace Chill\MainBundle\Security\PasswordRecover; + +use Symfony\Component\Security\Core\Authorization\Voter\Voter; +use Chill\MainBundle\Entity\User; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; + +/** + * + * + * @author Julien Fastré + */ +class PasswordRecoverVoter extends Voter +{ + const CHANGE_PASSWORD = 'CHILL_CHANGE_PASSWORD'; + + protected function supports($attribute, $subject): bool + { + if ($attribute !== self::CHANGE_PASSWORD) { + return false; + } + + if (!$subject['user'] instanceof User) { + throw new \UnexpectedValueException("The subject must contains an " + . "".User::class." under the 'user' key"); + } + + if (empty($subject['token'])) { + throw new \UnexpectedValueException("The subject must contains a " + . "token key"); + } + } + + protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + { + + } +} diff --git a/composer.json b/composer.json index c477163a6..baf5e5e78 100644 --- a/composer.json +++ b/composer.json @@ -39,7 +39,8 @@ "doctrine/migrations": "~1.0", "phpoffice/phpspreadsheet": "~1.2", "sensio/distribution-bundle": "^5.0", - "knplabs/knp-menu-bundle": "^2.2" + "knplabs/knp-menu-bundle": "^2.2", + "symfony/lock": "~3.4" }, "require-dev": { "symfony/dom-crawler": "~3.4",