vendredi 1 mai 2020

Send email verification code to another base_url in laravel

I have two laravel systems and both connected to one master database

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

Customers are not allowed to access to the admin portal

But admin can create customers from admin dashboard.

Customers cannot' login to their profile until they verify their email.

Currently if an user creates an account directly through the customer portal, the user receive the verification email and if he/she clicks on the link with in 60 minutes, account get verified and activated.

verification link look like this:

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

But now when the admin creates an user account for a customer through the admin panel(admin.test)same process need to be happened.

Following is my user create function in the controller

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

Here also user create successfully, email also send to the user's email BUT the issue is verification link's base url.... it has to be, customer.test but it inclludes admin.test.....So now when ever a user clicks on that link it'll take customer to a link like,

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

As the customers are not allowed to admin panel user gets a 403 forbidden message..

So how can I change this Base url???

event(new Registered($user));

handles the email sending once when the user is being created..



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire