Slowhand's avatar

Redirect after Login/Sign In E-commerce Checkout

Dear all,

I have a small app in wich a user can buy one or more courses.

For obvious reasons, I ask every user to log in or register before accessing the checkout page.

Route::group(['middleware' => ['auth']], function () { Route::get('/checkout', 'CheckoutController@index')->name('checkout.index'); Route::post('/checkout/charge', 'CheckoutController@charge')->name('checkout.charge'); Route::get('/checkout/merci', 'CheckoutController@thankYou')->name('checkout.thankyou'); });

The only problem is that when a user logs in, he's redirected to his dashboard as I specified in my LoginController (4 different roles) :

protected function redirectTo() { if (Auth::user()->roles->pluck('name')->contains('Admin')) { return '/admin/panel'; } elseif (Auth::user()->roles->pluck('name')->contains('Professeur')) { return '/teacher/panel'; } elseif (Auth::user()->roles->pluck('name')->contains('Responsable')) { return '/parent/panel'; } elseif (Auth::user()->roles->pluck('name')->contains('Étudiant')) { return '/student/panel'; } }

RegisterController :

protected function create(array $data) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]);

    $role = Role::select('id')->where('name', 'Responsable')->first();

    $user->roles()->attach($role);

    return $user;

}

What I would like is the user to be redirected to the checkout page right after logging in or registering and I really don't know how to do that...

Here's my CheckoutController :

public function charge(Request $request) { \Stripe\Stripe::setApiKey(env('STRIPE_PRIVATE_KEY'));

    try {
        $charge = \Stripe\Charge::create([
            'amount' => Cart::total() * 100,
            'currency' => 'EUR',
            'description' => 'Paiement Via la plateforme Cours Thalès',
            'source' => $request->input('stripeToken'),
            // 'receipt_email' => Auth::user()->email

        ]);

        foreach (Cart::content() as $item) {
            Payment::create([
                'formation_id' => $item->model->id,
                'amount' => $item->model->price,
                'email' => Auth::user()->email
            ]);
        }

        session()->flush();

        return redirect()->route('checkout.thankyou')->with('success', 'Paiement accepté');

    } catch (\Stripe\Exception\CardErrorException $error) {
        throw $error;
    }
}

Thank you all !

0 likes
0 replies

Please or to participate in this conversation.