tarang19's avatar

Restricting page access before submitting other page in laravel

I have an application that requires 3 step to register. Those steps where separated as pages.

Now my question is, how can I prevent access to /step/2 if the user doesn't submit the form from /step/1 properly and same with /step/3 if the user doesn't submit /step/2 properly?

I'm still new to laravel.

0 likes
3 replies
Sergiu17's avatar
Sergiu17
Best Answer
Level 60

One flag in your database, status or level - by default will be 0

when user completes first step - you update status to 1

when user completes second step - you update status to 2

when user completes third step - you update status to 3

this would be the easiest option I guess

tarang19's avatar

Can you tell me how to write this in controller ?

Sergiu17's avatar
Route::post('/step/1', 'RegisterController@first');
Route::post('/step/2', 'RegisterController@second');
Route::post('/step/3', 'RegisterController@third');

class RegisterStepsController
{
	public function first() {
		// store details from first step

		$user->level = 1;
		$user->save();
	}

	public function second(Request $request) {
		// less than one or you could do $request->user->level === 0
		// depends on what behaviour you want
		if($request->user->level < 1) {
			return 'Complete first step';
		}

		// store details from second step

		$user->level = 2;
		$user->save();
	}

	public function third(Request $request) {
		// $request->user->level === 1
		if($request->user->level < 2) {
			return 'Complete second step'
		}

		// store details from third step

		$user->level = 3;
		$user->save();
	}
}

@tarang19 something like this should get the job done

1 like

Please or to participate in this conversation.