У меня есть вопрос о FOSUserBundle для Symfony 2.0.x. В документации вы можете найти способ изменить логин для работы с именем пользователя и электронной почтой. Это отлично работает! Но я хочу войти, чтобы работать только с электронной почтой. Таким образом, я добавил функцию в свой CustomUserManager (простирается от оригинала), который гарантирует, что вы просто сможете войти в систему с вашей электронной почтой.
namespace Frontend\UserBundle\Model;
use FOS\UserBundle\Entity\UserManager;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
class CustomUserManager extends UserManager
{
public function loadUserByUsername($email)
{
/*$user = $this->findUserByUsernameOrEmail($username);
if (!$user) {
throw new UsernameNotFoundException(sprintf('No user with name "%s" was found.', $username));
}
return $user;*/
//Change it to only email (Default calls loadUserByUsername -> we send it to our own loadUserByEmail)
return $this->loadUserByEmail($email);
}
public function loadUserByEmail($email)
{
$user = $this->findUserByEmail($email);
if (!$user) {
throw new UsernameNotFoundException(sprintf('No user with email "%s" was found.', $email));
}
return $user;
}
}
Но теперь у меня есть проблема с тем, что мне нужно контролировать значения, которые сохраняются в сеансе. Он сохраняет мое имя пользователя в сеансе, и когда система проверяет это, не будет электронной почты (потому что он проверяет только электронную почту).
Итак, мой вопрос в том, как/где вы можете изменить значение, которое хранится внутри переменной имени пользователя.
Спасибо!