Laravel 电子邮件验证 link 问题

Laravel email verification link issue

在我的 laravel 应用程序中 url 是这样的,admin.site 我正在从管理面板向我的应用程序注册用户。

我的客户端 url 是 customer.site

管理员从管理面板 (admin.site) 创建用户后,客户会收到一封帐户验证电子邮件。但现在的问题是我需要这个验证 link 是

customer.site/email/...

但是现在的link是这样的

admin.site/email/...

那么如何将此验证 link 更改为 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 错误消息。

对于可能发送大量电子邮件的应用程序,使用电子邮件通知很有用。 可以通过执行以下命令创建通知:

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;
}