⚝
One Hat Cyber Team
⚝
Your IP:
192.168.31.6
Server IP:
192.168.1.11
Server:
Linux pams 6.1.0-29-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
PHP Version:
8.2.28
Buat File
|
Buat Folder
Upload File
Eksekusi
Dir :
~
/
var
/
www
/
apik
/
app
/
Filters
/
Viewing : JwtFilter.php
<?php namespace App\Filters; use CodeIgniter\Filters\FilterInterface; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Firebase\JWT\JWT; use Firebase\JWT\Key; use Exception; class JwtFilter implements FilterInterface { public function before(RequestInterface $request, $arguments = null) { // 1. Ambil token dari Header Authorization (Bearer <token>) $authHeader = $request->getServer('HTTP_AUTHORIZATION') ?? $request->getHeaderLine('Authorization'); if (!$authHeader) { $response = service('response'); return $response->setStatusCode(401)->setJSON([ 'status' => false, 'message' => 'Akses ditolak. Token tidak ditemukan.' ]); } // Pecah string "Bearer eyJhbGci..." untuk mengambil tokennya saja $arr = explode(' ', $authHeader); $token = isset($arr[1]) ? $arr[1] : $arr[0]; try { // 2. Decode token menggunakan Secret Key sekuat 44 karakter Anda tadi $secretKey = env('JWT_SECRET_KEY') ?? 'kunci_cadangan_apik_2026_yang_sangat_panjang_dan_aman_sekali'; $decoded = JWT::decode($token, new Key($secretKey, 'HS256')); // 3. Simpan data user yang login ke objek request (bisa dipakai di controller jika butuh) $request->user = $decoded; } catch (Exception $e) { // Jika token kedaluwarsa (exp) atau dimanipulasi, langsung tolak di sini $response = service('response'); return $response->setStatusCode(401)->setJSON([ 'status' => false, 'message' => 'Token tidak valid atau telah kedaluwarsa: ' . $e->getMessage() ]); } } public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { // Tidak diperlukan proses pasca-request } }