40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""Auth middleware - Updated for database"""
|
|
|
|
from functools import wraps
|
|
from flask import session, redirect, url_for
|
|
from database.models import User
|
|
|
|
|
|
def login_required(f):
|
|
"""Require login for view"""
|
|
@wraps(f)
|
|
def decorated_function(*args, **kwargs):
|
|
if 'user_id' not in session:
|
|
return redirect(url_for('auth.login', next=request.url))
|
|
|
|
# Verify user still exists
|
|
user = User.query.get(session['user_id'])
|
|
if not user:
|
|
session.clear()
|
|
return redirect(url_for('auth.login'))
|
|
|
|
return f(*args, **kwargs)
|
|
return decorated_function
|
|
|
|
|
|
def setup_auth(app):
|
|
"""Setup auth for Flask app"""
|
|
|
|
@app.before_request
|
|
def before_request():
|
|
"""Before each request - update session user info"""
|
|
if 'user_id' in session:
|
|
user = User.query.get(session['user_id'])
|
|
if user:
|
|
# Sync session data
|
|
session['username'] = user.username
|
|
session['is_admin'] = user.is_admin
|
|
else:
|
|
# User was deleted
|
|
session.clear()
|