Home > Mobile >  Laravel login features
Laravel login features

Time:11-22

I'm working on Laravel task and struggling to add a login feature. Register and validation features seem work well, but can't login even if i put correct user_name and pass_word. also old helper function is not working as well. i am a very beginner of Laravel and I know my code is messy and not coherent. But need to get this task done. appreciate if you help me solve this!

So here are files of my task. when i tried to login it always goes to this page.

<?php

use App\Http\Controllers\RegisterController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('users/list', 'App\Http\Controllers\UserController@getUser');

Route::get('register', [RegisterController::class, 'create'])->middleware('guest');
Route::post('register', [UserController::class, 'register'])->middleware('guest');

Route::get('login', [UserController::class, 'loginView']);
Route::post('login', [UserController::class, 'login']);

<?php

namespace App\Http\Controllers;

use App\Http\Requests\UserLoginRequest;
use App\Http\Requests\UserRegisterRequest;
use App\Models\User;
use App\Services\UserService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{

    private $userService;

    public function __construct(
        UserService $userService
    ) {
        $this->userService = $userService;
    }

    public function getUser() {

        $users = User::all();
        return view('users/list')
            ->with('users', $users);
    }

    public function register(UserRegisterRequest $request)
    {
        $this->userService->registerUser($request->user_name, $request->pass_word);

        return redirect('users/list');
    }

    public function loginView()
    {
        return view('users/loginView');
    }

    public function login(Request $request)
    {
        $validatedData = $request->validate([
            'user_name' => ['required'],
            'pass_word' => ['required'],
        ]);

        if (Auth::attempt($validatedData)) {
            $request->session()->regenerate();

            return redirect('users/list'); 
        }

        return back()->withErrors([
            'user_name' => 'wrong username'
        ]);
    }
}

<main>
    <h1>Login!</h1>
    <form action="login" method="POST">
        @csrf
        <div>
            <label for="user_name">
                User_name
                <input type="text" name="user_name" id="user_name" value="{{ old('user_name') }}" >
            </label>
            @error('user_name')
            <div >{{ $message }}</div>
            @enderror
        </div>

        <div>
            <label for="pass_word">
                Password
                <input type="password" name="pass_word" id="pass_word" value="{{ old('pass_word') }}">
            </label>
            @error('pass_word')
            <div >{{ $message }}</div>
            @enderror
        </div>

        <div>
            <button type="submit">
                Submit
            </button>
        </div>

    </form>
</main>

<?php

namespace App\Services;

use Illuminate\Database\Eloquent\Collection;
use App\Models\User;
use Illuminate\Support\Facades\Hash;

class UserService
{
    /**
     * 
     *
     * @param string $name
     * @param string $email
     * @param string $pass_word
     * @return void
     */
    public function registerUser($user_name, $pass_word) : void
    {
        $user = new User();
        $user->user_name = $user_name;
        $user->pass_word = Hash::make($pass_word);
        $user->save();
        
    }
}

enter image description here

CodePudding user response:

First, if you want to redirect using back() helper to another controller method, you should put ->withInput or ->onlyInput('user_name').

back()->withErrors([
    'user_name' => 'wrong username'
])->onlyInput('user_name');

or

back()
->withErrors([
    'user_name' => 'wrong username'
])->withInput();

You may dump the errors on the view because probably it comes from the password error may be?

  • Related