SYMFONY 4 FOSUSER-使Google/Facebook注册的密码无效



我有fosuser工作,现在试图添加Google/Facebook注册,这意味着我仍然会通过常规的Fosuser设置注册用户。

我知道hwioauthbundle,但我不愿添加另一个捆绑包。在我已经做过的所有压倒一切之后,已经对fos捆绑有第二个想法了。

创建来自Google的信息时,我当然会遇到密码字段无法为null的错误。

这是在我的控制器中创建用户的功能:

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);
}

看这个问题,我将密码字段添加到了我的修改后的用户实体中,但是学说:迁移没有抓住它:

/**
* @ORMEntity
* @ORMTable(name="`user`")
*/
class User extends BaseUser
{
 .....
/**
 * @ORMColumn(type="string", name="password", nullable=true)
*/
protected $password;

我可能走了错误的道路,在那种情况下,我感谢任何指导。

我有一个登录名,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);

为此有点晚,但以防万一有人在寻找答案,可以通过Doctrine的属性来完成:

 * @ORMEntity(repositoryClass=UserRepository::class)
 * @ORMTable(name="difc_user")
 * @AttributeOverrides({
 *     @AttributeOverride(name="password",
 *         column=@ORMColumn(
 *             nullable=true
 *         )
 *     ),
 *  }
 * )
 * 
 * @UniqueEntity("email")

最新更新