Authentication merupakan proses untuk memastikan suatu pengenalan atau memastikan suatu pengakuan. Sedangkan authorization adalah proses selanjutnya setelah authentication berhasil. Sistem akan memberikan akses sesuai kebijakan yang sudah ditentukan sebelumnya. Didalam sebuah aplikasi, keamanan data sangatlah penting. Oleh karena itu tidak sembarang orang bisa mengakses data tersebut.

Sebelumnya kita sudah mempelajari cara membuat fitur login, untuk langkah – langkahnya bisa disimak cara membuat login dan register dilaravel-10. Kemarin kita sudah mempelajari CRUD di Laravel langkah – langkahnya bisa disimak di cara crud dilaravel.

Cara Authentifikasi dan Authorosasi:

Tutorial kali ini merupakan lanjutan dari turotial kemarin: cara crud dilaravel. Oleh karena itu kita akan menambahkan beberapa code didalam file kemarin.

1. Database

Tambahkan kolom status pada tabel user. Lokasi file: database/migrations/users_table

Perhatikan isi function up

Code:

public function up(): void

    {

        Schema::create('users', function (Blueprint $table) {

            $table->id();

            $table->string('name');

            $table->string('email')->unique();

            $table->timestamp('email_verified_at')->nullable();

            $table->string('password');

            $table->string('status');

            $table->rememberToken();

            $table->timestamps();

        });

    }

2. UserSeeder.php

Lokasi file: database/seeder/UserSeeder.php

Code:

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Database\Seeder;

class UserSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        DB::table('users')->insert([
            'name' => 'admin',
            'status' => 'admin',
            'email' => 'admin@gmail.com',
            'password' => bcrypt('1234'),
            'remember_token' => Str::random(60),
        ]);
        DB::table('users')->insert([
            'name' => 'user',
            'status' => 'user',
            'email' => 'user@gmail.com',
            'password' => bcrypt('1234'),
            'remember_token' => Str::random(60),
        ]);
    }
}

3. user.blade.php

Membuat halaman untuk user karena halaman yang di akses user dan admin akan berbeda. Lokasi file: resources/view/user.blade.php

Code:

@extends('layout')

@section('content')

    <div class="row">

        <div class="col-lg-12 margin-tb">

            <div class="pull-left">

                <h2>Hallo User aitc</h2>

            </div>

        </div>

    </div>

    @if ($message = Session::get('success'))

    <div class="alert alert-success">

        <p>{{ $message }}</p>

    </div>

    @endif

    <table class="table table-bordered">

        <tr>

            <th>No</th>

            <th>Nim</th>

            <th>Nama</th>

            <th>Alamat</th>

        </tr>

        @foreach ($dtmhs as $item)

        <tr>

            <td>{{ ++$i }}</td>

            <td>{{ $item->nrp }}</td>

            <td>{{ $item->nama }}</td>

            <td>{{ $item->alamat }}</td>

        </tr>

        @endforeach

    </table>

    <form action="{{ route("logout") }}">

        @csrf

        <button type="submit" class="btn btn-danger">

         <span class="ms-2">Log out</span>

        </button>

    </form>

    @endsection

4. Controller

Lokasi file: app/Http/Controller

a) RegisterController.php

Karena di authorisasi membutuhkan status untuk login maka di bagian register juga di tambahkan unruk menambahkan status dalam function save

public function save(Request $request){

        $data = new User();

        $data->name = $request->name;

        $data->email = $request->email;

        $data->password = Hash::make($request->password);

        $data->status = $request->status;

        $data->save(); 

b) LoginController.php

Dalam file ini merupakan perintah tujuan halaman bagi status user jika login sebagai admin akan ditujukan ke halaman admin dan jika login sebagai user akan ditujukan ke halaman user

Code:

public function authenticate(Request $request)
    {
        if (Auth::attempt($request->only('email', 'password'))) {
            if (auth()->user()->status == 'admin') {
                return redirect('/datamhs');
            } elseif (auth()->user()->status == 'user') {
                return redirect('/user');
            }
        }
        return redirect('/login');
    }

c) MahasiswaController.php

Membuat function user yang berfungsi untuk agar halaman user bisa tampil

Code:

public function user()

    {

        $dtmhs=Mahasiswa::all();

        return view('user',compact('dtmhs'),['title'=>'data mahasiswa'])

        ->with('i', (request()->input('page', 1) - 1) * 5);

    }

5. Routes

Membuat jalur baru dan menambahkan middlelware(“auth”) yang berfungsi dimana ketika ingin mengakses halaman tersebut kita harus login. Lokasi file: routes/web.php

Code:

?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\MahasiswaController;

use App\Http\Controllers\RegisterController;

use App\Http\Controllers\LoginController;

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

Route::get('/', function () {

    return view('login');

});

route::post('/postlogin',[LoginController::class,'postlogin'])->name('postlogin');

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

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

Route::get('/login',[RegisterController::class,'tampil'])->name('login');

Route::get('/register',[RegisterController::class,'tambah']);

Route::post('/register/save',[RegisterController::class,'save']);

Route::prefix("/")->middleware("auth")->group(function(){

    Route::get('/datamhs',[MahasiswaController::class,'index'])->name('datamahasiswa');

    Route::get('/user',[MahasiswaController::class,'user'])->name('user');

    Route::get('/inputdata',[MahasiswaController::class,'create'])->name('inputdata');

    Route::post('/simpandata',[MahasiswaController::class,'store'])->name('simpandata');

    Route::get('/edit/{id}',[MahasiswaController::class,'edit'])->name('edit');

    Route::post('/updatedata/{id}',[MahasiswaController::class,'update'])->name('updatedata');

    Route::get('/hapus/{id}',[MahasiswaController::class,'destroy'])->name('hapus');

});

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

Tampilan:

Login admin

Halaman admin

Login user

Halaman user

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *