Praktikum 8 Pemrograman Web – Laravel Auth

Laporan Praktikum 8 Pemrograman Web

  1. Membuat Project Laravel dengan Nama Laravel-sisfo

Untuk membuat project baru, kita dapat menggunakan composer dengan mengetikkan perintah pada cmder:
composer create-project laravel/laravel=^12.0 laravel-sisfo –prefer-dist

Dengan perintah ini, Composer akan menginstal seluruh kerangka kerja (framework) Laravel versi 12.x beserta semua dependensi PHP yang diperlukan untuk menjalankan aplikasi Laravel dasar.

Jalankan project dengan perintah php artisan serve.

  • Konfigurasi Database

Bula file .env kemudian sesuaikan konfigurasi databasenya.

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=laravel_sisfo

DB_USERNAME=root

DB_PASSWORD=

  • User Authentication
  • Install Package Laravel/UI

Ketikkan perintah composer require laravel/ui di terminal atau cmd.

Fungsinya untuk menginstal paket UI (User Interface) resmi Laravel yang menyediakan scaffolding otentikasi (login, register, reset password) dasar dan frontend preset (Blade, Bootstrap, Vue, React).

  • Authentication Fitur

Ketikkan perintah berikut pada terminal / cmd  php artisan ui bootstrap –auth

Fungsinya untuk menginstal scaffolding otentikasi (login, register, dll.) dengan styling menggunakan Bootstrap, termasuk tampilan (views), rute (routes), dan controller yang diperlukan.

  • Install dan Compile

Ketikkan perintah npm install && npm run dev untuk menginstall dan compile file-file asset bawaan, dengan perintah diatas maka file-file yang dibutuhkan untuk authentication akan di generate secara otomatis, seperti halaman login, register dan forgot password, selain itu juga akan gi generate controller auth.

Dan akan ditambahkan folder auth ke project kita

  • Migration

Ketikkan perintah php artisan migrate maka Laravel akan membuat migration table authentication, jika sebelumnya belum terdapat database maka akan ada konfirmasi dari laravel apakah akan dibuatkan databasenya atau tidak.

  • Halaman Login

Akses url http://127.0.0.1:8000/login pada browser maka akan tampil halaman login

  • Halaman Regsiter

Akses url http://127.0.0.1:8000/register pada browser maka akan tampil halaman register

Fitur authentication Laravel akan mengenerate controller, model, view dan route authentication secara otomatis, selain itu juga tampilan view sudah menggunakan framework boostrap sehingga mempermudah dalam membuat fitur authentication pada aplikasi.

  • Custom Table Users

Authentication Laravel secara otomatis akan mengenerate table Users yang berisi tentang informasi data user dan perlu ditambahken beberapa field yaitu username, level dan status, maka perlu membuat sebuah migration untuk menambahkan field-field diatas, ketikkan perintah berikut pada terminal atau cmd php artisan make:migration costum_table_users. Perintah ini digunakan untuk membuat file migrasi database baru di Laravel dengan nama costum_table_users.

Di folder migrations akan terbuat file baru yaitu custom table user yang dibuat menggunakan perintah tadi. Kemudian buka file costum_table_users.php dan isikan dengan kode program berikut.

Kemudian jalankan perintah php artisan migrate, jika berhasil maka struktur table users telah berubah

  • Seeding User

Buat seeder dengan perintah php artisan make:seeder AdminSeeder yang akan membuat file AdminSeeder.php pada folder Seeder dan gunakan untuk buat akun admin.

Selanjutnya untuk menjalankan seeding dengan cara menjalankan perintah berikut . php artisan db:seed –class=AdminSeeder. Jika berhasil maka akan muncul seperti ini:

Kita dapat login dengan menggunakan akun tersebut.

  • Templating dan Layouting

Kita akan menggunakan template SB Admin 2 dengan framework bootstrap, silahkan downloah template pada link https://startbootstrap.com/theme/sb-admin-2 kemudian extrak, selanjutnya buat folder pada public project Laravel dengan nama sbadmin dan copy paste kan seluruh asset template sbadmin kedalam folder tersebut.

Buka file app.blade.php dan sesuaikan kodenya:

<!DOCTYPE html>

<html lang=”en”>

