<?php
namespace App\Security\Api\Authorization\Voter\CoreModule;
use App\Helper\Api\Entity\RequestDataContainer;
use App\Security\Api\Authorization\Voter\AbstractValidationVoter;
use App\Security\Api\Authorization\VoterAttribute\CoreModule\AuthenticationVoterAttribute;
use App\Validator\Api\Data\CoreModule\UserDataValidator;
/**
* Validation voter.
*
* @package API
* @internal
*/
class AuthenticationValidationVoter extends AbstractValidationVoter
{
/**
* Constructor.
*
* @param UserDataValidator $validator
*/
public function __construct(UserDataValidator $validator)
{
$this->validator = $validator;
}
/**
* Returns list of supported attributes.
*
* @return array
*/
protected function getSupportedAttributes(): array
{
return [
AuthenticationVoterAttribute::getAttribute(AuthenticationVoterAttribute::METHOD_ID_LOGIN),
AuthenticationVoterAttribute::getAttribute(AuthenticationVoterAttribute::METHOD_ID_PASSWORD_RESET),
AuthenticationVoterAttribute::getAttribute(AuthenticationVoterAttribute::METHOD_ID_PING)
];
}
/**
* Validation check.
*
* @param RequestDataContainer $subject The request data object to validate.
*/
protected function login(RequestDataContainer $subject): void
{
// no op
}
/**
* Validation check.
*
* @param RequestDataContainer $subject The request data object to validate.
*/
protected function passwordReset(RequestDataContainer $subject): void
{
$this->validator->validateInputPasswordReset($subject->getInput());
}
/**
* Validation check.
*
* @param RequestDataContainer $subject The request data object to validate.
*/
protected function ping(RequestDataContainer $subject): void
{
// no op
}
}