我正在尝试将规则添加到Laravel中的自定义密码reset logic。 我不想让所有用户重置密码并获取对应用程序的访问权限,因为其中一些用户被暂停。
我在Laravel中创建了新的rule,确保了,但我不知道放在哪里。 我想在他们输入电子邮件并点击“发送密码重置链接”后立即验证这些用户 所以他们甚至不会收到重置密码电子邮件。
我把这个逻辑放在哪里?我试着把它放在Http/Controllers/Auth/ResetPasswordController.php
的构造函数中,但没有运气。
谢谢
答案 0 :(得分:1)
您可以执行以下操作:
ForgotPasswordController 类是控制是否发送电子邮件的人。它实现了 SendsPasswordResetEmails 特征,如下所示:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
// Adds SendsPasswordResetEmails to the scope
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
[...]
// It uses the SendsPasswordResetEmails Trait
use SendsPasswordResetEmails;
此特征实现了一些方法: showLinkRequestForm() (显示密码重置视图),以及重要的方法给你: validateEmail() 方法,检查电子邮件是否有效。
您可以在 SendsPasswordResetEmails 中覆盖它,如下所示:
namespace App\Http\Controllers\Auth;
// You will have to add the Request class to the scope
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
[...]
protected function validateEmail(Request $request)
{
$this->validate($request, [
// Pass an instance of your rule to the validation array
'email' => ['required|email', new YourSpecificRuleHere]
]);
}
这应该可以解决问题,如果电子邮件不适用于规则,表单将返回消息“您的帐户已被暂停”。只是不要忘记使用最后一个脚本的begginint中指示的Request类!
希望它有所帮助!