from flask import Flask, request, render_template, redirect, url_for, make_response import datetime 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 # Imposta True in produzione con HTTPS ) return response @app.route('/') def index(): # Se l'utente è già autenticato, mostra il contenuto normale if is_authenticated(): return render_template('index.html') # Sostituisci con il tuo template # 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." return render_template('login.html', error=error) @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) return response # Aggiungi questo decoratore a tutte le route che vuoi proteggere def require_auth(f): """Decorator per proteggere le route""" def decorated_function(*args, **kwargs): if not is_authenticated(): return redirect(url_for('login')) return f(*args, **kwargs) decorated_function.__name__ = f.__name__ return decorated_function # Esempio di utilizzo del decorator su altre route @app.route('/protected') @require_auth def protected_route(): return "Questa è una pagina protetta!" # Le tue route esistenti vanno modificate aggiungendo @require_auth # @app.route('/tua_route') # @require_auth # def tua_funzione(): # return render_template('tuo_template.html') if __name__ == '__main__': app.run(debug=True)