security: restrict model lifecycle endpoints to admins#685
security: restrict model lifecycle endpoints to admins#6852024itb047samata wants to merge 1 commit into
Conversation
|
🎉 Welcome to Hybrid Recommender, @2024itb047samata! This is your first contribution here! Labels added: PR Description Checklist: ✅ PR description looks complete! What happens next:
⏱️ Please respond to review comments within 48 hours. |
|
PR #595 ("Feat: Add personalized user recommendation endpoint with cold-start fallback") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #608 ("Fix startup indentation error") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #610 ("Fix/duplicate domcontentloaded init") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #612 ("Fix/prevent xss category rendering") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #613 ("feat: add diversity and serendipity controls to prevent filter bubble…") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #614 ("perf: precompute top-N recommendations and serve cache from Redis") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #616 ("feat: implement knowledge graph embeddings for semantic item relationships") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #626 ("test: add unit tests for HybridWeightsSchema and ModelHyperparameters…") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #628 ("Fix/admin auth model routes") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #630 ("Fix/GitHub webhook fail closed") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #631 ("Refactor upload validation logic in main.py") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #633 ("Fix/feedback persistence") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #634 ("Add new dependencies to requirements.txt") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #636 ("Refactor forward methods to use standard definition") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #637 ("Fix/rate limit feedback webhook") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #638 ("Refactor forward methods in UserTower and ItemTower") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #647 ("fix(content-model): resolve IndentationError and limit search candidates to top_n") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #649 ("fix(hybrid-model): add missing model_kwargs parameter to constructor") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #651 ("fix(api): add missing request parameter to get_recommendations") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1624 ("feat: Celery task progress tracking and webhook notifications (Issue #1577)") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1625 ("feat: GNN RGCN integration scaffold with knowledge-graph dataset path (Issue #1576)") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1626 ("feat: add A/B testing framework for recommendation algorithm variants…") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1632 ("Add a title * Fix/popularity boost score cap Add a description Comment") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1040 ("fixed: Duplicate PR template files cause Git conflicts on case-insens…") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1527 ("fix(model): fix IndentationError in select_bandit_arm and unindented bandit arm weight assignment") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1633 ("fix: Duplicate results-processing loop removed from search_items(#1631)") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1640 ("fix: resolve hybrid_model merge conflicts and add explanation string") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1641 ("Fix/svd memory leak") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1642 ("Feature/evaluation dashboard") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1643 ("Feature/streamlit tfidf config") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1644 ("Fix/strict csrf origin validation") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1645 ("Feature/svd online updating") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1647 ("fix: add title query param endpoint to resolve HTTP 422 (#1075)") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1648 ("fix(federated): prevent regularization decay in aggregate_updates") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1650 ("fix: remove duplicate code block in hybrid_model.py causing Indentati…") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1653 ("fix: remove duplicate /api/recommend route") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1654 ("build: add faiss dependency for two-tower retrieval") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1655 ("fix: enforce stronger signup password validation") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1660 ("security: reject unissued csrf tokens") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1661 ("feat: add KNN-based user collaborative filtering (Issue #51)") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1665 ("fix: add missing faiss-cpu dependency to requirements.txt ") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1515 ("feat: harden realtime recommendation WebSocket flow") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1668 ("fix(ci): resolve syntax and indentation errors breaking upstream main") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1669 ("feat(rate-limit): implement Token Bucket algorithm for rate-limiting middleware for search API protection") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1676 ("docs: add required Supabase initialization steps to Docker setup guide") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1677 ("fix: implement background cache cleanup to prevent OOM") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1678 ("feat: add recommendation feedback loop support") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
|
PR #1679 ("fix: use gin_trgm_ops for GIN trigram index") was just merged into Please rebase your branch to avoid conflicts: Keeping your branch up to date prevents merge conflicts. 🚀 |
What changed
_require_admin_access()backend/auth.pyauthorization helperProtected endpoints
/api/build/api/weightsWhy
Previously, model lifecycle endpoints were publicly callable without administrative authorization. This created a critical integrity and availability vulnerability where attackers could:
This fix ensures only authorized administrators can perform model training and tuning operations.
How to test
# Start backend server python -m uvicorn backend.main:app --reloadUnauthorized request:
Expected response:
Test weights endpoint:
Expected:
403 ForbiddenChecklist
flake8 .)Related issue
Closes #642
AI assistance disclosure
I used AI assistance for: