Tutorial LARAVEL 9 | 5. Login dan Logout

Laravel-Login


Login dan Logout Laravel 9 - Selamat datang di website CopyPasteKode, pada tutorial kali ini kita akan belajar bagaimana cara membuat fitur login pada Laravel 9.

Pada Laravel sendiri sebenarnya sudah mempunyai plugins tersendiri diantaranya yaitu Laravel Breeze dan Laravel Jetstream untuk menangani proses login, register, forgot password dan lain-lain yang menyangkut autentikasi (Authentication) dan autorisasi (Authorization) yang bisa teman-teman pelajari pada dokumentasi Laravel : https://laravel.com/docs/9.x/starter-kits

Untuk tutorial kali ini kita akan belajar cara membuat Login dan Logout pada Laravel secara manual

Perlu teman-teman ketahui bahwa tutorial ini merupakan tutorial bersambung, maka dari itu saya sarankan teman-teman semua untuk mengikuti tutorial Laravel ini dari awal.

Berikut adalah seri tutorial Laravel sebelumnya :

Disini saya mengasumsikan jika teman-teman sudah mengikuti tutorial Laravel ini dari awal, sehingga teman-teman tidak mengalami kesulitan nantinya dalam mengikuti tutorial ini.

Sebelum kita mulai tutorialnya ada baiknya jika kita mengetahui terlebih dahulu prosedur atau langkah-langkah yang akan kita lakukan, langkah-langkah sebagai berikut :

  • Menambahkan tabel users
  • Dummy Data / Fake Data
  • Membuat Controllers Login
  • Membuat Views Login
  • Menambahkan Routes Login & Logout
  • Konfigurasi RouteServiceProvider
  • Testing Login & Logout

Setelah mengetahui prosedur atau langkah-langkah yang harus dikerjakan, langsung saja kita mulai dengan langkah yang pertama.

Memambahkan tabel users

Buka kembali project Laravel teman-teman pada terminal, disini saya akan buka dengan visual studio code dan menggunakan terminal lewat visual studio code.

Ketikan perintah berikut pada terminal :

php artisan migrate:refresh --path=database/migrations/2014_10_12_000000_create_users_table.php


Tunggu sampai proses migrate selesai.


Dummy Data / Fake Data

Pada saat proses login tentunya kita membutuhkan data user berupa username / email dan password yang sudah terinput ke database, agar bisa melewati proses login tersebut, dengan menggunakan Factory Pada Laravel kita tidak perlu melakukan input data user secara manual pada database.

Ketikan perintah berikut pada terminal :

php artisan tinker


Setelah tampil seperti gambar diatas, ketikan lagi perintah berikut :

User::factory()->count(1)->create()

Tunggu sampai prosesnya selesai.

Membuat Controllers Login

Ketikan perintah dibawah pada terminal  :

 php artisan make:controller LoginController


Tunggu sampai proses pembuatan Controllers dengan nama LoginController selesai dibuat, kemudian tambahkan script berikut pada LoginController :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    public function index()
    {
        $data = array(
            'title' => 'Form Login',
        );
        return view('auth/login', $data);
    }

    public function authenticate(Request $request)
    {
        $rules = [
            'email' => ['required', 'email'],
            'password' => ['required'],
        ];

        $customMessages = [
            'email.required' => ':attribute tidak boleh kosong!',
            'password.required' => ':attribute tidak boleh kosong!',
        ];

        $credentials =  $this->validate($request, $rules, $customMessages);
        if (Auth::attempt($credentials)) {
            $request->session()->regenerate();

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

        return back()->with('error', 'Login Gagal!');
    }

    public function logout(Request $request)
    {
        Auth::logout();

        $request->session()->invalidate();
        $request->session()->regenerateToken();

        return redirect('/');
    }
}


Membuat Views Login

Tambahkan folder dengan nama auth pada folder resources/views, kemudian tambahkan folder dengan nama template dan file dengan nama login.blade.php, seperti petunjuk gambar dibawah :




Tambahkan script dibawah pada file login.blade.php :

@extends('auth.templates.index')

