php - 发送邮件验证码到 laravel 中的另一个 base_url
问题描述
我有两个 laravel 系统并且都连接到一个主数据库
1.customer portal-customer.test
2.admin portal - admin.test
不允许客户访问管理门户
但管理员可以从管理仪表板创建客户。
客户在验证电子邮件之前无法登录他们的个人资料。
目前,如果用户直接通过客户门户创建帐户,用户会收到验证电子邮件,如果他/她在 60 分钟内单击链接,则帐户将被验证并激活。
验证链接如下所示:
http://customer.test/email/verify/13/976bdd188ad675ad87c827ca9723fb4a7bda2178?expires=1588242534&signature=cc628ef025eb7cd03fe76093be1e9e3fdfce12f5208c185560d1996b9f662744
但是现在当管理员通过管理面板(admin.test)为客户创建用户帐户时,需要进行相同的过程。
以下是我在控制器中的用户创建功能
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));
//$user->notify(new SendRegisterMailNotification());
return redirect()->route('customers.index')
->with('success','Customer created successfully. Verification email has been sent to user email. ');
}
这里也成功创建用户,电子邮件也发送到用户的电子邮件但问题是验证链接的基本网址......它必须是 customer.test 但它包括 admin.test ......所以现在当用户点击该链接,它会将客户带到一个链接,例如,
http://admin.test/email/verify/22/3b7c357f630a62cb2bac0e18a47610c245962182?expires=1588247915&signature=7e6869deb1b6b700dcd2a49b2ec66ae32fb0b6dc99aa0405095e9844962bb53c
由于客户不允许管理面板用户收到 403 禁止消息..
那么我怎样才能改变这个Base url???
event(new Registered($user));
在创建用户时处理一次电子邮件发送..
解决方案
您SendRegisterMailNotification
需要正确添加所需的基本 URL。它可以是您想要的任何东西,或者您可以将其添加到您的应用程序配置和环境中app.customer_base_url
,然后在您的通知中引用它。
<?php
namespace App\Notifications;
use Illuminate\Notifications\Notification;
class SendRegisterMailNotification extends Notification
{
...
public function toMail($notifiable) {
return (new MailMessage)
->line('Click here to verify')
->action('Verify', 'http://customer.test/' . $this->url);
//$this->url gotten however you usually get the verification url.
}
}
推荐阅读
- javascript - 如何拥有多个 websocket RTSP 流?
- go - 如何使用代码生成器为自定义资源定义生成代码
- data-structures - 我们可以在二叉搜索树中用它的直接子节点替换被删除的节点(而不是用它的中序前驱或后继替换)吗?
- android-studio - 如何让我的 TextView 可点击以显示警报对话框?
- python-3.x - return 没有完成python中的程序
- powerbi - 如何使用筛选器从另一个表的三列在 Power BI 中创建新表?
- python - 打印输出末尾的随机空间
- kubernetes - 未找到 Terraform Kubernetes 提供程序
- docker - 尽管 --detach、--interactive、--tty 和提供命令,Docker 运行仍会立即退出
- python - 如何根据python pandas中的条件保留某些行