Add admin login API and remove hardcoded secrets
- Add token-based admin login/logout/me endpoints - Bootstrap admin from ADMIN_USERNAME/ADMIN_PASSWORD in Docker entrypoint - Read ALLOWED_HOSTS and CORS from env only (no hardcoded server IPs) - Keep docs/Postman/tests free of real credentials - Cover login and auth flows with 31 local API tests Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
111
API_DOCS_FA.md
111
API_DOCS_FA.md
@@ -9,11 +9,12 @@
|
||||
## وضعیت تستها
|
||||
|
||||
```
|
||||
Ran 24 tests — OK (0 failures)
|
||||
Ran 31 tests — OK (0 failures)
|
||||
```
|
||||
|
||||
| تعداد تست | گروه |
|
||||
|-----------|------|
|
||||
| ۷ تست | Admin Login |
|
||||
| ۶ تست | Contact Us |
|
||||
| ۱۱ تست | Compositions |
|
||||
| ۷ تست | Campaigns |
|
||||
@@ -56,9 +57,70 @@ python manage.py test api -v 2
|
||||
|--------|--------|
|
||||
| عمومی — بدون نیاز به ورود | لیست و جزئیات (متد `GET`) |
|
||||
| عمومی — بدون نیاز به ورود | ایجاد (متد `POST`) |
|
||||
| فقط ادمین — نیاز به احراز هویت | ویرایش و حذف (متدهای `PUT`، `PATCH`، `DELETE`) |
|
||||
| فقط ادمین — نیاز به توکن | ویرایش و حذف (متدهای `PUT`، `PATCH`، `DELETE`) |
|
||||
|
||||
برای درخواستهای ادمین در Postman میتوانید از **Basic Auth** با نام کاربری و رمز ادمین استفاده کنید.
|
||||
---
|
||||
|
||||
## ۰. ورود ادمین (Admin Login)
|
||||
|
||||
| مقدار | مورد |
|
||||
|--------|------|
|
||||
| `{{admin_username}}` از env (`ADMIN_USERNAME`) | نام کاربری |
|
||||
| `{{admin_password}}` از env (`ADMIN_PASSWORD`) | رمز عبور |
|
||||
| `{{base_url}}/admin/` | پنل جنگو ادمین |
|
||||
| `POST {{base_url}}/api/admin/login/` | ورود از طریق API |
|
||||
|
||||
> نام کاربری و رمز در کد هاردکد نمیشوند. روی سرور در فایل `.env` تنظیم کنید.
|
||||
|
||||
### ورود و دریافت توکن
|
||||
|
||||
```
|
||||
POST {{base_url}}/api/admin/login/
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"username": "{{admin_username}}",
|
||||
"password": "{{admin_password}}"
|
||||
}
|
||||
```
|
||||
|
||||
**پاسخ نمونه:**
|
||||
|
||||
```json
|
||||
{
|
||||
"token": "<token>",
|
||||
"user": {
|
||||
"id": 1,
|
||||
"username": "<admin_username>",
|
||||
"is_staff": true,
|
||||
"is_superuser": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
در درخواستهای محافظتشده این هدر را بفرستید:
|
||||
|
||||
```
|
||||
Authorization: Token <token>
|
||||
```
|
||||
|
||||
### اطلاعات ادمین فعلی
|
||||
|
||||
```
|
||||
GET {{base_url}}/api/admin/me/
|
||||
Authorization: Token <token>
|
||||
```
|
||||
|
||||
### خروج (حذف توکن)
|
||||
|
||||
```
|
||||
POST {{base_url}}/api/admin/logout/
|
||||
Authorization: Token <token>
|
||||
```
|
||||
|
||||
برای درخواستهای ادمین در Postman، ابتدا login کنید، سپس توکن را در متغیر `admin_token` بگذارید.
|
||||
|
||||
---
|
||||
|
||||
@@ -492,26 +554,29 @@ backend/Zoneco_ORG_API.postman_collection.json
|
||||
|
||||
| دسترسی | Endpoint | Method | # |
|
||||
|--------|----------|--------|---|
|
||||
| عمومی | `/api/contact-us/` | GET | 1 |
|
||||
| عمومی | `/api/contact-us/` | POST | 2 |
|
||||
| عمومی | `/api/contact-us/{id}/` | GET | 3 |
|
||||
| عمومی | `/api/contact-us/by_category/?category=...` | GET | 4 |
|
||||
| ادمین | `/api/contact-us/{id}/` | PUT/PATCH/DELETE | 5 |
|
||||
| عمومی | `/api/compositions/` | GET | 6 |
|
||||
| عمومی | `/api/compositions/` | POST | 7 |
|
||||
| عمومی | `/api/compositions/{id}/` | GET | 8 |
|
||||
| عمومی | `/api/compositions/by-created-at/?from=...&to=...` | GET | 9 |
|
||||
| ادمین | `/api/compositions/{id}/add-images/` | POST | 10 |
|
||||
| ادمین | `/api/compositions/{id}/set-main-image/` | POST | 11 |
|
||||
| ادمین | `/api/compositions/{id}/images/{image_id}/` | DELETE | 12 |
|
||||
| ادمین | `/api/compositions/{id}/` | PUT/PATCH/DELETE | 13 |
|
||||
| عمومی | `/api/campaigns/` | GET | 14 |
|
||||
| عمومی | `/api/campaigns/` | POST | 15 |
|
||||
| عمومی | `/api/campaigns/{id}/` | GET | 16 |
|
||||
| عمومی | `/api/campaigns/active/` | GET | 17 |
|
||||
| عمومی | `/api/campaigns/upcoming/` | GET | 18 |
|
||||
| عمومی | `/api/campaigns/ended/` | GET | 19 |
|
||||
| ادمین | `/api/campaigns/{id}/` | PUT/PATCH/DELETE | 20 |
|
||||
| عمومی | `/api/admin/login/` | POST | 1 |
|
||||
| ادمین | `/api/admin/logout/` | POST | 2 |
|
||||
| ادمین | `/api/admin/me/` | GET | 3 |
|
||||
| عمومی | `/api/contact-us/` | GET | 4 |
|
||||
| عمومی | `/api/contact-us/` | POST | 5 |
|
||||
| عمومی | `/api/contact-us/{id}/` | GET | 6 |
|
||||
| عمومی | `/api/contact-us/by_category/?category=...` | GET | 7 |
|
||||
| ادمین | `/api/contact-us/{id}/` | PUT/PATCH/DELETE | 8 |
|
||||
| عمومی | `/api/compositions/` | GET | 9 |
|
||||
| عمومی | `/api/compositions/` | POST | 10 |
|
||||
| عمومی | `/api/compositions/{id}/` | GET | 11 |
|
||||
| عمومی | `/api/compositions/by-created-at/?from=...&to=...` | GET | 12 |
|
||||
| ادمین | `/api/compositions/{id}/add-images/` | POST | 13 |
|
||||
| ادمین | `/api/compositions/{id}/set-main-image/` | POST | 14 |
|
||||
| ادمین | `/api/compositions/{id}/images/{image_id}/` | DELETE | 15 |
|
||||
| ادمین | `/api/compositions/{id}/` | PUT/PATCH/DELETE | 16 |
|
||||
| عمومی | `/api/campaigns/` | GET | 17 |
|
||||
| عمومی | `/api/campaigns/` | POST | 18 |
|
||||
| عمومی | `/api/campaigns/{id}/` | GET | 19 |
|
||||
| عمومی | `/api/campaigns/active/` | GET | 20 |
|
||||
| عمومی | `/api/campaigns/upcoming/` | GET | 21 |
|
||||
| عمومی | `/api/campaigns/ended/` | GET | 22 |
|
||||
| ادمین | `/api/campaigns/{id}/` | PUT/PATCH/DELETE | 23 |
|
||||
|
||||
> **توجه:** در Postman قبل از هر مسیر، مقدار `{{base_url}}` را قرار دهید.
|
||||
> مثال: `{{base_url}}/api/campaigns/active/`
|
||||
|
||||
Reference in New Issue
Block a user