Laravel 9 custom login and registration example; Through this tutorial, we will learn how to make custom authentication login and registration with email or username in the Laravel 9 apps.
Laravel 9 Auth Login and Registration with Username or Email Example
Follow the following steps and create a custom login & registration application with email or username in laravel 9 apps:
- Step 1 – Install New Laravel Application Setup
- Step 2 – Configure Database Details
- Step 3 – Create Routes
- Step 4 – Create Controller & Methods
- Step 5 – Create Blade Views
- Step 6 – Start Development Server
Step 1 – Install New Laravel Application Setup
First of all, we need to install or download the laravel fresh setup. To execute the following command on the terminal to download a fresh new laravel setup:
composer create-project --prefer-dist laravel/laravel Blog
Step 2 – Configure Database Details
Visit to laravel app directory and open .env file. And add database credentials:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=here database name here DB_USERNAME=here database username here DB_PASSWORD=here database password here
Next, migrate the table into the database using the below command :
php artisan migrate
Step 3 – Create Routes
Create custom login registration and dashboard; So visit laravel application directory and open routes/web.php file and add the following routes into it:
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\CustomAuthController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- */ 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 4 – Create Controller and Method
Execute the following command on terminal to controller file; which name CustomAuthController.php:
php artisan make:controller CustomAuthController
Then visit app/controllers/ directory and open CustomAuthController.php and update the below code in controller:
<?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('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('are not allowed to access'); } public function signOut() { Session::flush(); Auth::logout(); return Redirect('login'); } }
Step 5 – Create Blade views
Create auth folder inside resources/views/ folder and create a new login.blade.php file, registration.blade.php and dashboard.blade.php inside resources/views/ Auth directory.
Now we can create login.blade.php file inside resources/views/ Auth and update the below code into file:
@extends('layouts.app') @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
Then create registration.blade.php file inside resources/views/ Auth and update the below code into file
@extends('layouts.app') @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
Then create dashboard.blade.php file inside resources/views/ Auth and update the below code into file
<!DOCTYPE html> <html> <head> <title>Custom Auth in Laravel</title> <link href="https://cdn.jsdelivr.net/npm/[email protected]/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="#">PositronX</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 – Start Development Server
To start the development server. So, execute the PHP artisan serve command on the terminal and start server:
php artisan serve If want to run the project diffrent port so use this below command php artisan serve --port=8080
Now we are ready to run our example by opening thsi url in browser:
http://localhost:8000/login
Conclusion
Laravel 9 custom login and registration tutorial; we have learned step by step, how to create custom login and registration applications or projects in laravel 9.
after completing your step by step guides, apparently i am not able to get into the login page since i dont have the required files which located in layouts.app, does the guide require me to use laravel/ui first before using this?