Tutorial Laravel 12 – Membuat Web Point of sales (POS) – Bagian #1 (Backend Laravel API Sanctum untuk login dan register)

Web POS (Point of Sale) adalah aplikasi berbasis web yang digunakan untuk mengelola transaksi penjualan di toko, kafe, restoran, atau bisnis retail lainnya. Sistem ini membantu kasir dalam mencatat penjualan, mengelola stok barang, mencetak struk, hingga membuat laporan penjualan secara otomatis. Karena berbasis web, POS dapat diakses dari browser tanpa instalasi, dapat digunakan di berbagai perangkat seperti laptop, tablet, atau komputer kasir.

1. Persiapan Awal

Pastikan sudah terinstal:

  • PHP ≥ 8.1
  • Composer
  • MySQL
  • Laravel (bisa buat via composer)

Buat project baru:

composer create-project laravel/laravel pos-api
cd pos-api

Konfigurasi database di file .env:

DB_CONNECTION=mysql
DB_DATABASE=posdb
DB_USERNAME=root
DB_PASSWORD=

Kemudian migrasikan tabel default:

php artisan migrate

2. Install Laravel Sanctum

Sanctum adalah paket API Token (untuk login).

composer require laravel/sanctum
php artisan vendor:publish --tag=sanctum-migrations
php artisan migrate

Cara Menambah Middleware di Laravel 12 (TIDAK ADA Kernel.php)

Sebagai gantinya, middleware diatur di:

 ✔ bootstrap/app.php

Laravel 12 memakai definisi middleware seperti ini:

 📌 Tambahkan middleware Sanctum ke API group

Edit:

bootstrap/app.php

Tambahkan di bagian:

->withMiddleware(function (Middleware $middleware) {
$middleware->group('api', [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
]);
})

Penjelasan

  • EnsureFrontendRequestsAreStateful → memungkinkan SPA seperti Vue.js menggunakan Sanctum token.
  • ThrottleRequests:api → membatasi request API.
  • SubstituteBindings → mendukung route model binding otomatis.

Tidak perlu membuat Kernel.php, karena Laravel 12 sudah memindahkan registrasi middleware ke bootstrap/app.php.

3. Buat Auth API (Register + Login)

php artisan make:controller AuthController

Isi lengkap app/Http/Controllers/AuthController.php:

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class AuthController extends Controller
{
public function register(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|unique:users',
'password' => 'required|min:6'
]);

$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password)
]);

return response()->json(['message' => 'Register success', 'user' => $user]);
}

public function login(Request $request)
{
$user = User::where('email', $request->email)->first();

if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json(['message' => 'Email atau password salah'], 401);
}

$token = $user->createToken("pos-token")->plainTextToken;

return response()->json([
"user" => $user,
"token" => $token
]);
}
}

4. Tambahkan Routes

Edit file routes/web.php:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\CategoryController;
use App\Http\Controllers\ProductController;

Route::prefix('api')->group(function () {
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
});

Route::middleware('auth:sanctum')->group(function () {
    Route::apiResource('/categories', CategoryController::class);
    Route::apiResource('/products', ProductController::class);
});

5. Install Postman untuk cek API

Anda bisa menggunakan postman versi web atau desktop dengan download disini : https://www.postman.com/downloads/

Setelah download, install dan buka postman, lalu buat collection misalnya “POS-API” -> sub folder “Auth”.


5.1 Buka Endpoint CSRF Token

Laravel Sanctum menyediakan endpoint:

/sanctum/csrf-cookie

GET via Postman

URL:

http://localhost:8000/sanctum/csrf-cookie

 📌 Pastikan set:

  • Method: GET
  • Headers:
    • Accept: application/json

Jika berhasil:

  • Response: 204 No Content
  • Cookie baru muncul di Postman:
    • XSRF-TOKEN
    • laravel_session

Lihat di tab Cookies → domain localhost.

5.2 Kirim CSRF token ke Laravel

Setelah step 1, Postman sekarang menyimpan cookie:

  • XSRF-TOKEN (encoded URL version)
  • laravel_session

Untuk permintaan POST, Anda harus menambahkan header:

Tambahkan header berikut di Postman:

X-XSRF-TOKEN: {token hasil decode XSRF-TOKEN}

Cara mendapatkan token:

  1. Klik Cookies
  2. Pilih domain localhost
  3. Pilih XSRF-TOKEN
  4. Copy value → decode URL-nya
    contoh token seperti:eyJpdiI6Ik1qQXlnPT0iLCJ2YWx1ZSI6Im5FV0JQOWNXa0FvUndJTkVhY0JSbnc9PSIsIm1hYyI
    6IjY0MTkyY2NmYWI2YmRkOTc2NWM5NmMxMTE2ZDJhNzQzOTZkZDUxMzlhN2M0NWUzMzhkNmM1YjljNjA
    0MjY1MGIifQ%3D%3D
  5. Paste ke header X-XSRF-TOKEN.

5.3 Mengirim Request POST /register dengan CSRF

Setup:

  • Method: POST
  • URL:http://localhost:8000/api/register
  • Headers:Accept: application/json
    X-XSRF-TOKEN: [token hasil decode]
  • Body (JSON):
{
  "name": "Engkus Kusnadi",
  "email": "engkuskusnadifuture@gmail.com",
  "password": "admin1234"
}

Jika semua benar → Response berhasil tanpa 419.

Sekarang cek di localhost/phpmyadmin dan cek di database posdb -> klik tabel “users” harusnya muncul datanya seperti berikut.

Tags :

Leave a Reply

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

eleven + 17 =

Tutorial Terpopuler

Tutorial Pilihan

Tentang Gurututorku

Gurututorku adalah sebuah kursus online maupun offline yang menyediakan berbagai macam tutorial tentang pemrograman, design, dan multimedia serta artikel teknologi yang tentunya bisa dinikmati dan dipelajari oleh semua orang yang baru ingin belajar dunia IT.

© 2024 – Gurututorku.com | Learning today success tomorrow.