<head>

    <meta charset=”utf-8″>

    <meta http-equiv=”X-UA-Compatible” content=”IE=edge”>

    <meta name=”viewport” content=”width=device-width, initial-scale=1, shrink-to-fit=no”>

    <meta name=”description” content=””>

    <meta name=”author” content=””>

    <title>Sisfo – Login</title>

    <!– Custom fonts for this template–>

    <link href=”{{ asset(‘sbadmin/vendor/fontawesome

        free/css/all.min.css’) }}” rel=”stylesheet” type=”text/css”>

    <link

        href=”https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i rel=”stylesheet”>

    <!– Custom styles for this template–>

    <link href=”{{ asset(‘sbadmin/css/sb-admin-2.min.css’) }}” rel=”stylesheet”>

</head>

<body class=”bg-gradient-primary”>

    <div class=”container”>

        <!– Outer Row –>

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

            <div class=”col-xl-6 col-lg-6 col-md-9″>

                <div class=”card o-hidden border-0 shadow-lg my-5″>

                    <div class=”card-body p-0″>

                        <!– Nested Row within Card Body –>

                        <div class=”row”>

                            <!– <div class=”col-lg-6 “></div> –>

                            <div class=”col-lg-12 text-center”>

                                <div class=”p-5″>

                                    <div class=”text-center”>

                                        <h1 class=”h4 text-gray-900 mb4″>Halaman Login</h1>

                                    </div>

                                    <form class=”user” method=”POST” action=”{{ route(‘login’) }}”>

                                        @csrf

                                        <div class=”form-group”>

                                            <input id=”email” type=”email” class=”form-control form-control-user @error(’email’) is-invalid

@enderror”

                                                name=”email” value=”{{ old(’email’) }}” required autocomplete=”email” autofocus />

                                            @error(’email’)

                                                <span class=”invalid feedback” role=”alert”>

                                                    <strong>{{ $message }}</strong>

                                                </span>

                                            @enderror

                                        </div>

                                        <div class=”form-group”>

                                            <input id=”password” type=”password”

                                                class=”form-control form-control-user @error(‘password’) is-invalid @enderror”

                                                name=”password” value=”{{ old(‘password’) }}” required />

                                            @error(‘password’)

                                                <span class=”invalid feedback” role=”alert”>

                                                    <strong>{{ $message }}</strong>

                                                </span>

                                            @enderror

                                        </div>

                                        <button type=”submit” class=”bt btn-primary btn-user btn-block”>

                                            login

                                        </button>

                                    </form>

                                </div>

                            </div>

                        </div>

                    </div>

                </div>

            </div>

        </div>

    </div>

    <!– Bootstrap core JavaScript–>

    <script src=”{{ asset(‘sbadmin/vendor/jquery/jquery.min.js’) }}”></script>

    <script src=”vendor/bootstrap/js/bootstrap.bundle.min.js”></script>

    <!– Core plugin JavaScript–>

    <script src=”{{ asset(‘sbadmin/vendor/jquery easing/jquery.easing.min.js’) }}”></script>

    <!– Custom scripts for all pages–>

    <script src=”{{ asset(‘sbadmin/js/sb-admin-2.min.js’) }}”></script>

</body>

</html>

Dengan kode ini, tampilan halaman login akan berubah

Layout Global

layout ini akan digunakan sebagai layout utama aplikasi dan view-view lain akan mengambil resource disini, karena app.blade.php sudah digunakan untuk view login, maka kita perlu membuat layout baru. Buat file dengan nama main.blade.php pada folder view/layouts.

<!DOCTYPE html>

<html lang=”en”>

<head>

    <meta charset=”utf-8″>

    <meta http-equiv=”X-UA-Compatible” content=”IE=edge”>

    <meta name=”viewport” content=”width=device-width, initial-scale=1, shrink-to-fit=no”>

    <meta name=”description” content=””>

    <meta name=”author” content=””>

    <title>Sisfo – @yield(‘judul’)</title>

    <!– Custom fonts for this template–>

    <link href=”{{ asset(‘sbadmin/vendor/fontawesomefree/css/all.min.css’) }}” rel=”stylesheet” type=”text/css”>

    <link href=”https://fonts.googleapis.com/cssfamily=Nunito:200,200i,300, 300i,400,400i,600,600i,700,700i,800,800i,900,900i rel=”stylesheet”>

    <!– Custom styles for this template–>

    <link href=”{{ asset(‘sbadmin/css/sb-admin-2.min.css’) }}” rel=”stylesheet”>

