Laravel 8 Custom Login And Registration Example

10-Apr-2023

.

Admin

Laravel 8 Custom Login And Registration Example

Hi Dev,

In this tutorial, we will explain how to create custom authentication login and registration in the Laravel application.

Having said that, we are going to share with you the traditional method through which you can create custom authentication in laravel. This quick guide, bit by bit, describes the simple method to build custom login, registration and dashboard pages or templates.

Step 1 : Create Laravel App


We assume you have already configured Composer on your system, run the following command to install the new laravel app. However, you can skip this step if the app is already installed.

composer create-project --prefer-dist laravel/laravel laravel_demo_app

Next, head over to app folder:

cd laravel_demo_app

Step 2 : Connect To Database

Now, you have to add database name, username, and password into the .env configuration file to connect the laravel app to the database:

.env

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=database_name

DB_USERNAME=database_user_name

DB_PASSWORD=database_password

The laravel app comes with a default User model and migration file, and we only have to run the following command to create the new table inside the database. So, get to the terminal and execute the following command to run the migration.

php artisan migrate

Step 3 : Create Auth Controller

Next, type the suggested command on the command prompt and execute the command to generate a new controller file by the name of CustomAuthController.

php artisan make:controller CustomAuthController

app\Http\Controllers\CustomAuthController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Hash;

use Session;

use App\Models\User;

use Illuminate\Support\Facades\Auth;

class CustomAuthController extends Controller

{

public function index()

{

return view('auth.login');

}

public function customLogin(Request $request)

{

$request->validate([

'email' => 'required',

'password' => 'required',

]);

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {

return redirect()->intended('dashboard')

->withSuccess('Signed in');

}

return redirect("login")->withSuccess('Login details are not valid');

}

public function registration()

{

return view('auth.registration');

}

public function customRegistration(Request $request)

{

$request->validate([

'name' => 'required',

'email' => 'required|email|unique:users',

'password' => 'required|min:6',

]);

$data = $request->all();

$check = $this->create($data);

return redirect("dashboard")->withSuccess('You have signed-in');

}

public function create(array $data)

{

return User::create([

'name' => $data['name'],

'email' => $data['email'],

'password' => Hash::make($data['password'])

]);

}

public function dashboard()

{

if(Auth::check()){

return view('dashboard');

}

return redirect("login")->withSuccess('You are not allowed to access');

}

public function signOut() {

Session::flush();

Auth::logout();

return Redirect('login');

}

}

Step 4 : Create Auth Routes

This step explains how to create routes with POST and GET methods for handling custom authentication in laravel application.

routes/web.php

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\CustomAuthController;

Route::get('dashboard', [CustomAuthController::class, 'dashboard']);

Route::get('login', [CustomAuthController::class, 'index'])->name('login');

Route::post('custom-login', [CustomAuthController::class, 'customLogin'])->name('login.custom');

Route::get('registration', [CustomAuthController::class, 'registration'])->name('register-user');

Route::post('custom-registration', [CustomAuthController::class, 'customRegistration'])->name('register.custom');

Route::get('signout', [CustomAuthController::class, 'signOut'])->name('signout');

step 5 : Create Auth Blade View Files

You need to create auth folder in resources/views/ folder and likewise create a new login.blade.php file.

resources/views/auth/login.blade.php

@extends('dashboard')

@section('content')

<main class="login-form">

<div class="cotainer">

<div class="row justify-content-center">

<div class="col-md-4">

<div class="card">

<h3 class="card-header text-center">Login</h3>

<div class="card-body">

<form method="POST" action="{{ route('login.custom') }}">

@csrf

<div class="form-group mb-3">

<input type="text" placeholder="Email" id="email" class="form-control" name="email" required

autofocus>

@if ($errors->has('email'))

<span class="text-danger">{{ $errors->first('email') }}</span>

@endif

</div>

<div class="form-group mb-3">

<input type="password" placeholder="Password" id="password" class="form-control" name="password" required>

@if ($errors->has('password'))

<span class="text-danger">{{ $errors->first('password') }}</span>

@endif

</div>

<div class="form-group mb-3">

<div class="checkbox">

<label>

<input type="checkbox" name="remember"> Remember Me

</label>

</div>

</div>

<div class="d-grid mx-auto">

<button type="submit" class="btn btn-dark btn-block">Signin</button>

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</main>

@endsection

You have to move to resources/views/auth folder, similarly create a new registration.blade.php file.

resources/views/auth/registration.blade.php

@extends('dashboard')

@section('content')

<main class="signup-form">

<div class="cotainer">

<div class="row justify-content-center">

<div class="col-md-4">

<div class="card">

<h3 class="card-header text-center">Register User</h3>

<div class="card-body">

<form action="{{ route('register.custom') }}" method="POST">

@csrf

<div class="form-group mb-3">

<input type="text" placeholder="Name" id="name" class="form-control" name="name"

required autofocus>

@if ($errors->has('name'))

<span class="text-danger">{{ $errors->first('name') }}</span>

@endif

</div>

<div class="form-group mb-3">

<input type="text" placeholder="Email" id="email_address" class="form-control"

name="email" required autofocus>

@if ($errors->has('email'))

<span class="text-danger">{{ $errors->first('email') }}</span>

@endif

</div>

<div class="form-group mb-3">

<input type="password" placeholder="Password" id="password" class="form-control"

name="password" required>

@if ($errors->has('password'))

<span class="text-danger">{{ $errors->first('password') }}</span>

@endif

</div>

<div class="form-group mb-3">

<div class="checkbox">

<label><input type="checkbox" name="remember"> Remember Me</label>

</div>

</div>

<div class="d-grid mx-auto">

<button type="submit" class="btn btn-dark btn-block">Sign up</button>

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</main>

@endsection

Head over to resources/views/ folder, then create the new dashboard.blade.php file.

resources/views/dashboard.blade.php

<!DOCTYPE html>

<html>

<head>

<title>Laravel 8 Custom Login And Registration Example - NiceSnippets.com</title>

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet">

</head>

<body>

<nav class="navbar navbar-light navbar-expand-lg mb-5" style="background-color: #e3f2fd;">

<div class="container">

<a class="navbar-brand mr-auto" href="#">NiceSnippets</a>

<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"

aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">

<span class="navbar-toggler-icon"></span>

</button>

<div class="collapse navbar-collapse" id="navbarNav">

<ul class="navbar-nav">

@guest

<li class="nav-item">

<a class="nav-link" href="{{ route('login') }}">Login</a>

</li>

<li class="nav-item">

<a class="nav-link" href="{{ route('register-user') }}">Register</a>

</li>

@else

<li class="nav-item">

<a class="nav-link" href="{{ route('signout') }}">Logout</a>

</li>

@endguest

</ul>

</div>

</div>

</nav>

@yield('content')

</body>

</html>

step 6 : Run Laravel Development Server

Finally, we need to run the laravel development server, which will help us start the app on the browser. Ensure that you execute the given below command through the command prompt.

php artisan serve

Add the following url on the browser’s address bar and test the app recklessly.

http://127.0.0.1:8000/login

Output:

It will help you...

#Laravel 8

#Laravel 7

#Laravel

#Laravel 6