This commit is contained in:
Mateusz Gruszczyński
2026-03-13 11:03:13 +01:00
commit 35571df778
132 changed files with 11197 additions and 0 deletions

0
app/auth/__init__.py Normal file
View File

48
app/auth/routes.py Normal file
View File

@@ -0,0 +1,48 @@
from datetime import datetime
from flask import Blueprint, flash, make_response, redirect, render_template, request, url_for, session
from flask_login import current_user, login_required, login_user, logout_user
from app.forms.auth import LoginForm
from app.extensions import db
from app.models.user import User
bp = Blueprint('auth', __name__, url_prefix='/auth')
@bp.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('dashboard.index'))
form = LoginForm()
response = None
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data.lower()).first()
if user and user.check_password(form.password.data):
if user.is_blocked:
flash('Konto użytkownika jest zablokowane.', 'danger')
else:
login_user(user)
user.last_login_at = datetime.utcnow()
first_company = user.companies()[0] if user.companies() else None
if first_company:
session['current_company_id'] = first_company.id
db.session.commit()
flash('Zalogowano pomyślnie.', 'success')
response = make_response(redirect(request.args.get('next') or url_for('dashboard.index')))
response.set_cookie('theme', user.theme_preference or 'light', max_age=31536000, samesite='Lax')
return response
else:
flash('Błędny login lub hasło.', 'danger')
theme = request.cookies.get('theme', 'light')
return render_template('auth/login.html', form=form, theme=theme)
@bp.route('/logout')
@login_required
def logout():
theme = current_user.theme_preference or request.cookies.get('theme', 'light')
logout_user()
session.pop('current_company_id', None)
flash('Wylogowano.', 'info')
response = make_response(redirect(url_for('auth.login')))
response.set_cookie('theme', theme, max_age=31536000, samesite='Lax')
return response