File size: 2,289 Bytes
33ff5ca 4f591e5 33ff5ca 75fb515 4f591e5 75fb515 4f591e5 75fb515 4f591e5 78b4c1f 75fb515 4f591e5 75fb515 4f591e5 78b4c1f |
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 |
from flask import render_template, request, redirect, url_for
from flask_login import login_user, logout_user, login_required
from . import auth_bp
from database import User, db
from create_app import *
import secrets
from flask import make_response
@auth_bp.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
email = request.form['email']
nickname = request.form['nickname']
password = request.form['password']
existing_email = User.query.filter_by(email=email).first()
existing_nickname = User.query.filter_by(nickname=nickname).first()
if existing_email:
return render_template('register.html', message="Email already registered.")
if existing_nickname:
return render_template('register.html', message="Nickname already taken.")
if len(password) < 8:
return render_template('register.html', message="Password must be at least 8 characters long.")
new_user = User(email=email, nickname=nickname)
new_user.set_password(password)
db.session.add(new_user)
db.session.commit()
return redirect(url_for('auth.login'))
return render_template('register.html')
@auth_bp.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
email = request.form['email']
password = request.form['password']
user = User.query.filter_by(email=email).first()
if user and user.check_password(password):
# Use Flask-Login's login_user
login_user(user)
# Generate token (if still needed for API calls)
token = secrets.token_urlsafe(32)
TOKEN_STORE[token] = user.id
# Create response with token in cookie
response = make_response(redirect(url_for('dashboard.dashboard')))
response.set_cookie('auth_token', token, httponly=True, secure=True)
return response
else:
return render_template('login.html', message="Invalid email or password.")
return render_template('login.html')
@auth_bp.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('auth.login')) |