Add an admin panel to Flask with Flask-Admin: register models and secure views with is_accessible().
Flask-Admin
pip install flask-admin
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
class SecureModelView(ModelView):
def is_accessible(self):
return current_user.is_authenticated and current_user.is_admin
admin = Admin(app, name="My Admin", template_mode="bootstrap4")
admin.add_view(SecureModelView(User, db.session))
admin.add_view(SecureModelView(Post, db.session, category="Content"))