jeudi 30 avril 2020

Customize email verification link issue in laravel

I have admin portal and customer portal in my laravel based application

customer portal: customer.site
admin portal :admin.site

I have option to register for customers on my customer portal. Once an user register a verification email will be sent to user email with the verification link.

sample verification link can be like this: http://customer.site/email/verify/10/2bf6330a5b3693fb6f5380e83e5494f82b87a9f8?expires=1588234415&signature=34ac37e86d1de7e316e717f2e1acf32cd4ee6ed97df56d94496bb2fa79a0f608

so this works perfectly.

Now my issue is,

When I try to create a customer through the ADMIN portal (admin.site) the user creates successfully and the verification mail also sending successfully to the customer address. But, the activation link is something like this

http://admin.site/email/verify/10/2bf6330a5b3693fb6f5380e83e5494f82b87a9f8?expires=1588234415&signature=34ac37e86d1de7e316e717f2e1acf32cd4ee6ed97df56d94496bb2fa79a0f608 

so when a cutomer clicks on that link a forbidden page displays sayin you have no permission to access as customers are not allowed to use the admin portal

How can I set that verification link to customer portal which is customer.site ???

This is my create customer function in the admin 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));

        return redirect()->route('customers.index')
                        ->with('success','Customer created successfully. Verification email has been sent to user email.  ');
    }

I'm sending my verification mail from this

event(new Registered($user));

And in my ENV I even added a param called APP_DOMAIN ans set it's value to http://customer.site

also in my app.php I set this

'url' => env('APP_DOMAIN', 'http://customer.site'),

but still the activation mail link redirecting to http://admin.site

How can I fix this issue?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire