Всем привет!
Проблема получения информации об авторизованном юзере.
Когда я удаляю блок
main в
security.yaml, то фрагмент теста
$this->client->loginUser($testUser)
отрабатывает адекватно и
AccountController::getUser() возвращает User - а как и должен.
Но если блок
main раскомментить, То целевой роут возвращает
null вместо ожидаемого юзера =(((
Ниже подробнее:
Есть конфиг
security.yaml:
security:
enable_authenticator_manager: true
encoders:
App\Model\User\Entity\User\User:
algorithm: bcrypt
providers:
app_user_provider:
entity:
class: App\Model\User\Entity\User\User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
provider: app_user_provider
custom_authenticators:
- App\Security\LoginFormAuthenticator
access_control:
Есть кастумный аутентификатор:
LoginFormAuthenticator:
namespace App\Security;
class LoginFormAuthenticator extends AbstractAuthenticator {
...
Есть тест для получения информации о пользователе:
class UserinfoTest extends DbWebTestCase
{
private const API_PREFIX = '/api/v1';
protected function setUp(): void
{
$this->client = static::createClient();
$this->client->disableReboot();
$this->em = static::getContainer()->get('doctrine')->getManager();
}
public function test_userinfo_success()
{
$userRepository = $this->em->getRepository(User::class);
$testUser = $userRepository->findOneBy(['email' => 'black.jack@mail.ru']);
$this->client->loginUser($testUser);
$this->client->request('GET', self::API_PREFIX . '/account/userinfo');
...
}
}
И сам
AccountController куда тест ходит:
namespace App\Controller\Api\V1\Account;
#[Route('api/v1/account')]
class AccountController extends BaseController
{
#[Route('/userinfo')]
public function userInfo(): JsonResponse
{
$user = $this->getUser();
return $this->json([
'code' => 200,
'data' => [
'user' => [
'username' => (string)$user->getUsername(),
]
]
], 200, []);
}
protected function getUser(): User
{
return parent::getUser(); // !!!!!!!!! ПРОБЛЕМА ТУТ
}
}
И сам
User:
namespace App\Model\User\Entity\User;
class User implements UserInterface, UserLoaderInterface, UserProviderInterface {
...
Подскажите пожалуйста - как сохранить
аутентификатор и возможность в тесте авторизовывать юзера через
loginUser?