Spaces:
Sleeping
Sleeping
| 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 | |
| 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')) | |
| 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) | |
| 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 | |
| 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) |