I want to make a Login Registration system in laravel 8. In which User when login only can access a particular page else redirect to login page. I did this like that. what’s wrong in it.
//Login Code
function login(Request $req){ $results = DB::table('crud_users') ->where('email', '=', $req -> post('email')) ->where('password', '=', $req -> post('password')) ->get(); foreach ($results as $value) { $value ->email; $value ->password; $name = $value ->name; $user_type = $value ->user_type; echo $id = $value ->id; session()->put('id', $id); session()->put('name', $name); } $req -> validate([ 'email' => 'required', 'password' => 'required', ]); $email = $req -> input('email'); $password = $req -> input('password'); if ($user_type == 'admin') { if (($email == $value ->email) && ($password == $value->password)) { return redirect('admin'); } } else if($user_type == 'user') { if (($email == $value ->email) && ($password == $value->password)) { return redirect('user'); } else{ return redirect('login'); } // session()->flash('success','You are registered! Please login!'); // return redirect('login'); } }
//Session Code
if (session()->has('id')) { Route::get('logout','AppHttpControllersUser@logout'); Route::view('user','user'); Route::view('admin','admin'); Route::view('edit/{id}','edit/{id}'); }else{ Route::get('/', function () { return view('welcome'); });
Advertisement
Answer
you can use the default authentication in laravel8 using laravel application Jetstream starter kit and use the auth()
middleware to go to a particular page.
you can see this [blog]1
or see the laravel’s documentation from [here]2
for your code you’re i think you’re call session
by this way session()
it’s wrong you should call the session class or use this way like this $request->session()->has('id')
or
Session::has('id')