</head>

<body id=”page-top”>

    <!– Page Wrapper –>

    <div id=”wrapper”>

        <!– Sidebar –>

        @include(‘layouts.sidebar’)

        <!– End of Sidebar –>

        <!– Content Wrapper –>

        <div id=”content-wrapper” class=”d-flex flex-column”>

            <!– Main Content –>

            <div id=”content”>

                <!– Topbar –>

                @include(‘layouts.topbar’)

                <!– End of Topbar –>

                <!– Begin Page Content –>

                <div class=”container-fluid”>

                    <!– Page Heading –>

                    <h1 class=”h3 mb-4 text-gray-800″>@yield(‘judul’)</h1>

                    @yield(‘konten’)

                </div>

                <!– /.container-fluid –>

            </div>

            <!– End of Main Content –>

            <!– Footer –>

            <footer class=”sticky-footer bg-white”>

                <div class=”container my-auto”>

                    <div class=”copyright text-center my-auto”>

                        <span>Copyright &copy; Sisfo</span>

                    </div>

                </div>

            </footer>

            <!– End of Footer –>

        </div>

        <!– End of Content Wrapper –>

    </div>

    <!– End of Page Wrapper –>

    <!– Scroll to Top Button–>

    <a class=”scroll-to-top rounded” href=”#page-top”>

        <i class=”fas fa-angle-up”></i>

    </a>

    <!– Logout Modal–>

    <div class=”modal fade” id=”logoutModal” tabindex=”-1″ role=”dialog” aria-labelledby=”exampleModalLabel”

        aria-hidden=”true”>

        <div class=”modal-dialog” role=”document”>

            <div class=”modal-content”>

                <div class=”modal-header”>

                    <h5 class=”modal-title” id=”exampleModalLabel”>Yakin

                        akan keluar aplikasi ?</h5>

                    <button class=”close” type=”button” data dismiss=”modal” aria-label=”Close”>

                        <span aria-hidden=”true”>×</span>

                    </button>

                </div>

                <div class=”modal-body”>Silahkan klik tombol logout untuk

                    keluar aplikasi</div>

                <div class=”modal-footer”>

                    <button class=”btn btn-secondary” type=”button” data dismiss=”modal”>Cancel</button>

                    <form action=”{{ route(‘logout’) }}” method=”POST”>

                        @csrf

                        <button class=”btn btn-primary” style=”cursor:pointer”>Logout</button>

                    </form>

                </div>

            </div>

        </div>

    </div>

    <!– Bootstrap core JavaScript–>

    <script src=”{{ asset(‘sbadmin/vendor/jquery/jquery.min.js’) }}”></script>

    <script src=”{{ asset(‘sbadmin/vendor/bootstrap/js/bootstrap.bundle.min.js’) }}”>

        < /s

        cript >

            <

            !–Core plugin JavaScript– >

            <

            script src = “{{ asset(‘sbadmin/vendor/jquery easing/jquery.easing.min.js’) }}” >

    </script>

    <!– Custom scripts for all pages–>

    <script src=”{{ asset(‘sbadmin/js/sb-admin-2.min.js’) }}”></script>

</body>

</html>

Pada layouts main.blade.php diatas layout ini akan memanggil view sidebar.blade.php dan view topbar.blade.php kedalam layout main.blade.php dengan menggunakan perintah @include sehingga tampilan kedua view tersebut akan tampil pada layout main. Selanjutnya juga akan menampilkan data judul dan konten dari view yang akan menggunakan layouts main.blade.php dengan perintah @yeild(‘judul’) dan @yeild(‘konten).

Sidebar

            Buat file sidebar.blade.php pada folder layouts.

Topbar

Buat juga file topbar.blade.php di folder yang sama.

Penggunaan Layouts main.blade.php

Untuk menggunakan layouts main, gunakan @extends(‘layouts.main’) sehingga seluruh tampilan main.blade.php akan ditampilkan pada view home, untuk menampilkan data judul pada layout main dengan perintah @section(‘judul’)Dashboard @endsection dan konten dengan cara @section(‘judul’)Dashboard @endsection

Caranya masuk ke home.blade.php dan isikan:

@extends(‘layouts.main’)

@section(“judul”) Dasboard @endsection

@section(‘konten’)

<P>dashboard</P>

@endsection

Jika konfigurasi berhasil, maka tampilannya akan berubah menjadi:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top