Authentication system, online and real-time chat, SMS system for Iranian SMS services.
Project description
django-chelseru
بستهٔ جنگویی برای گپزنی همزمان (WebSocket)، راستیآزمایی پیامکی (OTP) و فرستادن پیامک با یاریدهندههای ایرانی.
نویسنده: Sobhan Bahman Rashnu
فهرست مطالب
- ویژگیها
- نصب
- پیشنیازها و افزودن به تنظیمات
- پیکربندی
- تعریف آدرسها (URLs)
- نقطههای پایانی API
- مدلها
ویژگیها
- 📱 راستیآزمایی پیامکی (OTP): تولید و فرستادن رمز یکبارمصرف و اعتبارسنجی امن.
- 💬 گپزنی همزمان: پیامرسانی همزمان بر پایهٔ WebSocket/Channels.
- ✉️ فرستادن پیامک: پشتیبانی از یاریدهندههای نامآشنای ایرانی.
نصب
pip install django-chelseru
پیشنیازها و افزودن به تنظیمات
INSTALLED_APPS را در settings.py بهروز کنید:
INSTALLED_APPS = [
# ...
'channels',
'rest_framework',
'rest_framework_simplejwt',
'drfchelseru',
# ...
]
نکته: برای قابلیتهای همزمان (WebSocket) پروژهٔ شما باید با ASGI اجرا شود (مانند
daphneیاuvicorn).
پیکربندی
واژهنامهٔ DJANGO_CHELSERU را در settings.py بیفزایید و بر اساس نیاز خود سفارشیسازی کنید:
DJANGO_CHELSERU = {
'AUTH': {
'AUTH_METHOD': 'OTP', # روشهای پشتیبانیشده: OTP, PASSWD
'AUTH_SERVICE': 'rest_framework_simplejwt', # فعلاً: rest_framework_simplejwt
'OPTIONS': {
'OTP_LENGTH': 8, # پیشفرض: 8
'OTP_EXPIRE_PER_MINUTES': 4, # پیشفرض: 4
'OTP_SMS_TEMPLATE_ID': 1, # شناسهٔ قالب پیامکی OTP
},
},
'SMS': {
'SMS_SERVICE': 'PARSIAN_WEBCO_IR', # PARSIAN_WEBCO_IR, MELI_PAYAMAK_COM, KAVENEGAR_COM
'SETTINGS': {
'PARSIAN_WEBCO_IR_API_KEY': '',
'MELI_PAYAMAK_COM_USERNAME': '',
'MELI_PAYAMAK_COM_PASSWORD': '',
'MELI_PAYAMAK_COM_FROM': '',
'KAVENEGAR_COM_API_KEY': 'YOUR_KAVENEGAR_API_KEY',
'KAVENEGAR_COM_FROM': 'YOUR_KAVENEGAR_FROM_NUMBER',
},
'TEMPLATES': {
'T1': 1,
'T2': 2,
# ...
},
},
}
راهنما:
AUTH_METHOD: روش راستیآزمایی (برای پیامکی از'OTP'استفاده کنید).OTP_LENGTH: طول رمز یکبارمصرف.OTP_EXPIRE_PER_MINUTES: مدت اعتبار رمز (به دقیقه).OTP_SMS_TEMPLATE_ID: شناسهٔ قالب پیامکی که برای OTP بهرهگیری میشود.SMS_SERVICE: انتخاب یاریدهندهٔ پیامکی.SETTINGS: مقادیر دسترسی یاریدهندهٔ انتخابشده.TEMPLATES: نگاشت کلیدهای دلخواه به شناسهٔ قالبها.
تعریف آدرسها (URLs)
در urls.py:
from django.urls import path, include
urlpatterns = [
# ...
path('api/', include('drfchelseru.urls')),
# ...
]
نقطههای پایانی API
| مسیر | شرح | روش |
|---|---|---|
/api/otp/send/ |
فرستادن رمز یکبارمصرف به شمارهٔ همراه | POST |
/api/authenticate/ |
راستیآزمایی کاربر با OTP و دریافت توکنهای JWT | POST |
/api/sessions/ |
فهرست و مدیریت نشستهای فعال کاربر (نیازمند احراز) | GET |
/api/message/send/ |
فرستادن پیامک با یاریدهندهٔ پیکربندیشده | POST |
/api/otp/send/ — فرستادن رمز یکبارمصرف
روش: POST
شرح: یک OTP به شمارهٔ همراه کاربر فرستاده میشود.
بدنهٔ درخواست:
| فیلد | نوع | شرح | نمونه |
|---|---|---|---|
mobile_number |
str |
شمارهٔ همراه کاربر | 09121234567 |
نمونهٔ درخواست:
POST /api/otp/send/ HTTP/1.1
Content-Type: application/json
{
"mobile_number": "09121234567"
}
پاسخهای ممکن:
200 OK{ "details": "The OTP code was sent correctly." }
400 Bad Request— ساختار نادرستmobile_number409 Conflict{ "details": "An OTP code has already been sent. Please wait X seconds before trying again." }
500 Internal Server Error— خطا در کارگذار
/api/authenticate/ — راستیآزمایی با OTP و دریافت JWT
روش: POST
شرح: اعتبارسنجی کاربر با OTP؛ در صورت موفقیت، توکنهای access و refresh بازگردانده میشود.
بدنهٔ درخواست:
| فیلد | نوع | شرح | نمونه |
|---|---|---|---|
mobile_number |
str |
شمارهٔ همراه کاربر | 09121234567 |
code |
str |
رمز یکبارمصرف دریافتشده | 12345678 |
group |
int |
(اختیاری) شناسهٔ گروه کاربر | 1 |
نمونهٔ درخواست:
POST /api/authenticate/ HTTP/1.1
Content-Type: application/json
{
"mobile_number": "09121234567",
"code": "12345678",
"group": 1
}
پاسخهای ممکن:
200 OK{ "access": "...", "refresh": "..." }
401 Unauthorized{ "error": "The code sent to this mobile number was not found." }
400 Bad Request— فیلدهای الزامی ناپیدا/نامعتبر500 Internal Server Error— خطا در کارگذار
/api/message/send/ — فرستادن پیامک
روش: POST
شرح: فرستادن پیامک سفارشی با یاریدهندهٔ پیکربندیشده.
بدنهٔ درخواست:
| فیلد | نوع | شرح | نمونه |
|---|---|---|---|
mobile_number |
str |
شمارهٔ همراه گیرنده | 09121234567 |
message_text |
str |
متن پیام (حداکثر ۲۹۰ نویسه) | Hello, World! |
template_id |
int |
(برای برخی یاریدهندهها مانند پارسیان الزامی) | 1 |
نمونهٔ درخواست:
POST /api/message/send/ HTTP/1.1
Content-Type: application/json
{
"mobile_number": "09121234567",
"message_text": "Hello, World!",
"template_id": 1
}
پاسخهای ممکن:
200 OK{ "details": "The Message was sent correctly." }
400 Bad Request— خطاهای اعتبارسنجی فیلدها401 Unauthorized— احراز انجام نشده500 Internal Server Error— خطا در کارگذار502 Bad Gateway— خطای بازگشتی از یاریدهندهٔ پیامکی
/api/sessions/ — فهرست نشستهای فعال
روش: GET
شرح: همهٔ نشستهای فعال کاربر را برمیگرداند. نیازمند احراز هویت (IsAuthenticated).
سربرگهای لازم:
| سربرگ | مقدار |
|---|---|
Authorization |
Bearer <your_access_token> |
نمونهٔ درخواست:
GET /api/sessions/ HTTP/1.1
Authorization: Bearer <your_access_token>
مدلها
این بسته یک مدل Session برای مدیریت نشستهای فعال کاربران فراهم میکند.
از طریق نقطهٔ پایانی /api/sessions/ میتوانید نشستها را مشاهده/مدیریت کنید.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_chelseru-1.1.7.tar.gz.
File metadata
- Download URL: django_chelseru-1.1.7.tar.gz
- Upload date:
- Size: 27.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0101ea640f415f485f6423bc1123523b4a8a1c31cb802f00ecbac4948d403b46
|
|
| MD5 |
6e53dabfc10bca083809db864f3951d7
|
|
| BLAKE2b-256 |
dffca2acccec2bf8c7c6511b33fe6ea8e2072f707f68b2db1b5d8e82fcf30da0
|
File details
Details for the file django_chelseru-1.1.7-py3-none-any.whl.
File metadata
- Download URL: django_chelseru-1.1.7-py3-none-any.whl
- Upload date:
- Size: 36.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
997c6eab77d6118667f6954823a3fde6475111d4dd5745df4afae8716bb8f7a2
|
|
| MD5 |
4970289aaee49a20a8dcc8b8a45483d8
|
|
| BLAKE2b-256 |
ea246b4b21f321192b06fc05b0ddcec6a559a12317b0510c646aa7d0a0839544
|