自定义laravel中的电子邮件验证链接问题

时间:2020-04-30 07:29:23

标签: php laravel laravel-5 laravel-6 verification

我在基于laravel的应用程序中有管理门户和客户门户

customer portal: customer.site
admin portal :admin.site

我可以选择在客户门户上注册客户。用户注册后,将通过验证链接将验证电子邮件发送到用户电子邮件。

示例验证链接可以像这样:http://customer.site/email/verify/10/2bf6330a5b3693fb6f5380e83e5494f82b87a9f8?expires=1588234415&signature=34ac37e86d1de7e316e717f2e1acf32cd4ee6ed97df56d94496bb2fa79a0f608

所以这很好用。

现在我的问题是,

当我尝试通过ADMIN门户(admin.site)创建客户时,用户创建成功,并且验证邮件也成功发送到客户地址。但是,激活链接是这样的

http://admin.site/email/verify/10/2bf6330a5b3693fb6f5380e83e5494f82b87a9f8?expires=1588234415&signature=34ac37e86d1de7e316e717f2e1acf32cd4ee6ed97df56d94496bb2fa79a0f608 

因此,当用户点击该链接时,禁止页面显示说您无权访问,因为不允许客户使用管理门户

如何将验证链接设置为customer.site的客户门户?

这是我在管理控制器中的创建客户功能,

public function store(Request $request)
    {
        request()->validate([
            'name' => ['required', 'alpha','min:2', 'max:255'],
            'last_name' => ['required', 'alpha','min:2', 'max:255'],
            'email' => ['required','email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:12', 'confirmed','regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{12,}$/'],
            'mobile'=>['required', 'regex:/^\+[0-9]?()[0-9](\s|\S)(\d[0-9]{8})$/','numeric','min:9'],
            'username'=>['required', 'string', 'min:4', 'max:10', 'unique:users'],   
            'roles'=>['required'],
            'user_roles'=>['required'],
        ]);

        //Customer::create($request->all());

        $input = $request->all();
        $input['password'] = Hash::make($input['password']);

        $user = User::create($input);
        $user->assignRole($request->input('roles'));

        event(new Registered($user));

        return redirect()->route('customers.index')
                        ->with('success','Customer created successfully. Verification email has been sent to user email.  ');
    }

我正在从中发送验证邮件

event(new Registered($user));

在我的ENV中,我甚至添加了一个名为APP_DOMAIN的参数,并将其值设置为http://customer.site

也在我的app.php中设置了

'url' => env('APP_DOMAIN', 'http://customer.site'),

但激活邮件链接仍重定向到http://admin.site

如何解决此问题?

0 个答案:

没有答案