12 KiB
Executable file
تحلیل بخشها و Endpointهای بدون دسترسی
این فایل شامل لیست بخشها و endpointهای سطح کسب و کار است که:
- دسترسی تعریف نشده دارند (permission check ندارند یا از dependency مناسب استفاده نمیکنند)
- در بخش مدیریت دسترسیها تعریف نشدهاند (بخشها در سیستم permissions تعریف نشدهاند)
بخشهای موجود در سیستم Permissions
بر اساس business_dashboard.py و README.md:
✅ بخشهای تعریف شده:
people: add, view, edit, deletepeople_receipts: add, view, edit, delete, draftpeople_payments: add, view, edit, delete, draftpeople_transactions: add, view, edit, delete, draftproducts: add, view, edit, deleteprice_lists: add, view, edit, deletecategories: add, view, edit, deleteproduct_attributes: add, view, edit, deletebank_accounts: add, view, edit, deletecash: add, view, edit, deletepetty_cash: add, view, edit, deletechecks: add, view, edit, delete, collect, transfer, returnwallet: view, chargetransfers: add, view, edit, delete, draftinvoices: add, view, edit, delete, draftexpenses_income: add, view, edit, delete, draftaccounting_documents: add, view, edit, delete, draftchart_of_accounts: add, view, edit, deleteopening_balance: view, editwarehouses: add, view, edit, deletewarehouse_transfers: add, view, edit, delete, draftsettings: business, print, history, usersstorage: view, deletesms: history, templatesmarketplace: view, buy, invoices
❌ بخشها و Endpointهای بدون دسترسی یا Section نامناسب
1. Accounts (حسابها) - chart_of_accounts
فایل: adapters/api/v1/accounts.py
مشکل:
- ✅ Section
chart_of_accountsدر permissions تعریف شده است - ❌ اما endpointها permission check ندارند - فقط
require_business_accessدارند
Endpointهای نیازمند تغییر:
GET /accounts/business/{business_id}/tree→ نیاز بهchart_of_accounts.viewGET /accounts/business/{business_id}→ نیاز بهchart_of_accounts.viewGET /accounts/business/{business_id}/account/{account_id}→ نیاز بهchart_of_accounts.viewPOST /accounts/business/{business_id}→ نیاز بهchart_of_accounts.view(search)POST /accounts/business/{business_id}→ نیاز بهchart_of_accounts.add(create)PUT /accounts/business/{business_id}/account/{account_id}→ نیاز بهchart_of_accounts.editDELETE /accounts/business/{business_id}/account/{account_id}→ نیاز بهchart_of_accounts.delete
2. Fiscal Years (سالهای مالی)
فایل: adapters/api/v1/fiscal_years.py
مشکل:
- ❌ Section تعریف نشده در permissions
- ❌ endpointها permission check ندارند - فقط
require_business_accessدارند
Endpointهای نیازمند تغییر:
GET /business/{business_id}/fiscal-years→ نیاز به section جدید مثلfiscal_years.viewGET /business/{business_id}/fiscal-years/current→ نیاز به section جدید مثلfiscal_years.view
راهحل پیشنهادی:
- اضافه کردن section
fiscal_yearsبه permissions با actions:view,add,edit,delete
3. Kardex (کاردکس)
فایل: adapters/api/v1/kardex.py
مشکل:
- ❌ Section تعریف نشده در permissions (یا باید
reportsباشد) - ❌ endpointها permission check ندارند - فقط
require_business_accessدارند
Endpointهای نیازمند تغییر:
POST /kardex/businesses/{business_id}/lines→ نیاز بهreports.viewیا section جدید
راهحل پیشنهادی:
- استفاده از section
reportsبا actionviewیا اضافه کردن sectionkardexبا actionview
4. Report Templates (قالبهای گزارش)
فایل: adapters/api/v1/report_templates.py
مشکل:
- ❌ Section
report_templatesدر permissions تعریف نشده - ✅ اما endpointها permission check دارند (از
report_templates.writeاستفاده میکنند)
Endpointهای نیازمند تغییر:
- تمام endpointها از section
report_templatesاستفاده میکنند که باید به permissions اضافه شود
راهحل پیشنهادی:
- اضافه کردن section
report_templatesبه permissions با actions:view,write,delete
5. Business Dashboard (داشبورد کسب و کار)
فایل: adapters/api/v1/business_dashboard.py
مشکل:
- ❌ Section مناسب تعریف نشده
- ❌ endpointها permission check ندارند - فقط
require_business_accessدارند
Endpointهای نیازمند تغییر:
POST /business/{business_id}/dashboard→ احتمالاً نیاز بهreports.viewیا section عمومیPOST /business/{business_id}/info-with-permissions→ نیاز به دسترسی عمومی (همه اعضا میتوانند ببینند)- endpointهای مربوط به widgets → نیاز به
settings.viewیاreports.view
راهحل پیشنهادی:
- استفاده از section
settings.viewبرای داشبورد یا اضافه کردن sectiondashboardبا actionview
6. Business Users (کاربران کسب و کار)
فایل: adapters/api/v1/business_users.py
مشکل:
- ✅ Section
settings.manage_usersدر permissions تعریف شده است - ❌ اما endpointها permission check ندارند - فقط
require_business_accessدارند
Endpointهای نیازمند تغییر:
GET /business/{business_id}/users/{user_id}→ نیاز بهsettings.manage_usersGET /business/{business_id}/users→ نیاز بهsettings.manage_usersPOST /business/{business_id}/users/add→ نیاز بهsettings.manage_usersPOST /business/{business_id}/users/{user_id}/permissions→ نیاز بهsettings.manage_usersDELETE /business/{business_id}/users/{user_id}→ نیاز بهsettings.manage_users
7. Products (محصولات)
فایل: adapters/api/v1/products.py
مشکل:
- ✅ Section
productsدر permissions تعریف شده است - ⚠️ اما از section
inventoryاستفاده میکند (نامناسب)
Endpointهای نیازمند تغییر:
- تمام endpointها باید از section
productsبه جایinventoryاستفاده کنند
Endpointهای نیازمند بررسی:
POST /products/business/{business_id}→ ازinventory.writeاستفاده میکند (بایدproducts.addباشد)- سایر endpointها نیاز به بررسی دارند
8. Warehouses (انبارها)
فایل: adapters/api/v1/warehouses.py
مشکل:
- ✅ Section
warehousesدر permissions تعریف شده است - ⚠️ اما از section
inventoryاستفاده میکند (نامناسب)
Endpointهای نیازمند تغییر:
- تمام endpointها باید از section
warehousesبه جایinventoryاستفاده کنند
9. Warehouse Documents (اسناد انبار)
فایل: adapters/api/v1/warehouse_docs.py
مشکل:
- ✅ Section
warehouse_transfersدر permissions تعریف شده است - ❌ اما endpointها permission check ندارند - فقط
require_business_accessدارند
Endpointهای نیازمند بررسی:
- باید permission check با section مناسب اضافه شود (
warehouse_transfers)
10. Price Lists (لیست قیمتها)
فایل: adapters/api/v1/price_lists.py
مشکل:
- ✅ Section
price_listsدر permissions تعریف شده است - ⚠️ اما از section
inventoryاستفاده میکند (نامناسب)
Endpointهای نیازمند تغییر:
- تمام endpointها باید از section
price_listsبه جایinventoryاستفاده کنند
11. Categories (دستهبندیها)
فایل: adapters/api/v1/categories.py
مشکل:
- ✅ Section
categoriesدر permissions تعریف شده است - ✅ endpointها permission check دارند
وضعیت: ✅ درست است
12. Product Attributes (ویژگیهای محصول)
فایل: adapters/api/v1/product_attributes.py
مشکل:
- ✅ Section
product_attributesدر permissions تعریف شده است - ✅ endpointها permission check دارند
وضعیت: ✅ درست است
13. BOMs (Bill of Materials)
فایل: adapters/api/v1/boms.py
مشکل:
- ✅ Section
productsیاinventoryدر permissions تعریف شده است - ⚠️ اما از section
inventoryاستفاده میکند
Endpointهای نیازمند بررسی:
- احتمالاً باید section جداگانه
bomsداشته باشد یا ازproductsاستفاده کند
خلاصه مشکلات
بخشهای بدون تعریف در Permissions:
- ❌
fiscal_years- سالهای مالی - ❌
report_templates- قالبهای گزارش - ❌
kardex- کاردکس (یا باید ازreportsاستفاده کند) - ❌
dashboard- داشبورد (یا باید ازreportsیاsettingsاستفاده کند)
Endpointهای بدون Permission Check:
- ❌
accounts.py- تمام endpointها - ❌
fiscal_years.py- تمام endpointها - ❌
kardex.py- تمام endpointها - ❌
business_dashboard.py- تمام endpointها - ❌
business_users.py- تمام endpointها - ❌
warehouse_docs.py- تمام endpointها
Endpointهای با Section نامناسب:
- ⚠️
products.py- ازinventoryاستفاده میکند (بایدproductsباشد) - ⚠️
warehouses.py- ازinventoryاستفاده میکند (بایدwarehousesباشد) - ⚠️
price_lists.py- ازinventoryاستفاده میکند (بایدprice_listsباشد) - ⚠️
boms.py- ازinventoryاستفاده میکند (بایدproductsیاbomsباشد)
راهحل پیشنهادی
1. اضافه کردن بخشهای جدید به Permissions:
{
"fiscal_years": {
"view": true,
"add": true,
"edit": true,
"delete": true
},
"report_templates": {
"view": true,
"write": true,
"delete": true
},
"reports": {
"view": true,
"export": true
}
}
2. اضافه کردن Permission Check به Endpointها:
- استفاده از
require_business_permission_depبرای endpointهایی کهbusiness_idدارند - استفاده از
require_business_permission_by_entity_depبرای endpointهایی که entity ID دارند
3. اصلاح Sectionهای نامناسب:
- تغییر از
inventoryبه section مناسب (products,warehouses,price_lists)
اولویتبندی
اولویت بالا (امنیت):
- ✅
accounts.py- دسترسی به حسابها مهم است - ✅
business_users.py- مدیریت کاربران بسیار مهم است - ✅
fiscal_years.py- سالهای مالی مهم هستند
اولویت متوسط:
- ⚠️
warehouse_docs.py- اسناد انبار - ⚠️
kardex.py- کاردکس - ⚠️
business_dashboard.py- داشبورد
اولویت پایین (اصلاح Section):
- 🔧
products.py- تغییر section ازinventoryبهproducts - 🔧
warehouses.py- تغییر section ازinventoryبهwarehouses - 🔧
price_lists.py- تغییر section ازinventoryبهprice_lists