Spaces:
Running
Running
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)
|