File size: 2,194 Bytes
faed80b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
from flask import Flask, request, redirect, session, url_for
from data.static import generate as sg
from data.dynamic import generate as dg
import os
from data.data import default_hari
app = Flask(__name__)
app.secret_key = "secret_key_aman_diganti"
# Data login hardcoded
VALID_USER = os.getenv("VALID_USER")
VALID_PASS = os.getenv("VALID_PASS")
# Middleware: Cek login sebelum semua request (kecuali /login dan /static file)
@app.before_request
def require_login():
allowed_routes = ["login", "static"]
if request.endpoint not in allowed_routes and "user" not in session: return redirect(url_for("login"))
# Form login
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
user = request.form.get("username")
password = request.form.get("password")
print(user, VALID_USER, password, VALID_PASS)
if user == VALID_USER and password == VALID_PASS:
session["user"] = user
return redirect(url_for("home"))
return "<h3>Login gagal!</h3><a href='/login'>Coba lagi</a>"
return """
<h2>Login</h2>
<form method='post'>
Username: <input name='username'><br>
Password: <input name='password' type='password'><br>
<input type='submit' value='Login'>
</form>
"""
# Logout
@app.route("/logout")
def logout():
session.pop("user", None)
return redirect(url_for("login"))
# Halaman utama
@app.route("/")
def home():
return """
<h2>Halaman Utama</h2>
<a href='/static/7'>Static 7 Hari</a><br>
<a href='/dynamic'>Dynamic</a><br>
<a href='/logout'>Logout</a>
"""
@app.route("/static")
def static_page(): return f"""<a href="/">β Kembali</a>{sg(90, request.args.get("img"))}"""
@app.route("/static/<int:days>")
def static_pages(days): return f"""<a href="/">β Kembali</a>{sg(days, request.args.get("img"))}"""
@app.route("/dynamic")
def dynamic_page(): return f"""<a href="/">β Kembali</a>{dg(int(request.args.get("d") or default_hari), request.args.get("img"))}"""
if __name__ == "__main__": app.run(host=os.getenv("HOST") or "0.0.0.0", port=os.getenv("PORT") or 8501)
|