Table of Content
- Laravel Sanctum
- Introduction
- Instalasi
- Model User
- Kernel
- Routing
- Controllernya
- Try & Catch
- Screenshot
Laravel Sanctum
Laravel Sanctum adalah solusi autentikasi yang dikembangkan oleh tim Laravel untuk menangani autentikasi API dengan token dan sesi berbasis cookie. Sanctum dirancang untuk menawarkan kemudahan penggunaan dan keamanan dengan cara yang ringan dan mudah diintegrasikan dalam aplikasi Laravel.
Introduction
Saya mencoba untuk menggunakan Authentication menggunakan token dengan Laravel Sanctum. Ternyata sangat sederhana. Berikut caranya
Instalasi
- composer require laravel/sanctum
- php artisan vendor:publish —provider=“Laravel\Sanctum\SanctumServiceProvider
- php artisan migrate
Model User
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens ,HasFactory, Notifiable;
// ...
}Tambahkan HasApiTokens milik sanctum di model User
Kernel
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
Tambahkan ini di app/http/kernel.
Routing
Route::post('/auth/register', [UserController::class, 'register']);
Route::post('/auth/login', [UserController::class, 'login']);Contoh Routing. Taruh di routes/api.php
Controllernya
<?php
namespace App\\\\Http\\\\Controllers\\\\Api;
use Throwable;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
public function register(Request $req)
{
try{
$validator = Validator::make($req->all(),[
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6'
]);
if($validator->fails()){
return response()->json([
'status' => false,
'message' => 'validation errors',
'errors' => $validator->errors()
], 401);
}
$user = User::create([
'name' => $req->name,
'email' => $req->email,
'password' => Hash::make($req->password),
]);
return response()->json([
'status' => true,
'message' => 'Berhasil buat akun!',
'token' => $user->createToken('Andrew Riyadi')->plainTextToken
], 200);
}catch(Throwable $err){
return response()->json([
'status' => false,
'message' => $err->getMessage()
], 500);
}
}
public function login(Request $req)
{
try{
$validator = Validator::make($req->all(),[
'email' => 'required|email',
'password' => 'required|min:6'
]);
if($validator->fails()){
return response()->json([
'status' => false,
'message' => 'validation errors',
'errors' => $validator->errors()
], 401);
}
if(!Auth::attempt($req->only(['email','password']))){
return response()->json([
'status' => false,
'message' => 'Email dan password salah!'
], 401);
}
$user = User::where('email', $req->email)->first();
return response()->json([
'status' => true,
'message' => 'Berhasil login!',
'token' => $user->createToken('Andrew Riyadi')->plainTextToken
], 200);
}catch(Throwable $err){
return response()->json([
'status' => false,
'message' => $err->getMessage()
], 500);
}
}
}
Penjelasan:
- kurang lebih sama penggunaan dengan ajax, lempar-lempar json.
- menggunakan try and catch
- untuk membuat token cukup
$user->createToken('Andrew Riyadi')->plainTextToken
Try & Catch
try dan catch adalah blok kode dalam banyak bahasa pemrograman yang digunakan untuk menangani eksepsi atau kesalahan yang mungkin terjadi selama eksekusi program. Eksepsi adalah kondisi tidak normal yang terjadi selama proses eksekusi program, seperti kesalahan dalam file input/output, pembagian dengan nol, atau kegagalan jaringan.
Screenshot
.png)
.png)
Referensi: https://www.youtube.com/watch?v=ajUST-jUMeg
Date: 08-08-2024