initial commit
This commit is contained in:
@@ -20,7 +20,7 @@ class AdminMiddleware
|
||||
|
||||
// 2. Ambil slug role (Mendukung sistem baru yang kita buat)
|
||||
// Kita gunakan optional() agar jika user tidak punya role, aplikasi tidak crash.
|
||||
$roleSlug = optional(auth()->user()->role)->slug ?? auth()->user()->role;
|
||||
$roleSlug = auth()->user()->roleModel?->slug ?? auth()->user()->getRawOriginal('role');
|
||||
|
||||
// 3. Logika Existing Anda (Tetap Dipertahankan)
|
||||
if ($roleSlug !== 'admin') {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use App\Models\ApiToken;
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class AuthenticateApiToken
|
||||
{
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
$plain = $request->bearerToken();
|
||||
if (!$plain) {
|
||||
return response()->json(['message' => 'Token akses tidak ditemukan.'], 401);
|
||||
}
|
||||
|
||||
$token = ApiToken::with('user')->where('token_hash', hash('sha256', $plain))->first();
|
||||
if (!$token || !$token->user || ($token->expires_at && $token->expires_at->isPast())) {
|
||||
return response()->json(['message' => 'Token akses tidak valid atau sudah kedaluwarsa.'], 401);
|
||||
}
|
||||
|
||||
$token->forceFill(['last_used_at' => now()])->saveQuietly();
|
||||
$request->setUserResolver(fn () => $token->user);
|
||||
$request->attributes->set('api_token', $token);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user