File size: 2,769 Bytes
2ae57cb
 
 
 
 
 
 
d8acd61
 
 
 
 
 
2ae57cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d8acd61
 
 
 
 
 
 
 
 
 
 
 
2ae57cb
d8acd61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2ae57cb
 
 
 
 
d8acd61
 
2ae57cb
d8acd61
 
 
 
2ae57cb
 
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
77
78
79
80
81
82
from flask import Blueprint, render_template, redirect, url_for, flash, request, jsonify
from flask_login import login_user, logout_user, login_required, current_user
from werkzeug.utils import secure_filename
import os
import json
from datetime import datetime

from backend.form.AuthForms import LoginForm, SignupForm
from backend.models.user import User
from backend.models.database import db

auth_bp = Blueprint('auth', __name__)


def handle_resume_upload(file):
    """
    Save uploaded file temporarily, extract features, then clean up.
    Returns (features_dict, error_message, filename)
    """
    if not file or file.filename == '':
        return None, "No file uploaded", None

    try:
        # Get current directory for temp folder
        current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        filename = secure_filename(file.filename)
        filepath = os.path.join(current_dir, 'temp', filename)
        os.makedirs(os.path.dirname(filepath), exist_ok=True)
        file.save(filepath)

        features = extract_resume_features(filepath)
        os.remove(filepath)  # Clean up after parsing

        return features, None, filename
    except Exception as e:
        print(f"Error in handle_resume_upload: {e}")
        return None, str(e), None


@auth_bp.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and user.check_password(form.password.data):
            login_user(user)
            return redirect(url_for('index'))
        else:
            flash('Invalid credentials', 'danger')
    return render_template('login.html', form=form)


@auth_bp.route('/signup', methods=['GET', 'POST'])
def signup():
    form = SignupForm()
    if form.validate_on_submit():
        existing_user = User.query.filter_by(email=form.email.data).first()
        if existing_user:
            flash('Email already registered.', 'warning')
        else:
            user = User(
                username=form.username.data,
                email=form.email.data,
                role=form.role.data
            )
            user.set_password(form.password.data)
            db.session.add(user)
            db.session.commit()

            # Log the user in and redirect to profile completion
            login_user(user)
            flash('Account created successfully! Welcome to Codingo.', 'success')
            return redirect(url_for('index')) 
    return render_template('signup.html', form=form)


@auth_bp.route('/logout')
@login_required
def logout():
    logout_user()
    flash('You have been logged out successfully.', 'info')
    return redirect(url_for('auth.login'))