Что мне нужно
Имя пользователя: ABC@gmail.com адрес электронной почты, хранящийся в db, и ввод будет в нижнем регистре.
нет канонического поле, в котором хранится адрес электронной почты в нижнем регистре.
Решение
select * from view where trim(lower(username))=trim(lower(input_username))
Я прочитал Url https://symfony.com/doc/current/security/user_provider.html
security.yml
providers:
entity_provider:
entity:
class: App\Entity\User
свойство: username
Я закомментировал свойство, так как мне нужно вызвать loadUserByUsername в репозитории.
Service.yml
app.repository.user_repositry:
class: Doctrine\ORM\EntityRepository
autowire: false
autoconfigure: true
factory: ["@doctrine.orm.entity_manager", getRepository]
arguments: []
tags: ['doctrine.repository_service']
Код репозитория
class UserRepository extends EntityRepository implements UserLoaderInterface
{
public function loadUserByUsername($username)
{
return $em->createQuery(
'SELECT u
FROM App\CORE\Entity\User u
WHERE LOWER(u.username) = :query'
)
//->where('LOWER(user.username) = :username')
->setParameter('query', strtolower($username))
//->setParameter('query', $usernameOrEmail)
->getQuery()
->getOneOrNullResult();
}
}
Возникла проблема
You must either make the "App\Entity\User" entity Doctrine Repository ("Doctrine\ORM\EntityRepository") implement "Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface" or set the "property" option in the corresponding entity provider configuration."
If i set Entity Abstract class then My app stops working
namespace App\CORE\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;
use Doctrine\ORM\Mapping\MappedSuperclass;
/**
* @ORM\Table(name="users")
* @ORM\Entity
*/
class User implements UserInterface,\Serializable
После исправления ошибки, приводящей к возникновению абстрактного enity, вызывающего проблемы.
//abstract class User extends EntityRepository implements UserLoaderInterface,UserInterface,\Serializable
если я изменяю enity чтобы абстрагироваться от моего приложения, не работающего.
- любое предложение можно реализовать, не делая абстрактного класса сущности.
Ссылка
https://symfony.com/doc/current/security/user_provider.html
Как сделать регистр имени пользователя нечувствительным в форме входа?