簡體   English   中英

發送email驗證碼到laravel中的另一個base_url

[英]Send email verification code to another base_url in laravel

我有兩個 laravel 系統並且都連接到一個主數據庫

1.customer portal-customer.test
2.admin portal - admin.test

不允許客戶訪問管理門戶

但管理員可以從管理儀表板創建客戶。

在驗證 email 之前,客戶無法登錄其個人資料。

目前,如果用戶直接通過客戶門戶創建帳戶,用戶會收到驗證 email,如果他/她在 60 分鍾內點擊鏈接,則帳戶會得到驗證並激活。

驗證鏈接如下所示:

http://customer.test/email/verify/13/976bdd188ad675ad87c827ca9723fb4a7bda2178?expires=1588242534&signature=cc628ef025eb7cd03fe76093be1e9e3fdfce12f5208c185560d1996b9f662744 

但是現在當管理員通過管理面板(admin.test)為客戶創建用戶帳戶時,需要進行相同的過程。

以下是我的用戶在 controller 中創建 function

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.  ');
    }

這里也是用戶創建成功,email 也發送到用戶的 email 但問題是驗證鏈接的基礎 url....點擊該鏈接,它會將客戶帶到一個鏈接,例如,

http://admin.test/email/verify/22/3b7c357f630a62cb2bac0e18a47610c245962182?expires=1588247915&signature=7e6869deb1b6b700dcd2a49b2ec66ae32fb0b6dc99aa0405095e9844962bb53c

由於客戶不允許管理面板用戶收到 403 禁止消息..

那么我該如何更改這個 Base url ???

event(new Registered($user));

處理 email 在創建用戶時發送一次。

在您的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.
    }
}

在您的EventServiceProvider中,您需要為Registered創建自定義偵聽器

    protected $listen = [
        Registered::class => [
            CustomSendEmailVerificationNotification::class,
        ],
    ];

您將在哪里處理設置基礎 url 的邏輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM