我有FOSUser工作,现在尝试添加谷歌/脸书注册,这意味着我仍然会使用常规的FOSUser设置注册用户。
我知道HWIOAuthBundle,但我不愿意再添加一个包。在我做了这么多重写之后,我已经对FOS包本身有了新的想法。
当使用来自Google的信息创建用户时,我当然会得到密码字段不能为空的错误。
这是在我的控制器中创建用户的函数:
private function registerUser($payload) {
$user = $this->userManager->createUser();
$user->setEmail($payload['email']);
$user->setUsername($payload['given_name'] . '-' . mt_rand()); // temporary username
$this->userManager->updateUser($user);
}查看this SO question,我将密码字段添加到修改后的用户实体中,但是Doctrine:migration没有捕获到它:
/**
* @ORM\Entity
* @ORM\Table(name="`user`")
*/
class User extends BaseUser
{
.....
/**
* @ORM\Column(type="string", name="password", nullable=true)
*/
protected $password;我可能走错了路,在这种情况下,我很感激任何指导。
发布于 2019-03-14 02:38:31
我有一个linkedin/Oauth的登录。我只是随机设置了一个密码。他们不能使用它登录,因为我甚至不知道它,但他们可以在确认电子邮件后重新设置它。
$user = new User();
$user->addRole($xyz->getRoleType());
$user->setUsername($xyz->getUsername());
$user->setEmail($xyz->getEmail());
// encode a random password, manually
$plainPassword = base64_encode(random_bytes(16));
$encodedPassword = $this->get('security.password_encoder')
->encodePassword($user, $plainPassword);
$user->setPassword($encodedPassword);
$user->setEnabled(true); // we have to enable the user to let them login again
$em->persist($user);发布于 2020-09-07 08:11:18
这个问题有点晚了,但以防有人在寻找答案,可以通过done的AttributeOverrides来完成:
* @ORM\Entity(repositoryClass=UserRepository::class)
* @ORM\Table(name="difc_user")
* @AttributeOverrides({
* @AttributeOverride(name="password",
* column=@ORM\Column(
* nullable=true
* )
* ),
* }
* )
*
* @UniqueEntity("email")https://stackoverflow.com/questions/55148884
复制相似问题