17 lines
431 B
Python
17 lines
431 B
Python
"""Authentication utilities."""
|
|
from __future__ import annotations
|
|
|
|
from functools import wraps
|
|
|
|
from flask import redirect, session, url_for
|
|
|
|
|
|
def login_required(f):
|
|
"""Decorator to require login for routes."""
|
|
@wraps(f)
|
|
def decorated_function(*args, **kwargs):
|
|
if not session.get("logged_in"):
|
|
return redirect(url_for("auth.login"))
|
|
return f(*args, **kwargs)
|
|
return decorated_function
|