المصادقة
تتضمن DYPAI نظام مصادقة كاملاً جاهزاً. تسجيل المستخدمين وتسجيل الدخول والجلسات والأدوار و JWT — كلها تُدار لك.
اختيار نمط المصادقة
غير متأكد إن كنت تحتاج تسجيلاً مفتوحاً أو بدعوة فقط أو OAuth؟ انظر تدفقات المصادقة.
طرق المصادقة
البريد وكلمة المرور
تسجيل وتسجيل دخول قياسيان مع تأكيد البريد وإعادة تعيين كلمة المرور.
مزوّدو OAuth
تسجيل دخول اجتماعي بالمزوّدين الذين تفعّلهم تحت Auth → Providers.
بدون كلمة مرور (OTP)
سجّل الدخول برمز يُرسل عبر البريد أو SMS. لا حاجة لكلمة مرور.
أقسام لوحة التحكم
تُنظَّم منطقة Authentication (Build → Authentication) في بضعة أقسام فرعية:
| القسم | ماذا يفعل |
|---|---|
| Users | تصفّح مستخدمي تطبيقك وإنشاؤهم ودعوتهم وإدارتهم. |
| Roles | عرّف أدواراً مخصصة وعيّنها للمستخدمين. |
| Providers | فعّل تسجيل الدخول الاجتماعي/OAuth واضبطه (Client ID + Secret لكل مزوّد). |
| قوالب البريد والمرسل المستخدم للتأكيد والاستعادة والدعوات. | |
| SMS | اضبط مزوّد SMS لتسجيل الدخول بـ OTP الهاتف. |
| Settings | بدّل التسجيل وتأكيد البريد وسلوكيات المصادقة الأخرى. |
استخدام المصادقة مع SDK
المصادقة مضمّنة في SDK — لا حاجة لـ endpoints:
import { createClient } from '@dypai-ai/client-sdk'
const dypai = createClient('https://YOUR_PROJECT_ID.dypai.app')
// Sign up
const { error } = await dypai.auth.signUp({ email, password })
// Sign in
const { error } = await dypai.auth.signInWithPassword({ email, password })
// OAuth
await dypai.auth.signInWithOAuth('google')
// Sign out
await dypai.auth.signOut()
// The SDK auto-attaches JWT to all API calls
const { data } = await dypai.api.get('list_products')
خطافات React
import { useAuth } from '@dypai-ai/client-sdk/react'
function LoginPage() {
const { signIn, isLoading, isAuthenticated } = useAuth()
const handleSubmit = async (email, password) => {
const { error } = await signIn(email, password)
if (error) setError(error.message)
}
}
| Parameter | Type | Description |
|---|---|---|
signIn(email, password) | async | تسجيل دخول بالبريد وكلمة المرور |
signUp(email, password, data?) | async | تسجيل مستخدم جديد. يعيد confirmationRequired إذا كان التحقق من البريد مفعّلاً |
signOut() | async | مسح الجلسة وتسجيل الخروج |
resetPassword(email) | async | إرسال بريد استعادة كلمة المرور |
setPassword(password) | async | تعيين كلمة مرور جديدة (بعد رابط الاستعادة/الدعوة) |
signInWithOAuth(provider) | async | إعادة توجيه إلى مزوّد OAuth (google، github، apple) |
signInWithOtp({ email }) | async | إرسال رابط سحري أو رمز OTP |
isAuthenticated | boolean | ما إذا كان المستخدم مسجّل الدخول |
isLoading | boolean | حالة المصادقة ما زالت تُحمَّل |
user | object | null | المستخدم الحالي (id، email، role) |
كيف تعمل
- يسجّل المستخدم الدخول → يتحقق محرك المصادقة من بيانات الاعتماد → يعيد JWT + رمز تحديث
- يخزّن SDK الرموز ويرفق JWT بكل طلب API تلقائياً
- عندما ينتهي JWT، يجدّده SDK في الخلفية — دون مقاطعة المستخدم
- تتحقق endpoints من دور JWT مقابل قائمة allowed_roles
الأدوار والتحكم في الوصول
الأدوار سلاسل مخصصة تعرّفها (مثلاً admin أو editor أو viewer). لكل endpoint قائمة allowed_roles.
| Parameter | Type | Description |
|---|---|---|
jwt mode | Endpoint | يجب أن يكون المستخدم مسجّل الدخول + يجب أن يكون دوره في allowed_roles |
api_key mode | Endpoint | يتطلب ترويسة X-API-KEY. من خادم إلى خادم، وليس للمتصفح |
public mode | Endpoint | لا مصادقة مطلوبة. فقط للبيانات العامة للقراءة فقط |
إنشاء الأدوار
أنشئ الأدوار من لوحة التحكم (Auth → Roles) أو عبر MCP:
"Create an admin role with manage_users permission"
تعيين الأدوار للمستخدمين
عيّن من لوحة التحكم (Auth → Users) أو عبر MCP:
"Assign the editor role to user@example.com"
إعداد OAuth
كل مزوّد OAuth يحتاج Client ID + Secret مضبوطين تحت Auth → Providers:
| المزوّد | كيف تضبطه |
|---|---|
| أنشئ بيانات اعتماد OAuth في Google Cloud Console | |
| GitHub | أنشئ تطبيق OAuth في GitHub Settings |
| Apple | يتطلب عضوية Apple Developer Program |
فعّل المزوّدين واضبطهم من لوحة التحكم (Auth → Providers) أو عبر MCP بـ app_settings.
فعّل قبل الاستدعاء
يعمل signInWithOAuth(provider) فقط بعد تفعيل المزوّد تحت Auth → Providers. يحتاج OTP الهاتف/SMS (signInWithOtp({ phone })) مزوّد SMS مضبوطاً تحت Auth → SMS.
المصادقة على الخادم: عقدة dypai_auth
لعمليات المصادقة على الخادم داخل سير عملك — إنشاء مستخدمين أو تعيين أدوار أو التحقق من الجلسات من endpoint — استخدم عقدة سير العمل dypai_auth في بنّاء API. تعمل بصلاحيات المحرك، فأبقِ تلك endpoints في وضع jwt (دور المشرف) أو api_key ولا تعرضها للعامة أبداً.