first commit

This commit is contained in:
2026-10-01 15:50:43 +07:00
commit debeb8773c
48 changed files with 7547 additions and 0 deletions

32
dashboard/middleware.py Normal file
View 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