File size: 2,428 Bytes
b440bd4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
69
70
71
72
73
74
75
76
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 = {}

@app.route('/')
def home():
    if 'username' in session:
        return redirect(url_for('dashboard'))
    return redirect(url_for('login'))

@app.route('/signup', methods=['GET', 'POST'])
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')

@app.route('/login', methods=['GET', 'POST'])
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')

@app.route('/dashboard')
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)

@app.route('/logout')
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)