@section('content')
    <div class="login-box">
        <!-- /.login-logo -->
        <div class="card card-outline card-primary">
            <div class="card-header text-center">
                <h1><b>Admin</b>LTE</h1>
            </div>
            <div class="card-body">
                <p class="login-box-msg">Sign in to start your session</p>

                @if (session('error'))
                    <div class="alert alert-danger alert-dismissible fade show" role="alert">
                        {{ session('error') }}
                        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                @endif

                <form action="/login" method="post">
                    @csrf
                    <div class="input-group mb-3">
                        <input name="email" type="email" class="form-control @error('email') is-invalid @enderror"
                            placeholder="Email" value="{{ old('email') }}">
                        <div class="input-group-append">
                            <div class="input-group-text">
                                <span class="fas fa-envelope"></span>
                            </div>
                        </div>
                        @error('email')
                            <div class="invalid-feedback">
                                {{ $message }}
                            </div>
                        @enderror
                    </div>
                    <div class="input-group mb-3">
                        <input name="password" type="password" class="form-control @error('password') is-invalid @enderror"
                            autocomplete="off" placeholder="Password">
                        <div class="input-group-append">
                            <div class="input-group-text">
                                <span class="fas fa-lock"></span>
                            </div>
                        </div>
                        @error('password')
                            <div class="invalid-feedback">
                                {{ $message }}
                            </div>
                        @enderror
                    </div>

                    <div class="float-right">
                        <button type="submit" class="btn btn-primary btn-block">Sign In</button>
                    </div>
                </form>

                <p class="mb-1">
                    <a href="forgot-password.html">I forgot my password</a>
                </p>
                <p class="mb-0">
                    <a href="register.html" class="text-center">Register a new membership</a>
                </p>
            </div>
            <!-- /.card-body -->
        </div>
        <!-- /.card -->
    </div>
    <!-- /.login-box -->
@endsection

Setelah itu tambahkan file dengan nama index.blade.php pada folder resources/views/auth/template, seperti petunjuk gambar berikut :



Kemudian tambahkan script berikut pada index.blade.php :

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ $title }}</title>

    <link rel="stylesheet"
        href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">

    <link rel="stylesheet" href="{{ url('plugins/fontawesome-free/css/all.min.css') }}">

    <link rel="stylesheet" href="{{ url('plugins/overlayScrollbars/css/OverlayScrollbars.min.css') }}">

    <link rel="stylesheet" href="{{ url('dist/css/adminlte.min.css') }}">
</head>

<body class="hold-transition login-page">

    @yield('content')

    <script src="{{ url('plugins/jquery/jquery.min.js') }}"></script>

    <script src="{{ url('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>

    <script src="{{ url('dist/js/adminlte.js') }}"></script>

</body>

</html>

Membuat Controllers Login

Buka folder routes temukan dan buka file dengan nama web.php, kemudian tambahkan route berikut :

Route::get('/login', [LoginController::class, 'index'])->name('login')->middleware('guest');

Route::post('/login', [LoginController::class, 'authenticate']);

Route::get('/logout', [LoginController::class, 'logout'])->name('logout');

Modifikasi route dashboard dan route mahasiswa 

Sebelum di modifikasi :

Route::get('/dashboard', [Dashboard::class, 'index']);

Route::resource('mahasiswa', MahasiswaController::class);

Setelah di modifikasi :

Route::get('/dashboard', [Dashboard::class, 'index'])->name('dashboard')->middleware('auth');

Route::resource('mahasiswa', MahasiswaController::class)->middleware('auth');

Konfigurasi RouteServiceProvider

Buka folder app/Providers, temukan dan bua file dengan nama RouteServiceProvider.php

Ubah baris berikut :

 public const HOME = '/home';

 Menjadi :

 public const HOME = '/';

Testing Login & Logout

Jalankan Local Development Serve Pada Laravel, kemudian akses http://localhost:8000/login, pada web browser, maka akan tampil seperti berikut :


Setelah tampil halaman login seperti gambar diatas, teman-teman login menggunakan data yang ada pada database.

Buka phpMyAdmin, klik database crud kemudian klik tabel users kemudian cek email pada tabel users

Gunakan Email pada tabel users untuk login dan password : password, seperti contoh berikut :



Untuk email yang saya gunakan dengan teman-teman gunakan tentunya tidak sama karena saat melakukan Dummy Data email yang kita buat adalah random.

Setelah mengisikan email dan password klik Sign In, maka seharusnya teman-teman akan diarahkan ke halaman Dashboard.

Untuk Proses Logout teman-teman bisa mengetikan URL berikut : http://127.0.0.1:8000/logout atau teman-teman bisa buat tombol logout dengan href="{{ roue('logout) }}" .
Saya kira kurang lebih seperti itu, tentang bagaimana cara membuat Login (manual) pada Framework Laravel versi 9.

Jika ada yang ingin teman-teman tanyakan, jangan ragu untuk bertanya pada kolom komentar dibawah, dan sampai jumpa pada tutorial berikutnya, semoga bermanfaat bye..byee ^^



Posting Komentar

Lebih baru Lebih lama

Formulir Kontak