jtvidela's picture
Update app.py
575947e verified
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)