38 lines
1021 B
Python
38 lines
1021 B
Python
"""
|
|
Authentication utilities and decorators
|
|
"""
|
|
|
|
from functools import wraps
|
|
from flask import session, flash, redirect, url_for, current_app
|
|
|
|
|
|
def login_required(f):
|
|
"""Decorator to require login for route access"""
|
|
@wraps(f)
|
|
def decorated_function(*args, **kwargs):
|
|
if 'logged_in' not in session:
|
|
flash('Please log in to access this page.')
|
|
return redirect(url_for('auth.login'))
|
|
return f(*args, **kwargs)
|
|
return decorated_function
|
|
|
|
|
|
def check_credentials(username, password):
|
|
"""Check if provided credentials are valid"""
|
|
return (username == current_app.config['ADMIN_USERNAME'] and
|
|
password == current_app.config['ADMIN_PASSWORD'])
|
|
|
|
|
|
def login_user():
|
|
"""Log in the user by setting session"""
|
|
session['logged_in'] = True
|
|
|
|
|
|
def logout_user():
|
|
"""Log out the user by clearing session"""
|
|
session.pop('logged_in', None)
|
|
|
|
|
|
def is_authenticated():
|
|
"""Check if current user is authenticated"""
|
|
return 'logged_in' in session |