first commit
This commit is contained in:
32
dashboard/middleware.py
Normal file
32
dashboard/middleware.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse
|
||||
|
||||
class LoginRequiredMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
# 1. Ambil nama jalur URL yang sedang diakses saat ini
|
||||
# Contoh: jika akses '/login/', request.path adalah '/login/'
|
||||
current_path = request.path
|
||||
|
||||
# 2. Bikin daftar "Pengecualian" (Alamat yang bebas diakses tanpa login)
|
||||
# Kita bebaskan halaman login, logout, dan jalur data ESP32
|
||||
exempt_urls = [
|
||||
reverse('login'), # Alamat halaman login Anda
|
||||
'/accounts/logout/', # Alamat logout
|
||||
'/api/kwh/push/', # 📌 PENTING: Jalur ESP32 kirim data agar tidak diblokir
|
||||
]
|
||||
|
||||
# 3. Jalankan logika pemeriksaan satpam
|
||||
# Jika user BELUM login, DAN alamat yang dituju TIDAK ADA di daftar bebas masuk
|
||||
if not request.user.is_authenticated:
|
||||
# Pengecekan tambahan: pastikan path saat ini tidak diawali dengan alamat exempt_urls
|
||||
if not any(current_path.startswith(url) for url in exempt_urls):
|
||||
# Paksa pindahkan halaman browser ke halaman login
|
||||
return redirect('login')
|
||||
|
||||
# Jika lolos pemeriksaan di atas, izinkan request berlanjut ke halaman tujuan
|
||||
response = self.get_response(request)
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user