我需要在我的Laravel设置(它使用标准的Auth模型/控制器)上允许登录的用户在站点上创建另一个用户帐户。在我的“添加用户”页面上,我对来自auth.register的表单进行了包含,它在页面上显示得很好(太棒了!),但当我填写表单并提交它时,它只是重新加载页面,没有任何错误,并且新用户没有添加到数据库中。
我需要与标准auth.register不同的东西是
1)在users表中将有一列将两个用户配对。
2)我希望验证电子邮件不同于他们自己注册的电子邮件。
3)我也在考虑不让创建用户选择密码,而是让新用户通过初始电子邮件重置密码。
有没有什么Laravel的方法来完成这一切,或者我必须自己写?
发布于 2019-12-28 12:43:21
1) users表中将有一列将两个用户配对。
查看您的RegisterController并查看其中包含的use RegisterUsers特征。无论您从这个特征中复制什么并将其移动到RegisterController中,它都会被您的逻辑而不是特征逻辑覆盖。
对于配对,您可以使用create()方法。一种非常伪装的方式:
protected function create(array $data) {
$pair = // find a random user
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'pair_id' => $pair->id
]);
}2)我希望验证电子邮件不同于他们自己注册的电子邮件。
为此,我不确定您已经在哪里触发了它,但是email事件默认存在于EventServiceProvider中:
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
]
];将其更改为您的自定义电子邮件,您应该会很好。
3)我也在考虑不让创建用户选择密码,而是让新用户通过初始电子邮件重置他们的密码。
同样,在create()方法中,你可以只分配一个随机的密码,然后通过你的电子邮件,以某种方式将它们重定向到ResetPassword操作。这需要一些时间来为我弄清楚,但请参阅重置密码路由(与php artisan route:list),所以它接受和在您的自定义电子邮件中,放置必要的链接按钮。
在这种情况下,请确保您在注册后没有立即登录用户。
所以,底线-身份验证默认逻辑存在于它们的特征中,如果你想覆盖一些,只需将该方法复制/粘贴到你的控制器,并根据你的意愿对其进行调整。
https://stackoverflow.com/questions/59507798
复制相似问题