Laravel 11 custom login and registration example; Through this tutorial, i am going to show you how to implement custom login, logout and registration auth in Laravel 11 apps.
Laravel 11 Custom Login and Registration Example
Use the below given steps to implement custom login, logout and registration application in Laravel 11 apps:
- Step 1 – Install Laravel App
- 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 Laravel App
Run the following command on command prompt to install or download the laravel fresh setup:
composer create-project --prefer-dist laravel/laravel Blog
Step 2 – Configure Database Details
Go 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 your 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
Go to 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
Run the following command on command prompt to controller file; which name CustomAuthController.php:
php artisan make:controller CustomAuthController
Go to app/HTTP/controllers/ directory and open CustomAuthController.php and update the below code in your 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('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 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.
To create login.blade.php file inside resources/views/ Auth and update the below code into your file:
@extends('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 your file
@extends('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 your 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
Run PHP artisan serve command on the command prompt to and start your server:
php artisan serve
If you want to run the project diffrent port so use this below command
php artisan serve --port=8080
Now you are ready to run our example by opening thsi url in browser:
http://localhost:8000/login
Conclusion
Laravel 11 custom login and registration tutorial; you have learned step by step, how to create custom login and registration applications or projects in Laravel 11.