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'))