skripsi-jtik-pnj / middleware.py
Bintang Fajar Julio
init
428a607
from flask_login import LoginManager, current_user
from models.user import User
from functools import wraps
from firebase_config import firebase_db
from flask import redirect, url_for
login_manager = LoginManager()
def init_middleware(app):
login_manager.init_app(app)
@login_manager.user_loader
def load_user(id):
user_doc = firebase_db.collection('users').document(id).get()
if user_doc.exists:
user_data = user_doc.to_dict()
return User(id=id, nama=user_data['nama'], email=user_data['email'], role=user_data['role'], registered_at=user_data['registered_at'], inactive=user_data['inactive'])
return None
def role_required(*required_roles):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
if not current_user.is_authenticated or current_user.role not in required_roles:
return redirect(url_for('unauthorized'))
return func(*args, **kwargs)
return wrapper
return decorator