Spaces:
Runtime error
Runtime error
| from flask import Flask, render_template, request, redirect, url_for, session, flash | |
| from datetime import datetime | |
| import requests | |
| import os | |
| # Create Flask app | |
| app = Flask(__name__) | |
| # Set secret key (use env var in production) | |
| app.secret_key = os.environ.get("SECRET_KEY", os.urandom(24)) | |
| # In-memory user "database" (for demo/demo purposes only — do NOT use in production) | |
| users = {} | |
| def home(): | |
| if 'username' in session: | |
| return redirect(url_for('dashboard')) | |
| return redirect(url_for('login')) | |
| def signup(): | |
| if request.method == 'POST': | |
| username = request.form.get('username') | |
| password = request.form.get('password') | |
| if username in users: | |
| flash('Username already exists! Try logging in.', 'error') | |
| return redirect(url_for('signup')) | |
| users[username] = {'password': password, 'created_at': datetime.utcnow()} | |
| flash('Signup successful! Please login.', 'success') | |
| return redirect(url_for('login')) | |
| return render_template('signup.html') | |
| def login(): | |
| if request.method == 'POST': | |
| username = request.form.get('username') | |
| password = request.form.get('password') | |
| user = users.get(username) | |
| if user and user['password'] == password: | |
| session['username'] = username | |
| flash(f'Welcome back, {username}!', 'success') | |
| return redirect(url_for('dashboard')) | |
| else: | |
| flash('Invalid username or password', 'error') | |
| return redirect(url_for('login')) | |
| return render_template('login.html') | |
| def dashboard(): | |
| if 'username' not in session: | |
| flash('Please login to access dashboard.', 'error') | |
| return redirect(url_for('login')) | |
| username = session['username'] | |
| portfolio_data = { | |
| 'projects': ['Project A', 'Project B', 'Project C'], | |
| 'last_login': datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') | |
| } | |
| return render_template('dashboard.html', username=username, portfolio=portfolio_data) | |
| def logout(): | |
| session.pop('username', None) | |
| flash('You have logged out.', 'success') | |
| return redirect(url_for('login')) | |
| # Only used if running directly (not with Gunicorn) | |
| if __name__ == '__main__': | |
| app.run(host='0.0.0.0', port=8080) | |