在laravel应用程序的应用程序URL中,admin.site
如下所示,我正在从管理面板中将用户注册到我的应用程序中。
我的客户门户网址为customer.site
。
一旦管理员从管理面板(admin.site)创建用户,客户就会收到帐户验证电子邮件。但是问题是我现在需要这个验证链接
customer.site/email/...
但是当前链接是这样的
admin.site/email/...
那么我该如何将该验证链接更改为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));
由于客户无权访问管理站点,因此出现403错误消息。
答案 0 :(得分:1)
对于可能发送大量电子邮件的应用程序,使用电子邮件通知是很有用的。 可以通过执行以下命令来创建通知:
php artisan make:notification SendRegisterEmailNotifcation
此命令将创建一个 SendRegisterEmailNotifcation 文件,该文件可通过导航到 app / Notifications / SendRegisterEmailNotifcation.php 路径找到。 完成此操作并自定义消息,操作和其他可能的操作后,存储功能将如下所示。 我已经删除了验证并将其放入请求中。如果您对它的工作方式很感兴趣,可以在下面找到一个示例。
有关通知的更多信息,请参见:https://www.cloudways.com/blog/laravel-notification-system-on-slack-and-email/
// CustomerController
public function store(StoreCustomerRequest $request)
{
// Get input from the request and hash the password
$input = $request->all();
$input['password'] = Hash::make($input['password']);
// Create user and assign role
$user = User::create($input);
$user->assignRole($request->input('roles'));
// Send Register Email
$user->notify(new SendRegisterEmailNotifcation);
return redirect()->route('customers.index')
->with('success','Customer created successfully. Verification email has been sent to user email. ');
}
我建议创建用于验证数据的请求。这样,控制器将保持清洁,您实际上可以在laravel想要的地方验证数据。 // StoreCustomerRequest
class StoreCustomerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check();
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
// @todo Add validation rules
return [
'name' => 'required|string|max:255',
'last_name' => 'required|alpha|min:2|max:255'
'email' => 'required|string|email|max:255|unique:users',
];
}
}
将通知对象添加到您的客户模型。必须这样做才能发送通知。
// Customer model
class Customer {
use Notifiable;
}