File size: 2,434 Bytes
6c80127
 
f210cff
219dc2d
6c80127
07d1ad9
d44f328
6c80127
 
 
 
 
 
 
 
 
 
d44f328
6c80127
 
 
 
d44f328
6c80127
 
d44f328
6c80127
d44f328
6c80127
 
 
 
 
d44f328
6c80127
575947e
6c80127
575947e
6c80127
 
 
 
 
575947e
6c80127
d44f328
219dc2d
 
 
 
 
6c80127
 
d44f328
 
 
 
 
6c80127
d44f328
6c80127
 
f210cff
d44f328
6c80127
d44f328
6c80127
 
 
 
 
 
 
 
 
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, request, redirect, url_for, make_response, render_template
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash

app = Flask(__name__)

# Configure the SQLite database
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

# Define the User model
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(200), nullable=False)

# Create the database and tables
@app.before_first_request
def create_tables():
    db.create_all()

# Landing page route
@app.route('/')
def landing_page():
    return render_template('index.html')  # Ensure index.html exists in the templates folder

# User registration route
@app.route('/register', methods=['POST'])
def register():
    username = request.form.get('username')
    password = request.form.get('password')

    # Check if the username already exists
    if User.query.filter_by(username=username).first():
        return "Username already exists. Please choose another.", 400

    # Hash the password and save the user to the database
    hashed_password = generate_password_hash(password)
    new_user = User(username=username, password=hashed_password)
    db.session.add(new_user)
    db.session.commit()

    return "User registered successfully!", 201

# User login route
@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')

    # Look up the user in the database
    user = User.query.filter_by(username=username).first()
    if not user:
        return "Invalid username."

    # Verify the password
    if check_password_hash(user.password, password):
        response = make_response(redirect(url_for('landing_page')))
        response.set_cookie('logged_in', 'true', max_age=3600)  # Set session cookie for 1 hour
        response.set_cookie('username', username, max_age=3600)
        return response

    return "Invalid password!"

# User logout route
@app.route('/logout')
def logout():
    response = make_response(redirect(url_for('landing_page')))
    response.delete_cookie('logged_in')
    response.delete_cookie('username')
    return response

if __name__ == '__main__':
    app.run(debug=True)