Files
eveAI/eveai_app/views/auth_views.py
2024-04-25 23:25:38 +02:00

47 lines
1.5 KiB
Python

from datetime import datetime as dt, timezone as tz
from flask import request, redirect, url_for, flash, render_template, Blueprint, jsonify, session
from flask_security import login_user, logout_user
from ..models.user import User, Tenant
from .auth_forms import LoginForm
auth_bp = Blueprint('auth_bp', __name__, template_folder='templates')
@auth_bp.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
email = form.email.data
password = form.password.data
remember_me = True if form.remember_me.data else False
user = User.query.filter_by(email=email).first()
tenant = Tenant.query.filter_by(id=user.tenant_id).first()
if user and user.verify_and_update_password(password):
if user.is_active:
login_user(user, remember=remember_me)
next_page = request.args.get('next')
session['tenant_id'] = user.tenant_id
session['tenant_name'] = tenant.name
return redirect(next_page)
else:
flash('Account disabled. Please contact your administrator.', category='error')
else:
flash('Invalid email or password.', category='error')
return render_template('login.html', form=form)
@auth_bp.route('/logout', methods=['POST'])
def logout():
logout_user()
# Clear session data
session.pop('tenant_id', None)
session.pop('tenant_name', None)
return redirect(url_for('/'))