django-chelseru 1.0.5__py3-none-any.whl → 1.0.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,312 @@
1
+ Metadata-Version: 2.4
2
+ Name: django-chelseru
3
+ Version: 1.0.7
4
+ Summary: Authentication system, online and real-time chat, SMS system for Iranian SMS services.
5
+ Home-page: https://pipdjango.chelseru.com
6
+ Author: Sobhan Bahman|Rashnu
7
+ Author-email: bahmanrashnu@gmail.com
8
+ Project-URL: Documentation, https://github.com/Chelseru/django-chelseru-lour/
9
+ Project-URL: Telegram Group, https://t.me/bahmanpy
10
+ Project-URL: Telegram Channel, https://t.me/ChelseruCom
11
+ Keywords: djangochelseruchat djangochat drfchat online-chat online real-time chat iran chelseru lor lur bahman rashnu lour sms djangoauth auth ywt otpauth otp authentication djangootp djangoiransms iransms djangosms djangokavenegar djangomelipayamak sobhan چت سبحان بهمن رشنو چلسرو جنگو پایتون لر لور آنلاین ریل تایم
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Framework :: Django
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Requires-Python: >=3.11
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: Django>=5.1.6
20
+ Requires-Dist: djangorestframework==3.15.2
21
+ Requires-Dist: djangorestframework_simplejwt==5.5.0
22
+ Requires-Dist: channels==4.2.2
23
+ Requires-Dist: channels_redis==4.2.1
24
+ Requires-Dist: daphne==4.1.2
25
+ Requires-Dist: zeep==4.3.1
26
+ Requires-Dist: user-agents==2.2.0
27
+ Dynamic: author
28
+ Dynamic: author-email
29
+ Dynamic: classifier
30
+ Dynamic: description
31
+ Dynamic: description-content-type
32
+ Dynamic: home-page
33
+ Dynamic: keywords
34
+ Dynamic: license-file
35
+ Dynamic: project-url
36
+ Dynamic: requires-dist
37
+ Dynamic: requires-python
38
+ Dynamic: summary
39
+
40
+ # django-chelseru
41
+
42
+ بستهٔ جنگویی برای **گپ‌زنی همزمان (WebSocket)**، **راستی‌آزمایی پیامکی (OTP)** و **فرستادن پیامک** با یاری‌دهنده‌های ایرانی.
43
+
44
+ **نویسنده:** Sobhan Bahman Rashnu
45
+
46
+ ---
47
+
48
+ ## فهرست مطالب
49
+
50
+ - [ویژگی‌ها](#ویژگیها)
51
+ - [نصب](#نصب)
52
+ - [پیش‌نیازها و افزودن به تنظیمات](#پیشنیازها-و-افزودن-به-تنظیمات)
53
+ - [پیکربندی](#پیکربندی)
54
+ - [تعریف آدرس‌ها (URLs)](#تعریف-آدرسها-urls)
55
+ - [نقطه‌های پایانی API](#نقطههای-پایانی-api)
56
+ - [/api/otp/send/ — فرستادن رمز یک‌بارمصرف](#apiotpsend--فرستادن-رمز-یکبارمصرف)
57
+ - [/api/authenticate/ — راستی‌آزمایی با OTP و دریافت JWT](#apiauthenticate--راستیآزمایی-با-otp-و-دریافت-jwt)
58
+ - [/api/message/send/ — فرستادن پیامک](#apimessagesend--فرستادن-پیامک)
59
+ - [/api/sessions/ — فهرست نشست‌های فعال](#apisessions--فهرست-نشستهای-فعال)
60
+ - [مدل‌ها](#مدلها)
61
+
62
+ ---
63
+
64
+ ## ویژگی‌ها
65
+
66
+ - 📱 **راستی‌آزمایی پیامکی (OTP):** تولید و فرستادن رمز یک‌بارمصرف و اعتبارسنجی امن.
67
+ - 💬 **گپ‌زنی همزمان:** پیام‌رسانی همزمان بر پایهٔ **WebSocket/Channels**.
68
+ - ✉️ **فرستادن پیامک:** پشتیبانی از یاری‌دهنده‌های نام‌آشنای ایرانی.
69
+
70
+ ---
71
+
72
+ ## نصب
73
+
74
+ ```bash
75
+ pip install django-chelseru
76
+ ```
77
+
78
+ ---
79
+
80
+ ## پیش‌نیازها و افزودن به تنظیمات
81
+
82
+ `INSTALLED_APPS` را در `settings.py` به‌روز کنید:
83
+
84
+ ```python
85
+ INSTALLED_APPS = [
86
+ # ...
87
+ 'channels',
88
+ 'rest_framework',
89
+ 'rest_framework_simplejwt',
90
+ 'drfchelseru',
91
+ # ...
92
+ ]
93
+ ```
94
+
95
+ > نکته: برای قابلیت‌های همزمان (WebSocket) پروژهٔ شما باید با **ASGI** اجرا شود (مانند `daphne` یا `uvicorn`).
96
+
97
+ ---
98
+
99
+ ## پیکربندی
100
+
101
+ واژه‌نامهٔ `DJANGO_CHELSERU` را در `settings.py` بیفزایید و بر اساس نیاز خود سفارشی‌سازی کنید:
102
+
103
+ ```python
104
+ DJANGO_CHELSERU = {
105
+ 'AUTH': {
106
+ 'AUTH_METHOD': 'OTP', # روش‌های پشتیبانی‌شده: OTP, PASSWD
107
+ 'AUTH_SERVICE': 'rest_framework_simplejwt', # فعلاً: rest_framework_simplejwt
108
+ 'OPTIONS': {
109
+ 'OTP_LENGTH': 8, # پیش‌فرض: 8
110
+ 'OTP_EXPIRE_PER_MINUTES': 4, # پیش‌فرض: 4
111
+ 'OTP_SMS_TEMPLATE_ID': 1, # شناسهٔ قالب پیامکی OTP
112
+ },
113
+ },
114
+ 'SMS': {
115
+ 'SMS_SERVICE': 'PARSIAN_WEBCO_IR', # PARSIAN_WEBCO_IR, MELI_PAYAMAK_COM, KAVENEGAR_COM
116
+ 'SETTINGS': {
117
+ 'PARSIAN_WEBCO_IR_API_KEY': '',
118
+ 'MELI_PAYAMAK_COM_USERNAME': '',
119
+ 'MELI_PAYAMAK_COM_PASSWORD': '',
120
+ 'MELI_PAYAMAK_COM_FROM': '',
121
+ 'KAVENEGAR_COM_API_KEY': 'YOUR_KAVENEGAR_API_KEY',
122
+ 'KAVENEGAR_COM_FROM': 'YOUR_KAVENEGAR_FROM_NUMBER',
123
+ },
124
+ 'TEMPLATES': {
125
+ 'T1': 1,
126
+ 'T2': 2,
127
+ # ...
128
+ },
129
+ },
130
+ }
131
+ ```
132
+
133
+ **راهنما:**
134
+
135
+ - `AUTH_METHOD`: روش راستی‌آزمایی (برای پیامکی از `'OTP'` استفاده کنید).
136
+ - `OTP_LENGTH`: طول رمز یک‌بارمصرف.
137
+ - `OTP_EXPIRE_PER_MINUTES`: مدت اعتبار رمز (به دقیقه).
138
+ - `OTP_SMS_TEMPLATE_ID`: شناسهٔ قالب پیامکی که برای OTP بهره‌گیری می‌شود.
139
+ - `SMS_SERVICE`: انتخاب یاری‌دهندهٔ پیامکی.
140
+ - `SETTINGS`: مقادیر دسترسی یاری‌دهندهٔ انتخاب‌شده.
141
+ - `TEMPLATES`: نگاشت کلیدهای دلخواه به شناسهٔ قالب‌ها.
142
+
143
+ ---
144
+
145
+ ## تعریف آدرس‌ها (URLs)
146
+
147
+ در `urls.py`:
148
+
149
+ ```python
150
+ from django.urls import path, include
151
+
152
+ urlpatterns = [
153
+ # ...
154
+ path('api/', include('drfchelseru.urls')),
155
+ # ...
156
+ ]
157
+ ```
158
+
159
+ ---
160
+
161
+ ## نقطه‌های پایانی API
162
+
163
+ | مسیر | شرح | روش |
164
+ | -------------------- | -------------------------------------------------- | ---- |
165
+ | `/api/otp/send/` | فرستادن رمز یک‌بارمصرف به شمارهٔ همراه | POST |
166
+ | `/api/authenticate/` | راستی‌آزمایی کاربر با OTP و دریافت توکن‌های JWT | POST |
167
+ | `/api/sessions/` | فهرست و مدیریت نشست‌های فعال کاربر (نیازمند احراز) | GET |
168
+ | `/api/message/send/` | فرستادن پیامک با یاری‌دهندهٔ پیکربندی‌شده | POST |
169
+
170
+ ---
171
+
172
+ ### `/api/otp/send/` — فرستادن رمز یک‌بارمصرف
173
+
174
+ **روش:** `POST`\
175
+ **شرح:** یک OTP به شمارهٔ همراه کاربر فرستاده می‌شود.
176
+
177
+ **بدنهٔ درخواست:**
178
+
179
+ | فیلد | نوع | شرح | نمونه |
180
+ | --------------- | ----- | ------------------ | ------------- |
181
+ | `mobile_number` | `str` | شمارهٔ همراه کاربر | `09121234567` |
182
+
183
+ **نمونهٔ درخواست:**
184
+
185
+ ```http
186
+ POST /api/otp/send/ HTTP/1.1
187
+ Content-Type: application/json
188
+
189
+ {
190
+ "mobile_number": "09121234567"
191
+ }
192
+ ```
193
+
194
+ **پاسخ‌های ممکن:**
195
+
196
+ - `200 OK`
197
+ ```json
198
+ { "details": "The OTP code was sent correctly." }
199
+ ```
200
+ - `400 Bad Request` — ساختار نادرست `mobile_number`
201
+ - `409 Conflict`
202
+ ```json
203
+ { "details": "An OTP code has already been sent. Please wait X seconds before trying again." }
204
+ ```
205
+ - `500 Internal Server Error` — خطا در کارگذار
206
+
207
+ ---
208
+
209
+ ### `/api/authenticate/` — راستی‌آزمایی با OTP و دریافت JWT
210
+
211
+ **روش:** `POST`\
212
+ **شرح:** اعتبارسنجی کاربر با OTP؛ در صورت موفقیت، توکن‌های `access` و `refresh` بازگردانده می‌شود.
213
+
214
+ **بدنهٔ درخواست:**
215
+
216
+ | فیلد | نوع | شرح | نمونه |
217
+ | --------------- | ----- | --------------------------- | ------------- |
218
+ | `mobile_number` | `str` | شمارهٔ همراه کاربر | `09121234567` |
219
+ | `code` | `str` | رمز یک‌بارمصرف دریافت‌شده | `12345678` |
220
+ | `group` | `int` | (اختیاری) شناسهٔ گروه کاربر | `1` |
221
+
222
+ **نمونهٔ درخواست:**
223
+
224
+ ```http
225
+ POST /api/authenticate/ HTTP/1.1
226
+ Content-Type: application/json
227
+
228
+ {
229
+ "mobile_number": "09121234567",
230
+ "code": "12345678",
231
+ "group": 1
232
+ }
233
+ ```
234
+
235
+ **پاسخ‌های ممکن:**
236
+
237
+ - `200 OK`
238
+ ```json
239
+ { "access": "...", "refresh": "..." }
240
+ ```
241
+ - `401 Unauthorized`
242
+ ```json
243
+ { "error": "The code sent to this mobile number was not found." }
244
+ ```
245
+ - `400 Bad Request` — فیلدهای الزامی ناپیدا/نامعتبر
246
+ - `500 Internal Server Error` — خطا در کارگذار
247
+
248
+ ---
249
+
250
+ ### `/api/message/send/` — فرستادن پیامک
251
+
252
+ **روش:** `POST`\
253
+ **شرح:** فرستادن پیامک سفارشی با یاری‌دهندهٔ پیکربندی‌شده.
254
+
255
+ **بدنهٔ درخواست:**
256
+
257
+ | فیلد | نوع | شرح | نمونه |
258
+ | --------------- | ----- | ---------------------------------------------- | --------------- |
259
+ | `mobile_number` | `str` | شمارهٔ همراه گیرنده | `09121234567` |
260
+ | `message_text` | `str` | متن پیام (حداکثر ۲۹۰ نویسه) | `Hello, World!` |
261
+ | `template_id` | `int` | (برای برخی یاری‌دهنده‌ها مانند پارسیان الزامی) | `1` |
262
+
263
+ **نمونهٔ درخواست:**
264
+
265
+ ```http
266
+ POST /api/message/send/ HTTP/1.1
267
+ Content-Type: application/json
268
+
269
+ {
270
+ "mobile_number": "09121234567",
271
+ "message_text": "Hello, World!",
272
+ "template_id": 1
273
+ }
274
+ ```
275
+
276
+ **پاسخ‌های ممکن:**
277
+
278
+ - `200 OK`
279
+ ```json
280
+ { "details": "The Message was sent correctly." }
281
+ ```
282
+ - `400 Bad Request` — خطاهای اعتبارسنجی فیلدها
283
+ - `401 Unauthorized` — احراز انجام نشده
284
+ - `500 Internal Server Error` — خطا در کارگذار
285
+ - `502 Bad Gateway` — خطای بازگشتی از یاری‌دهندهٔ پیامکی
286
+
287
+ ---
288
+
289
+ ### `/api/sessions/` — فهرست نشست‌های فعال
290
+
291
+ **روش:** `GET`\
292
+ **شرح:** همهٔ نشست‌های فعال کاربر را برمی‌گرداند. نیازمند **احراز هویت** (`IsAuthenticated`).
293
+
294
+ **سربرگ‌های لازم:**
295
+
296
+ | سربرگ | مقدار |
297
+ | --------------- | ---------------------------- |
298
+ | `Authorization` | `Bearer <your_access_token>` |
299
+
300
+ **نمونهٔ درخواست:**
301
+
302
+ ```http
303
+ GET /api/sessions/ HTTP/1.1
304
+ Authorization: Bearer <your_access_token>
305
+ ```
306
+
307
+ ---
308
+
309
+ ## مدل‌ها
310
+
311
+ این بسته یک مدل **Session** برای مدیریت نشست‌های فعال کاربران فراهم می‌کند.\
312
+ از طریق نقطهٔ پایانی `/api/sessions/` می‌توانید نشست‌ها را مشاهده/مدیریت کنید.
@@ -1,11 +1,11 @@
1
- django_chelseru-1.0.5.dist-info/licenses/LICENSE,sha256=VupU5KV4NteHaNQb-WH31G_WZWezxXoomjiCIAHoQJo,1089
1
+ django_chelseru-1.0.7.dist-info/licenses/LICENSE,sha256=VupU5KV4NteHaNQb-WH31G_WZWezxXoomjiCIAHoQJo,1089
2
2
  drfchelseru/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  drfchelseru/admin.py,sha256=8X67Sy8k5qQzZ4ifuJ_5O-UqVWby4uX53Iq-KNuODxM,948
4
4
  drfchelseru/apps.py,sha256=hOTTzFGLXiTPZeN8p_LLcSECLtsR2Q0SUo8zJzgM-qQ,211
5
5
  drfchelseru/consumers.py,sha256=x64hPCd5FViFsFMyDIcxPOh2OWVpeNq1BaOdhYk0HUI,2620
6
6
  drfchelseru/middlewares.py,sha256=adrhoJE7uo4WISfSIXK41XMQQzMaBshq3r61RblMPAQ,2570
7
- drfchelseru/models.py,sha256=ssPPFNp2omohsvw9PCwFupo-MXFv4FWR4UsBxH9udPw,6361
8
- drfchelseru/routing.py,sha256=SEWMBmRFZs1NkKLuppXpmvRmyWiTY3KVIHmA4EpUyyI,167
7
+ drfchelseru/models.py,sha256=9Wa-_Xk28zpFQ4HoRbQdcboZpjUFqxKHpZd05Vx8xXs,6296
8
+ drfchelseru/routing.py,sha256=shAlgzcIwVuVPlvKeWBLCqr6PuBTHyIrWNgHEfnqrxg,165
9
9
  drfchelseru/serializers.py,sha256=tM7dN362Vdx0UXq6OfNmYh6rTN1bwFoEgOn1MG4CZIY,1299
10
10
  drfchelseru/services.py,sha256=FkJlsFtTSiwwQ6g-nkSuV8XvY-dX-abAY_0WGbD0Ppw,10139
11
11
  drfchelseru/settings.py,sha256=ksiuFgjf1HZC6dajQXEra67WyUH6vYqjcQT81NdhELw,9051
@@ -26,7 +26,7 @@ drfchelseru/migrations/0009_alter_chatroom_status.py,sha256=QaAEUpERV8rnN-ifimA-
26
26
  drfchelseru/migrations/0010_chatroom_banneds_chatroom_descriptions_chatroom_name_and_more.py,sha256=aeotKPmdFJSjeA2-9VGApLfpx-NJkOrRJI2j2mdkf1U,1198
27
27
  drfchelseru/migrations/0011_alter_chatroom_user_1_alter_chatroom_user_2.py,sha256=9R66LzIujkh_4BpWtobpOvx3NALsMKUmtI5GDZXoSxQ,971
28
28
  drfchelseru/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- django_chelseru-1.0.5.dist-info/METADATA,sha256=W0SPfo8dGr3MCo31Qv9_nkSBlDlhBdMQCRjNhdbRddM,9671
30
- django_chelseru-1.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
- django_chelseru-1.0.5.dist-info/top_level.txt,sha256=fsaO1F03W3j4AYi0TfDGv5Cjb_Qrh6RSkwkWqfqaMns,12
32
- django_chelseru-1.0.5.dist-info/RECORD,,
29
+ django_chelseru-1.0.7.dist-info/METADATA,sha256=j4E0jhdk4vn4nXDFIMzpDW7qD-1L8Qg0Al_3kjFMdjQ,10933
30
+ django_chelseru-1.0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
+ django_chelseru-1.0.7.dist-info/top_level.txt,sha256=fsaO1F03W3j4AYi0TfDGv5Cjb_Qrh6RSkwkWqfqaMns,12
32
+ django_chelseru-1.0.7.dist-info/RECORD,,
drfchelseru/models.py CHANGED
@@ -152,7 +152,7 @@ class ChatRoom(models.Model):
152
152
  created_at = models.DateTimeField(auto_now_add=True)
153
153
 
154
154
  def __str__(self):
155
- return f"ID: {self.id} | Chat between {self.user_1.username} and {self.user_2.username}"
155
+ return f"ID: {self.id}"
156
156
 
157
157
 
158
158
  class MessageChat(models.Model):
drfchelseru/routing.py CHANGED
@@ -2,5 +2,5 @@ from django.urls import re_path
2
2
  from . import consumers
3
3
 
4
4
  websocket_urlpatterns = [
5
- re_path(r'ws/chat/(?P<chat_room_id>\d+)/$', consumers.ChatConsumer.as_asgi()),
6
- ]
5
+ re_path(r'chat/(?P<chat_room_id>\d+)/$', consumers.ChatConsumer.as_asgi()),
6
+ ]
@@ -1,316 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: django-chelseru
3
- Version: 1.0.5
4
- Summary: Authentication system, online and real-time chat, SMS system for Iranian SMS services.
5
- Home-page: https://pipdjango.chelseru.com
6
- Author: Sobhan Bahman|Rashnu
7
- Author-email: bahmanrashnu@gmail.com
8
- Project-URL: Documentation, https://github.com/Chelseru/django-chelseru-lour/
9
- Project-URL: Telegram Group, https://t.me/bahmanpy
10
- Project-URL: Telegram Channel, https://t.me/ChelseruCom
11
- Keywords: djangochelseruchat djangochat drfchat online-chat online real-time chat iran chelseru lor lur bahman rashnu lour sms djangoauth auth ywt otpauth otp authentication djangootp djangoiransms iransms djangosms djangokavenegar djangomelipayamak sobhan چت سبحان بهمن رشنو چلسرو جنگو پایتون لر لور آنلاین ریل تایم
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Framework :: Django
14
- Classifier: License :: OSI Approved :: MIT License
15
- Classifier: Operating System :: OS Independent
16
- Requires-Python: >=3.11
17
- Description-Content-Type: text/markdown
18
- License-File: LICENSE
19
- Requires-Dist: Django>=5.1.6
20
- Requires-Dist: djangorestframework==3.15.2
21
- Requires-Dist: djangorestframework_simplejwt==5.5.0
22
- Requires-Dist: channels==4.2.2
23
- Requires-Dist: channels_redis==4.2.1
24
- Requires-Dist: daphne==4.1.2
25
- Requires-Dist: zeep==4.3.1
26
- Requires-Dist: user-agents==2.2.0
27
- Dynamic: author
28
- Dynamic: author-email
29
- Dynamic: classifier
30
- Dynamic: description
31
- Dynamic: description-content-type
32
- Dynamic: home-page
33
- Dynamic: keywords
34
- Dynamic: license-file
35
- Dynamic: project-url
36
- Dynamic: requires-dist
37
- Dynamic: requires-python
38
- Dynamic: summary
39
-
40
- django-chelseru
41
- یک بسته جنگویی برای گپ‌زنی همزمان، راستی‌آزمایی پیامکی و فرستادن پیامک با یاری‌دهنده‌های ایرانی.
42
-
43
- نویسنده
44
- Sobhan Bahman Rashnu
45
-
46
- 🚀 ویژگی‌ها
47
- 📱 راستی‌آزمایی پیامکی (رمز یک‌بارمصرف): راستی‌آزمایی امن کاربران با یاری‌گیری از رمزهای یک‌بارمصرف که از راه پیامک فرستاده می‌شوند.
48
-
49
- 💬 گپ‌زنی همزمان: کارکرد پیام‌رسانی همزمان بر پایه WebSocket.
50
-
51
- ✉️ سامانه‌های پیامکی: فرستادن پیامک از راه یاری‌دهنده‌های نامور پیامکی ایرانی.
52
-
53
- ⚙️ نصب
54
- بسته را با یاری‌گیری از pip نصب کنید:
55
-
56
- pip install django-chelseru
57
-
58
- 'drfchelseru' را به INSTALLED_APPS در پرونده settings.py خود بیفزایید:
59
-
60
- INSTALLED_APPS = [
61
- ...
62
- 'channels',
63
- 'rest_framework',
64
- 'rest_framework_simplejwt',
65
- 'drfchelseru',
66
- ...
67
- ]
68
-
69
- 🛠️ پیکربندی
70
- برای پیکربندی بسته، واژه‌نامه DJANGO_CHELSERU را به پرونده settings.py خود بیفزایید. این واژه‌نامه به شما پروانه می‌دهد تا چیدمان‌های راستی‌آزمایی و پیامک را خودساخته نمایید.
71
-
72
- # settings.py
73
-
74
- DJANGO_CHELSERU = {
75
- 'AUTH': {
76
- 'AUTH_METHOD' : 'OTP', # روش‌های پشتیبانی شده: OTP, PASSWD
77
- 'AUTH_SERVICE' : 'rest_framework_simplejwt', # سرویس‌های پشتیبانی شده: rest_framework_simplejwt
78
- 'OPTIONS': {
79
- 'OTP_LENGTH' : 8, # پیش‌فرض: 8
80
- 'OTP_EXPIRE_PER_MINUTES': 4, # پیش‌فرض: 4
81
- 'OTP_SMS_TEMPLATE_ID' : 1, # شناسه قالب پیامکی برای رمز یک‌بارمصرف
82
- }
83
- },
84
- 'SMS': {
85
- 'SMS_SERVICE': 'PARSIAN_WEBCO_IR', # یاری‌دهنده‌های پشتیبانی شده: PARSIAN_WEBCO_IR, MELI_PAYAMAK_COM, KAVENEGAR_COM
86
- 'SETTINGS': {
87
- 'PARSIAN_WEBCO_IR_API_KEY' : '',
88
- 'MELI_PAYAMAK_COM_USERNAME' : '',
89
- 'MELI_PAYAMAK_COM_PASSWORD' : '',
90
- 'MELI_PAYAMAK_COM_FROM' : '',
91
- 'KAVENEGAR_COM_API_KEY' : 'YOUR_KAVENEGAR_API_KEY',
92
- 'KAVENEGAR_COM_FROM' : 'YOUR_KAVENEGAR_FROM_NUMBER',
93
- },
94
- 'TEMPLATES': {
95
- 'T1': 1,
96
- 'T2': 2,
97
- ...
98
- }
99
- }
100
- }
101
-
102
- AUTH_METHOD: روش راستی‌آزمایی را روشن می‌سازد. برای راستی‌آزمایی پیامکی، از 'OTP' بهره بگیرید.
103
-
104
- OTP_LENGTH: درازای رمز یک‌بارمصرف.
105
-
106
- OTP_EXPIRE_PER_MINUTES: زمان پایان‌یافتن رمز یک‌بارمصرف بر پایه دقیقه.
107
-
108
- OTP_SMS_TEMPLATE_ID: شناسه قالب پیامکی که برای فرستادن رمز یک‌بارمصرف بهره گرفته می‌شود.
109
-
110
- SMS_SERVICE: یاری‌دهنده پیامکی دلخواه خود را برگزینید.
111
-
112
- SETTINGS: آگاهی‌های نیاز برای یاری‌دهنده پیامکی برگزیده‌تان را فراهم آورید.
113
-
114
- TEMPLATES: شناسه‌های قالب پیامکی خود را روشن سازید.
115
-
116
- 🔌 نقطه‌های پایانی
117
- برای به کارگیری کارکردهای این بسته، URLهای زیر را به پرونده urls.py خود بیفزایید.
118
-
119
- # urls.py
120
-
121
- from django.urls import path, include
122
-
123
- urlpatterns = [
124
- ...
125
- path('api/', include('drfchelseru.urls')),
126
- ...
127
- ]
128
-
129
- این بسته نقطه‌های پایانی API زیر را فراهم می‌آورد:
130
-
131
- نقطه‌ پایانی
132
-
133
- شرح
134
-
135
- روش
136
-
137
- /api/otp/send/
138
-
139
- یک رمز یک‌بارمصرف به شماره همراه گفته‌شده می‌فرستد.
140
-
141
- POST
142
-
143
- /api/authenticate/
144
-
145
- کاربری را با رمز یک‌بارمصرف دریافت‌شده، راستی‌آزمایی می‌کند.
146
-
147
- POST
148
-
149
- /api/sessions/
150
-
151
- نشست‌های فعال کاربر را فهرست کرده و درایوری می‌کند.
152
-
153
- GET
154
-
155
- /api/message/send/
156
-
157
- یک پیامک با یاری‌دهنده پیکربندی‌شده می‌فرستد.
158
-
159
- POST
160
-
161
- به کارگیری نقطه‌های پایانی
162
- 1. فرستادن رمز یک‌بارمصرف (/api/otp/send/)
163
- روش: POST شرح: یک رمز یک‌بارمصرف به شماره همراه کاربر می‌فرستد.
164
-
165
- داده‌نماهای نیاز:
166
-
167
- داده‌نما
168
-
169
- گونه
170
-
171
- شرح
172
-
173
- نمونه
174
-
175
- mobile_number
176
-
177
- str
178
-
179
- شماره همراه کاربر.
180
-
181
- 09121234567
182
-
183
- پاسخ‌ها:
184
-
185
- HTTP 200 OK: رمز یک‌بارمصرف با کامیابی فرستاده شد.
186
-
187
- {"details": "The OTP code was sent correctly."}
188
-
189
- HTTP 400 BAD REQUEST: ساختار نادرست mobile_number.
190
-
191
- HTTP 409 CONFLICT: یک رمز یک‌بارمصرف پیش‌تر فرستاده شده و هنوز روایی دارد.
192
-
193
- {"details": "An OTP code has already been sent. Please wait X seconds before trying again."}
194
-
195
- HTTP 500 INTERNAL SERVER ERROR: یک دشواری در کارگذار پیش آمده است.
196
-
197
- 2. راستی‌آزمایی (/api/authenticate/)
198
- روش: POST شرح: کاربر را با رمز یک‌بارمصرف فراهم شده، راستی‌آزمایی می‌کند. اگر با کامیابی انجام شود، توکن‌های JWT (access و refresh) را بازمی‌گرداند.
199
-
200
- داده‌نماهای نیاز:
201
-
202
- داده‌نما
203
-
204
- گونه
205
-
206
- شرح
207
-
208
- نمونه
209
-
210
- mobile_number
211
-
212
- str
213
-
214
- شماره همراه کاربر.
215
-
216
- 09121234567
217
-
218
- code
219
-
220
- str
221
-
222
- رمز یک‌بارمصرف دریافت شده از راه پیامک.
223
-
224
- 12345678
225
-
226
- group
227
-
228
- int
229
-
230
- اختیاری: یک شناسه دسته برای کاربر.
231
-
232
- 1
233
-
234
- پاسخ‌ها:
235
-
236
- HTTP 200 OK: راستی‌آزمایی با کامیابی انجام شد.
237
-
238
- {
239
- "access": "...",
240
- "refresh": "..."
241
- }
242
-
243
- HTTP 401 UNAUTHORIZED: رمز یک‌بارمصرف ناروا یا پایان‌یافته.
244
-
245
- {"error": "The code sent to this mobile number was not found."}
246
-
247
- HTTP 400 BAD REQUEST: داده‌نماهای نیاز ناپیدا یا ساختار نادرست.
248
-
249
- HTTP 500 INTERNAL SERVER ERROR: یک دشواری در کارگذار پیش آمده است.
250
-
251
- 3. فرستادن پیامک (/api/message/send/)
252
- روش: POST شرح: یک پیامک خودساخته را با یاری‌دهنده پیکربندی‌شده می‌فرستد.
253
-
254
- داده‌نماهای نیاز:
255
-
256
- داده‌نما
257
-
258
- گونه
259
-
260
- شرح
261
-
262
- نمونه
263
-
264
- mobile_number
265
-
266
- str
267
-
268
- شماره همراه گیرنده.
269
-
270
- 09121234567
271
-
272
- message_text
273
-
274
- str
275
-
276
- نوشتار پیام. (بیشینه ۲۹۰ نویسه)
277
-
278
- Hello, World!
279
-
280
- template_id
281
-
282
- int
283
-
284
- برای برخی یاری‌دهنده‌ها (برای نمونه پارسیان) نیاز است.
285
-
286
- 1
287
-
288
- پاسخ‌ها:
289
-
290
- HTTP 200 OK: پیام با کامیابی فرستاده شد.
291
-
292
- {"details": "The Message was sent correctly."}
293
-
294
- HTTP 400 BAD REQUEST: دشواری‌های درست‌سنجی برای داده‌نماها.
295
-
296
- HTTP 401 UNAUTHORIZED: راستی‌آزمایی انجام نشد.
297
-
298
- HTTP 500 INTERNAL SERVER ERROR: یک دشواری در کارگذار پیش آمده است.
299
-
300
- HTTP 502 BAD GATEWAY: یاری‌دهنده پیامکی یک دشواری را بازگرداند.
301
-
302
- 4. فهرست نشست‌ها (/api/sessions/)
303
- روش: GET شرح: همه نشست‌های فعال کاربران را فهرست می‌کند. نیاز به راستی‌آزمایی (IsAuthenticated) دارد.
304
-
305
- سربرگ‌های نیاز:
306
-
307
- سربرگ
308
-
309
- ارزش
310
-
311
- Authorization
312
-
313
- Bearer <your_access_token>
314
-
315
- 💡 مدل‌ها
316
- این بسته یک مدل Session برای درایوری نشست‌های فعال کاربران دارد. می‌توانید به این نشست‌ها از راه نقطه‌ پایانی /api/sessions/ دسترسی یافته و آنها را درایوری کنید.