from flask import Flask, request, render_template, redirect, url_for, make_response import datetime import os app = Flask(__name__) SECRET_PASSWORD = "VeronaTrento25!" COOKIE_NAME = "authenticated" def is_authenticated(): """Verifica se l'utente è autenticato tramite cookie""" auth_cookie = request.cookies.get(COOKIE_NAME) if auth_cookie == "true": return True return False def set_auth_cookie(response): """Imposta il cookie di autenticazione per 24 ore""" expires = datetime.datetime.now() + datetime.timedelta(hours=24) response.set_cookie( COOKIE_NAME, "true", expires=expires, httponly=True, secure=False, path='/', # Aggiungi questo samesite='Lax' # Aggiungi questo ) return response @app.route('/') def index(): # Se l'utente è già autenticato, mostra il contenuto normale if is_authenticated(): return """ Sito Protetto

✅ Accesso Autorizzato!

Sei autenticato correttamente. La navigazione è libera per 24 ore.

🔓 Logout

Benvenuto nel sito protetto

Questo è il contenuto principale del tuo sito web.

Qui puoi inserire tutto il contenuto che vuoi proteggere con password.

""" # Altrimenti reindirizza alla pagina di login return redirect(url_for('login')) @app.route('/login', methods=['GET', 'POST']) def login(): # Se l'utente è già autenticato, reindirizza alla home if is_authenticated(): return redirect(url_for('index')) error = None if request.method == 'POST': password = request.form.get('password') if password == SECRET_PASSWORD: # Password corretta, crea risposta e imposta cookie response = make_response(redirect(url_for('index'))) response = set_auth_cookie(response) return response else: error = "❌ Password errata. Riprova." # Costruisci l'HTML dinamicamente html_content = """ Login Richiesto

🔒 Accesso Protetto

Inserisci la password per accedere al sito

""" # Aggiungi la sezione error se presente if error: html_content += f'
{error}
' # Aggiungi il form html_content += """
""" return html_content @app.route('/logout') def logout(): """Route per il logout (elimina il cookie)""" response = make_response(redirect(url_for('login'))) response.set_cookie(COOKIE_NAME, '', expires=0, path='/') # Aggiungi path='/' return response # Proteggi tutte le route aggiuntive che potresti avere @app.route('/protected') def protected(): if not is_authenticated(): return redirect(url_for('login')) return "Questa è una pagina protetta!" if __name__ == '__main__': # Configurazione per Hugging Face Spaces port = int(os.environ.get('PORT', 7860)) app.run(host='0.0.0.0', port=port, debug=False)