التخطي إلى المحتوى الرئيسي

Hasura

قبل الدمج، نحتاج إلى نشر Casdoor محليًا.

ثم يمكننا تنفيذ صفحة تسجيل دخول تعتمد على Casdoor في تطبيقنا بسرعة باتباع الخطوات التالية.

تكوين تطبيق Casdoor

  1. إنشاء أو استخدام تطبيق Casdoor موجود.
  2. أضف رابط إعادة توجيه: http://CASDOOR_HOSTNAME/login إعداد تطبيق Casdoor
  3. انسخ معرف العميل؛ سنحتاجه في الخطوات التالية.

أضف مستخدمًا في Casdoor

الآن لديك التطبيق، ولكن ليس مستخدمًا. هذا يعني أنك بحاجة إلى إنشاء مستخدم وتعيين الدور له.

اذهب إلى صفحة "المستخدمين" وانقر على "إضافة مستخدم" في الزاوية العلوية اليمنى. هذا يفتح صفحة جديدة حيث يمكنك إضافة المستخدم الجديد.

صورة توضح صفحة المستخدمين

احفظ المستخدم بعد إضافة اسم المستخدم وإضافة المنظمة Hasura (التفاصيل الأخرى اختيارية).

الآن تحتاج إلى إعداد كلمة مرور لمستخدمك، والتي يمكنك القيام بها بالنقر على "إدارة كلمة المرور الخاصة بك".

اختر كلمة مرور لمستخدمك وقم بتأكيدها.

بناء تطبيق Hasura

ابدأ Hasura بواسطة Docker أو Hasura Cloud.

الآن قم بإنشاء جدول users بالأعمدة التالية:

  • id من نوع نص (المفتاح الأساسي)
  • username من نوع نص

راجع الصورة أدناه للمرجع.

صورة توضح كيفية إنشاء جدول في Hasura

الخطوة التالية هي إنشاء دور user للتطبيق. يجب أن يكون المستخدمون قادرين على رؤية سجلاتهم فقط وليس سجلات الآخرين.

تكوين دور user كما هو موضح في الصورة أدناه. لمزيد من المعلومات، اقرأ عن تكوين قواعد الإذن في Hasura.

صورة توضح كيفية ضبط الأذونات في Hasura

بهذه الطريقة، لا يمكن للمستخدمين قراءة سجلات الآخرين. يمكنهم الوصول إلى بياناتهم فقط.

لأغراض الاختبار، أضف مستخدمًا وهميًا. هذا لضمان أنه عند استخدام رمز JWT، ترى تفاصيل مستخدمك فقط وليس تفاصيل المستخدمين الآخرين.

صورة توضح كيفية إضافة سجل جدول في Hasura

الآن تحتاج إلى ضبط JWT_SECRET في Hasura.

تكوين Hasura مع Casdoor

في هذه الخطوة، تحتاج إلى إضافة HASURA_GRAPHQL_JWT_SECRET إلى Hasura.

للقيام بذلك، اذهب إلى ملف Hasura docker-compose.yaml ثم أضف HASURA_GRAPHQL_JWT_SECRET الجديد كما يلي.

يجب أن يكون HASURA_GRAPHQL_JWT_SECRET بالتنسيق التالي. تذكر تغيير <Casdoor endpoint> إلى عنوان URL الخاص بـ Casdoor الخاص بك (مثل https://door.casdoor.com)

HASURA_GRAPHQL_JWT_SECRET: '{"claims_map": {
"x-hasura-allowed-roles": {"path": "$.roles"},
"x-hasura-default-role": {"path": "$.roles[0]"},
"x-hasura-user-id": {"path": "$.id"}
},"jwk_url":"<Casdoor endpoint>/.well-known/jwks"}'

احفظ التغيير وأعد تحميل الدوكر.

أضف رابط JWT لـ Clerk إلى Hasura

استرجع الرمز المميز JWT

نظرًا لعدم وجود تنفيذ عميل، يمكنك الحصول على رمز الوصول الخاص بك عن طريق إجراء طلب بالرابط أدناه:

http://localhost:8000/login/oauth/authorize?client_id=<client ID>&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin&scope=read&state=app-built-in<public certificate>>

غير client ID إلى الهوية التي نسختها من قبل وأدخل الشهادة العامة لـ Casdoor، والتي يمكنك العثور عليها في صفحة شهادات Casdoor.

ثم أدخل اسم المستخدم وكلمة المرور التي أنشأتها لـ Hasura من قبل.

انقر على "تسجيل الدخول"

استرجع الرمز المميز JWT

عد إلى صفحة Casdoor/Token.

صفحة الرمز المميز

ابحث عن اسم المستخدم الذي أدخلته من قبل، ثم انقر على "تعديل"

انسخ رمز الوصول

رمز الوصول

الآن يمكنك استخدام رمز الوصول لإجراء الطلب المصادق عليه. Hasura يعيد المستخدم المناسب بدلاً من إعادة جميع المستخدمين من قاعدة البيانات.

صورة تُظهر استخدام رمز الوصول من Casdoor في Hasura