في التمرين السابق،
رأينا كم كان من السهل بالنسبة لنا تكوين ثم
سقالة خادم مستلم باستخدام إطار LoopBack.
ونحن نرى أن إطار LoopBack هذا يدعم مجموعة كاملة
من نقاط النهاية المستلم
وجميع عمليات نقاط النهاية المستلم تلقائيا بالنسبة لنا،
عندما سقالة من التطبيق لدينا.
في هذا التمرين، سننظر في كيفية توصيل
خادم LoopBack الخاص بنا بقاعدة بيانات خلفية،
أو MongoDB في هذه الحالة،
وسنرى أيضًا كيف يمكننا إعداد عناصر تحكم وصول مختلفة على نقاط نهاية المستلم.
لذلك باستخدام ضوابط الوصول،
يمكننا تحديد نوع العمليات التي يمكن تنفيذها على نقاط نهاية المستلم،
ومن سيسمح له بتنفيذ تلك العمليات.
على سبيل المثال، يمكن للمستخدم غير المصادق عليه أو الضيف
الوصول إلى المعلومات فقط أو القيام بعملية الحصول على نقاط النهاية المستلم،
وسيتمكن المستخدم المصادق عليه أيضًا من القيام بنفس الشيء،
ولكن المسؤول فقط سيكون قادرًا على كتابة البيانات في الخادم الخاص بي.
لذلك، لا يمكن تنفيذ أي عمليات وضع ونشر وحذف إلا من قبل مسؤول.
على طول الطريق سوف نرى أيضا كيف يمكننا إعداد حساب المشرف في خادم LoopBack لدينا،
ومن ثم تكوينه
بحيث يسمح للمستخدم المشرف فقط لتنفيذ هذه العمليات.
لذلك هذا هو المكان الذي يسمح لنا LoopBack بتحديد شيء
يسمى الأدوار المرتبطة بمختلف المستخدمين.
لذلك يمكن تعيين دور لكل مستخدم.
على سبيل المثال، يمكنك التحدث عن مستخدم
عادي، مسؤول، مشرف سوبر وهلم جرا.
حتى تتمكن من تقسيم مجموعة المستخدمين إلى مجموعات مختلفة،
ومن ثم تعيين أدوار مختلفة لهم.
كما سننظر في كيفية تخصيص نموذج المستخدم المدمج،
داخل تطبيق LoopBack الخاص بنا،
وكيف يمكننا بناء نموذج آخر على رأس نموذج المستخدم،
ومن ثم استخدام نموذج المستخدم كفئة أساسية
وتطوير نموذج مستوى أعلى يسمى نموذج العميل،
والذي يسمح لنا لتخزين معلومات إضافية لكل
من العملاء الذين سيتم تسجيل الدخول إلى موقعنا.
لذلك، دعونا استكشاف بعض هذه الميزات من LoopBack في هذا التمرين.
للبدء في هذا التمرين،
أول شيء أود منك القيام به،
هو بدء تشغيل خادم MongoDB الخاص بك.
حتى هنا أنا في علامة تبويب محطة أخرى في مجلد MongoDB الخاص بي،
حيث قمت بتكوين خادم MongoDB الخاص بي في وقت سابق،
والذي تم استخدامه من قبل خادم Express Plus MongoDB في التدريبات السابقة.
لذلك اسمحوا لي أن أبدأ خادم MongoDB عن طريق كتابة
MonGod ناقص بيانات جزء D-B
في هذا المجلد ثم بدء تشغيل خادم MongoDB الخاص بي.
الآن، سأقوم بتوصيل خادم LoopBack الخاص بي بخادم MongoDB الخاص بي.
حتى الذهاب إلى مجلد خادم LoopBack الخاص بي هنا،
لا بد لي من المطالبة نوع مصدر البيانات L-B.
سيسمح لنا ذلك بتكوين مصدر البيانات لخادم LoopBack الخاص بنا.
يمكن لـ LoopBack نفسه الاتصال في وقت واحد بمصادر بيانات متعددة إذا اخترت
ذلك، ويدعم أنواعًا مختلفة.
وهو يدعم قواعد بيانات بلدي دورة، فإنه يدعم مونغودب،
فإنه يدعم كلودانت الذي هو أيضا قاعدة بيانات وثيقة أخرى،
فإنه يدعم أوراكل، والعديد من أنواع أخرى من قواعد البيانات.
لذلك، يمكنك بسهولة تكوين ذلك.
في هذا المثال، سأقوم بتكوين خادم LoopBack الخاص بي
للتحدث إلى MongoDB الخاص بي في النهاية الخلفية.
لذلك في موجه،
إذا قمنا بكتابة مصدر بيانات L-B،
فإنه سيدفعنا للحصول على معلومات.
لذا فإن أول شيء سيطلبه منا هو اسم مصدر البيانات،
ثم سأقوم بتكوين اسم مصدر البيانات هذا كـ MongoDB،
ثم سيطالبني بتحديد الموصل.
يستخدم LoopBack الموصلات للاتصال بقواعد بيانات مختلفة خلف الكواليس.
لذا كما ترون، فإن DB في الذاكرة وهو الذي
استخدموه للتو في التمرين السابق،
ولكن بالطبع يعني DB في الذاكرة أنه بمجرد إيقاف تشغيل الخادم الخاص بك،
ستختفي جميع القيم،
وبذلك لا يكون تخزين بيانات مستمر.
حتى هنا ترى أنواع مختلفة من قواعد البيانات التي تدعم StronGloop هنا.
حتى تتمكن من رؤية قائمة طويلة من قواعد البيانات المختلفة التي يتم دعمها.
لذلك يمكنك أن ترى أنه يدعم كاساندرا، ريديس،
كنا قد أشرنا لفترة وجيزة إلى هذه عندما تحدثنا عن قواعد بيانات نوسكل، مونغودب
، بلدي سكل، بوستغريز، أوراكل،
وحتى مباشرة إلى خوادم أبي بقية إلى خوادم سواب،
كوتشباس وهلم جرا.
لذا ترى أنه يوفر لنا
قائمة طويلة من أنواع مختلفة من مصادر البيانات من هناك،
يمكن لخادم LoopBack قراءة المعلومات.
في حالتي، سأستخدم خادم MongoDB لذا
سأقوم بإعداد موصل MongoDB.
لذلك عندما أفعل ذلك،
سيقوم LoopBack تلقائيًا بتثبيت موصل MongoDB لنا،
وعندما يطلب عنوان URL لسلسلة الاتصال،
سنترك هذا
الأمر فارغًا لأننا سنسمح له باستخدام الطريقة القياسية للتكوين.
عندما يسأل عن المضيف، سنقول
localhost لأننا نقوم بتشغيل MongoDB على نفس الكمبيوتر.
خلاف ذلك، ستقوم
بتحديد اسم المضيف للكمبيوتر الذي تقوم بتشغيل MongoDB عليه.
ثم الرقم التالي هو رقم المنفذ
ونحن نستخدم رقم منفذ MongoDB القياسي 27017،
وسيطلب أيضًا اسم المستخدم وكلمة المرور إذا لزم الأمر،
والآن يعمل MongoDB دون الحاجة إلى
القيام بأي مصادقة لذلك أترك اسم المستخدم وكلمة المرور فارغين، اسم قاعدة البيانات.
اسم قاعدة البيانات على خادم MongoDB الذي يعمل خلف الكواليس،
اسم قاعدة البيانات هناك الارتباك.
إذا كنت تتذكر أن هذا هو اسم قاعدة البيانات التي قاموا بإعدادها على خادم MongoDB الخاص بنا.
وبعد ذلك سوف يسألنا ما إذا كان يجب تثبيت موصل LoopBack،
وسأقول نعم، وسوف
تذهب في الواقع إلى الأمام وتثبيت وحدة NPM التي تصل إلى
موصل LoopBack إلى قاعدة بيانات MongoDB.
وبمجرد الانتهاء من ذلك، يتم
تثبيت موصل الاسترجاع الخاص بي هنا حتى تتمكن من رؤية أن هذا هو الإصدار 1.18.1
وخادم LoopBack الخاص بي جاهز للتحدث إلى MongoDB الخاص بي.
الآن قبل المضي قدما،
في التمرين السابق أنا لا حقا تكوين بعض النماذج
ومن ثم أنا تحديدها ليتم تخزينها في دب،
وسوف تحتاج إلى الذهاب وتحديثها لتخزين بياناتهم في بلدي مونغودب.
لذلك، دعونا نذهب ونعيد بسرعة رمز لدينا لخادم LoopBack.
يوفر لنا هذا أيضًا فرصة للنظر في
ما قام به خادم Looback نفسه بتكوينه في هذا المجلد.
فتح مجلد LoopBack في محررنا،
يمكنك أن ترى أن Loopback قد
سقفت بالفعل مجموعة كاملة من الملفات في هذا المجلد.
يحتوي package.json بالطبع على
جميع وحدات NPM ذات الصلة التي تم تكوينها هنا،
وهنا يمكنك أن ترى أن LoopBack نفسه قد قام بتكوين وحدة LoopBack NPM،
وحدة التمهيد LoopBack
وعلى وجه الخصوص اسمحوا لي أن ألفت انتباهكم إلى LoopBack MongoDB موصل,
أن كنا قد ركبت للتو منذ فترة قصيرة, وغيرها الكثير.
على وجه الخصوص، يتم
تخزين التكوين الخاص بخادم Loopback في الغالب في ملفات Json هنا،
مع javascriptcore إضافية كلما لزم الأمر.
سنبحث عن تخصيص شفرة جافا سكريبت بعد ذلك بقليل.
اسمحوا لي أن ألفت انتباهكم إلى هذا المجلد يسمى المشترك.
في هذا المجلد المشترك،
سترى جميع النماذج التي قمنا بتكوينها في وقت سابق.
لذلك سترى أن لدينا ملفات الصحون.json.
لذلك عند فتح ملف dishes.json، ترى كيف يقوم LooPack
بتخزين جميع المعلومات حول طراز الأطباق الذي قمت بإنشائه للتو،
لذلك يحتوي على الاسم
والقاعدة وبعض القيم الأخرى هنا التي يتطلبها.
ثم انظر إلى الخصائص وكيف يتم تخزين جميع الخصائص هنا.
لذلك ترى بعض الأشياء التي من السهل جدا بالنسبة لك
للتعرف على أنها في ملف dishes.json.
وبالمثل، فإن القادة. json والترويجs.json.
ملف dishes.js كبير،
يمكننا إضافة في بعض التعليمات البرمجية التخصيص إضافية للأطباق،
ولكن الآن نحن لن نفعل ذلك،
ولذا فإننا سوف مجرد ترك الأمر كما هو.
لذلك هذا هو المكان الذي يمكنك إضافة في بعض التعليمات البرمجية الإضافية التي قد
تحتاج إلى تنفيذها عند الوصول إلى نقطة نهاية أطباق الشرطة المائلة.
لكن الآن سنتركه فارغاً في الوقت الحالي
الآن دعونا ننظر أيضا في مجلد الخادم هنا.
ومجلد الخادم، على
وجه الخصوص اسمحوا لي أن ألفت انتباهكم إلى ملف datasources.json هنا.
في ملف sources.json البيانات،
سيتم تكوين جميع مصادر البيانات المختلفة هنا.
حتى الآن، لدينا فقط دب الذي هو
قاعدة بيانات دب في الذاكرة أن لوباك افتراضيا تكوين،
ومن ثم مونغودب الذي قمنا للتو بتكوينه،
استوعبت فقط المعلومات التي
تم تخزين المدخلات في تلك البيانات، ملف جسون.
لذا، سترى أن Loopback نفسه يعمل عن طريق تكوين كل هذه الملفات
التي يستخدمها إطار Loopback نفسه عند
بدء تشغيل خادم واجهة برمجة التطبيقات الباقية المستندة إلى Loopback.
دعونا نذهب إلى ملف config.json نموذج هنا.
يقوم ملف config.json النموذجي نفسه
بتخزين الكثير من المعلومات هنا المفيدة لنا
، ولكن هنا، دعنا نذهب وتعديل بعض الأشياء.
لذا في هذا، سنرى أن هناك مرة أخرى للأطباق،
الترقيات والقادة، تم تكوين مصدر البيانات كـ DB.
لذلك سنقوم بتعديل ذلك إلى MongoDB هنا.
ليس فقط لهذا واحد،
فإنها أيضا تغيير ذلك للترقيات، وأيضا القادة،
وهذا يعني، أن كل هؤلاء الثلاثة سوف تستمد بياناتهم من MongoDB.
أيضا، للدور الذي تم تعريفه هنا.
سنقوم أيضا بتخزين في MongoDB.
سنرى قريبًا كيف سنستفيد من الدور،
وكذلك RoleMapping هنا.
سوف نفهم سبب هذين في فترة قصيرة.
وبعد ذلك، ACL، قوائم التحكم في الوصول،
سيتم أيضًا تخزين هذه في MongoDB.
وبعد ذلك، المستخدم، أيضا،
سنقوم بتخزينها في MongoDB،
وبعد ذلك سوف يتركها هناك.
لذا، هذه هي التعديلات التي يجب عليك القيام بها
على ملف model-config.json ثم حفظ التغييرات.
كما ذكرت سابقا، الاسترجاع افتراضيا،
ويدعم هذا النموذج يسمى، المستخدم،
والذي يستخدم لدعم مصادقة المستخدم.
نموذج المستخدم نفسه يخزن ثلاثة خصائص مختلفة فقط.
اسم المستخدم وعنوان البريد الإلكتروني
والمعلومات المتعلقة بكلمة المرور.
الآن، إذا كانوا يريدون الحصول
على طريقة أكثر تفصيلاً لتخزين معلومات إضافية حول المستخدمين.
ثم يمكنهم تصنيف نموذج قاعدة المستخدم هذا،
ومن ثم الاستفادة من ذلك.
لذا، في هذه الخطوة التالية،
سأقوم بإنشاء نموذج آخر يسمى، نموذج العميل،
والذي سيستخدم المستخدم كنموذج أساسي لعمله.
وسيقوم نموذج العميل نفسه بتخزين معلومات إضافية حول المستخدمين.
لذلك، في نموذج العميل،
وسوف تخزين أشياء مثل الاسم الأول،
والاسم الأخير، والصورة للمستخدم وهلم جرا.
لذا، سيتصرف العميل تمامًا مثل نموذج المستخدم،
والذي يأتي بالفعل مع مجموعته الخاصة من الطرق.
وهكذا يتم استخدام نموذج المستخدم لمصادقة المستخدم،
حتى تتمكن من كتابة اسم المستخدم وكلمة المرور،
وتسجيل الدخول وتسجيل الخروج.
لذلك، عندما أنشأنا نموذج العميل هذا استنادًا إلى الفئة الأساسية لنموذج المستخدم،
سيقوم نموذج العميل أيضًا بدعم
عمليات تسجيل الدخول وتسجيل الخروج باستخدام نموذج العميل هذا.
لذلك، يمكننا تسجيل الدخول إلى المستخدم وتسجيل الخروج من المستخدم وهلم جرا.
لذا، تأتي مصادقة المستخدم تلقائيًا إلى اليمين.
لذلك، لإنشاء نموذج العميل، في المطالبة،
اكتب نموذج lb واسم الطراز،
سنقوم بكتابة العميل.
و DataSource، سأختار أنه MongoDB.
ثم عندما يطلب تحديد الفئة الأساسية للنموذج،
بدلاً من استخدام PersistedModel،
سنتحرك لأسفل،
ثم حدد المستخدم كفئة أساسية.
لذا، بهذه الطريقة، سوف تستمد جميع خصائصها
لفئة المستخدم الأساسية المضمنة بالفعل في Loopback.
ثم سنقوم بفضح هذا مع واجهة برمجة تطبيقات REST،
و MT الجمع المخصص.
ثم سيكون هذا في المجلد المشترك.
ولهذا، فإن الخصائص الثلاثة التي سنضيفها هي،
الاسم الأول، الذي سيكون لدينا سلسلة الأنواع.
وهذا غير مطلوب أو لا يحتوي على قيمة افتراضية.
ثم، اسم العائلة مرة أخرى كسلسلة النوع،
غير مطلوب، ولا قيمة افتراضية.
ثم صورة لسلسلة النوع،
غير مطلوبة ولا قيمة افتراضية.
لذلك، ترى أن فئة العميل نفسها
تحمل خصائص إضافية بالإضافة إلى فئة المستخدم.
فئة المستخدم يدعم بالفعل اسم المستخدم
والبريد الإلكتروني ومعلومات كلمة المرور ذات الصلة هناك.
لذا، فإن فئة العميل،
نظرًا لأن الفئة الفرعية هي الفئة الأساسية،
فسوف نحصل على اسم المستخدم والبريد الإلكتروني تلقائيًا من فئة المستخدم.
والآن، عندما تذهب إلى ملف model-config.jason،
سترى أن نموذج العميل قد تمت إضافته بالفعل هناك.
ثم في النماذج الشائعة،
سترى الآن ملف customer.json المضافة هناك
مع هذه الخصائص الإضافية الثلاثة التي أضفناها إلى نموذج العميل.
ولكن لاحظ، أنه يحدد القاعدة كفئة المستخدم لنموذج العميل هنا.
لذا، هذه هي الطريقة التي يسمح لك بها
Looback بأخذ فئة نموذج أساسي ثم فئة فرعية في فئة النموذج.
لذلك، سترى كيف تمكننا Looback من دعم مصادقة المستخدم تلقائيًا باستخدام
فئة المستخدم ثم يسمح لنا بتحديد فئة فرعية إضافية لذلك،
والتي ستخزن معلومات إضافية تتعلق بفئة قاعدة المستخدم.
بعد ذلك، سنقوم بإعداد التحكم
في الوصول للنماذج المختلفة التي قمنا بإعدادها بالفعل في خادم Looback الخاص بنا.
لذلك، لإعداد التحكم في الوصول،
أو قوائم التحكم بالوصول في Lookback.
يستخدم Looback قوائم التحكم بالوصول هذه كطريقة لتحديد نوع
العمليات التي يمكن تنفيذها على
نقاط النهاية REST API المختلفة التي تتوافق مع النماذج المختلفة.
لذلك، للقيام بذلك، سنقوم كتابة في موجه lb acl،
ACL لتقف على قوائم التحكم في الوصول.
وبعد ذلك، عندما ينفد هذا، سنقول،
النموذج الذي نريد أن يتم تطبيق قائمة التحكم بالوصول هذه.
وبعد ذلك سنقول، كل النماذج الموجودة.
وسنقول، كل المقاييس والخصائص.
وسنقول،
كل أنواع العمليات.
وبعد ذلك، سنقول، جميع المستخدمين.
وبعد ذلك سنقول، رفض الوصول بشكل صريح.
لذلك، نحن أولا إغلاق جميع النماذج لكل شيء،
ثم سنقوم بفتح ببطء،
مهما كانت العمليات التي يمكن أن يؤديها مختلف المستخدمين.
لذلك، الخطوة الأولى، قمنا بإغلاق
جميع أنواع العمليات على جميع النماذج التي لدينا حاليا.
ثم، سنبدأ ببطء فتح كل من العمليات، خطوة بخطوة.
الآن، الخطوة التالية،
ما سنفعله هو إعداد قائمة التحكم بالوصول التالية مرة أخرى.
في قائمة التحكم في الوصول الثانية، سنقول،
لجميع النماذج الموجودة وسنقول،
جميع المقاييس والخصائص.
وبعد ذلك، سوف نقول، فقط قراءة الوصول.
بمعنى، عندما يمكن للمستخدم تنفيذ عمليات GET على هذه المنافذ النهائية.
ويمكن إجراء عمليات GET هذه من قبل جميع المستخدمين.
لذلك، يمكن للمستخدمين استرداد المعلومات.
ونحن سوف نمنح صراحة الوصول لهذا.
لذلك، مما يعني أن عمليات GET مسموح بها على عقدة نقاط نهاية API REST.
أولا، أغلقنا كل شيء،
ثم فتحنا فقط عمليات جيت للمستخدمين.
الآن، وأخيرا، سوف يذهبون إلى كل واحد من النماذج،
ومن ثم إغلاق والسماح لعمليات معينة فقط
ليتم تنفيذها من قبل أنواع معينة من المستخدمين.
لذا، للقيام بذلك،
فإن قائمة ACL التالية التي سنقوم بإعدادها هي لنموذج معين.
لذلك، سنقوم بإعداد هذا واحد للأطباق.
وسنقول، طريقة واحدة.
ثم اسم الأسلوب هو، إنشاء.
لذلك، وهذا يعني أن إنشاء هذه لن يسمح إلا من قبل.
لذلك، مرة أخرى، عندما يقول حدد الدور،
ثم للدور، سنقول، أخرى.
ثم سيكون اسم الدور المشرف.
لذلك، ما نقوم به من خلال هذه العملية هو أنه،
ونحن نقول أن المستخدم المشرف فقط يمكن إنشاء أطباق جديدة أو تحديث الأطباق الموجودة.
لذلك، هذا هو قريب قليلا قبالة، والعمليات المتبقية.
لذلك، دعونا نفعل نفس الشيء للقادة.
وهناك طريقة واحدة وبعد ذلك،
وخلق وسوف نقول،
فقط المشرف يمكن القيام بذلك.
ثم أخيرا، أيضا للترقيات.
للترقيات
طريقة واحدة، سيتم السماح طريقة إنشاء
فقط من قبل المستخدمين الذين لديهم دور معين كمسؤول.
سنرى كيف سننشئ مستخدمين لهم دور محدد في الخطوة التالية.
منح حق الوصول بشكل صريح.
الآن لاحظ أنني لم أغلق العملاء لإنشاء العمليات.
إذا أغلقت العملاء،
لن يتمكن أحد من التسجيل في النظام.
لذلك، لهذا السبب سأترك هذا مفتوحا.
لأنه، يجب أن يكون العميل قادرا على التسجيل في النظام.
لذلك، يمكنك الاشتراك في حسابات جديدة على النظام.
حسابات المستخدمين على النظام.
لذلك، سيتم ترك ذلك مفتوحا للناس للقيام به.
لذلك, للسماح للعملاء, سنقول, العملاء,
طريقة واحدة, إنشاء جميع المستخدمين.
لذلك، يمكن إنشاء العملاء من قبل جميع المستخدمين لأن ذلك
سيسمح للأشخاص بتسجيل الدخول إلى حسابهم.
وأخيرًا، سنرى كيف يمكننا تكوين خادمنا للبدء باستخدام
مستخدم مسؤول واحد يتم تكوينه تلقائيًا في خادم Loopback الخاص بنا.
لذلك، للقيام بذلك،
في خادم الاسترجاع لدينا،
في مجلد الخادم لدينا هذا المجلد الفرعي التمهيد هنا.
مهما كان الرمز الذي وضعناه في المجلد الفرعي التمهيد،
سيتم تنفيذه عند بدء تشغيل خادم LoopBack الخاص بنا.
لذلك، هنا، سترى أن لدينا بالفعل هذا authentication.js،
الذي تم إعداده بالفعل
، استرجاع الذي سيتم إعداد مصادقة المستخدم بالنسبة لنا.
ثم لدينا root.js الذي سيتم إعداد
بعض المعلومات الإضافية لخادم الاسترجاع ذاكرة الوصول العشوائي لدينا.
ويمكننا إضافة ملفات إضافية هنا.
لذلك، أنا ذاهب للذهاب إلى هناك في مجلد التمهيد،
ومن ثم إضافة في هذا الملف يسمى، script.js.
وفي هذا script.js،
سأقوم بإعداد التعليمات البرمجية لإنشاء مستخدم مشرف بشكل افتراضي.
لذلك، في script.js،
والتي لن تكون سوى وحدة الآلية الوقائية الوطنية القائمة على الملف لذلك،
سنبدأ بالقول،
module.exports = وظيفة (التطبيق).
التطبيق هو تطبيق Looback،
والذي سيتم توفيره كمعلمة لهذه الوظيفة بالنسبة لنا.
وهكذا، يمكننا الاستفادة منه داخل شفرتنا هنا.
لذلك، هنا، سنقوم أولا بإعداد مستخدم المشرف.
لذلك، للقيام بذلك، سنقول،
فار العميل = app.Models.Customer.
لذلك، وهذا يتيح لنا الوصول إلى نموذج العميل.
ثم سنقول يا زبائن.فيندون
لذلك، سنقوم أولا التحقق لمعرفة ما إذا كان المستخدم مع
اسم المستخدم كمسؤول قد تم تكوينه بالفعل في النظام أم لا.
إذا لم يكن كذلك، ثم أنا ذاهب لإنشاء مستخدم المشرف.
وهذا يزودني بوظيفة رد اتصال مع معلمتين، خطأ والمستخدمين.
وداخل هذا- لذلك سنحاول أولا
معرفة ما إذا كان المستخدم مع اسم المشرف موجود بالفعل.
إذا كان المستخدم غير موجود،
ثم سنقوم بإنشاء المستخدم.
لذلك، لإنشاء المستخدم،
سنقول هنا، إن لم يكن المستخدمين.
لذلك، إذا لم يكن المستخدمون فارغًا أو إذا كان المستخدم يقول null،
فهذا يعني أنه لا يوجد مستخدم مشرف لذلك أحتاج إلى إنشاء مستخدم مشرف هنا.
حتى في هذه الحالة، سنقول، customer.create.
وهذا الإنشاء يأخذ مجموعة من الكائنات إذا كنت تريد ذلك.
وستسمح لنا هذه المجموعة من الكائنات بتحديد حسابات المستخدمين التي نريد إنشاءها.
لذا فإن حساب المستخدم الأول الذي أريد إنشائه أو
حساب المستخدم الوحيد الذي أريد إنشائه هو «المسؤول».
لذلك سيكون هذا هو المسؤول الافتراضي
لخادم الاسترجاع الخاص بي ومن ثم يمكنني تكوين البريد الإلكتروني.
لذلك تذكر أن نموذج المستخدم يدعم هذه الخصائص،
confusion.net ثم كلمة المرور
سأقوم بتكوين كلمة مرور.
يمكنك أيضا توفير جنبا إلى جنب مع هذا،
الاسم الأول واسم العائلة،
إذا كنت تريد، لمستخدم المشرف.
ولكن أنا ذاهب إلى ترك الأمر على هذا
النحو، فارغة لأن تلك ليست مطلوبة للمستخدم المشرف.
لذا سأتركه هناك
لذلك سينتهي هذا الأمر بإنشاء عميل جديد باسم «المسؤول».
حتى إذا كان هذا المستخدم أو اسم «المسؤول» غير موجود،
ثم سنقوم بإنشاء واحد.
ثم هنا لدينا وظيفة رد الاتصال.
إذا المستخدمين يخطئون.
الآن سأقول،
إذا أخطأت، نحن لا نعرف ما تحاول القيام به لذلك سنقوم ببساطة رمي الخطأ.
لكن عادة لن نتوقع حدوث هذا
حتى الآن، كيف يمكنك تعيين هذا المستخدم كمستخدم إداري؟
حتى الآن عندما أقوم بالتسجيل هنا،
أنا مجرد تسجيل مستخدم عادي هنا،
ولكن نريد أن نعطي دورا خاصا لهذا المستخدم.
وهذا هو المكان الذي يدعم الاسترجاع طريقة لتحديد الأدوار للمستخدمين.
لذلك لتحديد دور،
سنقوم فار دور = app.Models.role.
لذلك هذا سوف يسمح لي لخلق دور،
دور جديد دعوة المشرف هنا.
حتى نتمكن من تعيين طائرات بدون طيار مختلفة لمستخدمين مختلفين إذا كنت تريد.
وإلى جانب هذا،
أنا أيضا بحاجة إلى إنشاء رولمابابينغ هنا.
لذلك سنقول، App.Models.Rolemaping.
وإذا حدث ذلك أن قاعدة البيانات تحتوي بالفعل على
أي رولمابينج موجود بالفعل،
ثم أنا ذاهب لتدمير كل تلك عندما أبدأ الخادم الخاص بي.
ثم اسمحوا لي أن أحاول العثور
على معرفة ما إذا كان هناك دور مع
هذا الاسم المشرف
موجود بالفعل في النظام.
حسناً
وفي هذا يأخذ،
كما تتوقع،
وظيفة رد الاتصال وداخل هنا سنقول، دور. Findone.
حتى إذا كان هناك دور مع اسم المشرف موجود بالفعل،
ثم أنا لست بحاجة إلى إنشاء واحد.
خلاف ذلك، إذا لم يكن ذلك موجودًا،
فأنا بحاجة إلى إنشاء الدور.
لذلك سوف نقول، دور. خلق.
لذلك سنقوم بإنشاء دور المشرف هنا.
ثم هذا يأخذنا إلى المعلمات خطأ،
دور هنا، في وظيفة رد الاتصال.
الآن مرة أخرى، هنا للتعامل مع الخطأ،
سنقوم فقط بنسخ هذا «إذا خطأ» ثم لصقه هناك.
وبالمثل هنا أيضًا، إذا حدث الخطأ،
فأنا بحاجة إلى التعامل مع ذلك.
لذلك «إذا كان خطأ» ثم «رمي الخطأ».
وإلا، فقد أنشأنا هذا الدور.
حتى الآن أنا بحاجة إلى تعيين هذا الدور لهذا المستخدم معين أن لدي مجرد إنشاء.
هذا المستخدم الذي قمت بإنشائه للتو هنا.
هذا المستخدم أريد أن أعطي هذا المستخدم دور المشرف.
لذلك منذ أن قمت بإنشاء هذا الدور من قبل مسؤول الاسم،
لذلك سنقول، role.principals.create.
إذن هذه هي الطريقة التي تقوم بها بإنشاء تعيين بين الدور ومستخدم معين هنا.
لذلك سنقول، دور.principals.create.
لذلك هذا هو بناء الجملة هناك.
سنقول، PrincipalType: Rolemapping.User
هنا وستأخذ
معرفًا رئيسيًا هنا وهو المستخدمون.
الآن ما الذي يشير إليه هذا المستخدم؟
يشير هذا المستخدمون إلى هذا الذي جاء للتو.
لذلك عندما أنشأنا هؤلاء المستخدمين،
ثم يجب على العميل خلق عودة ناجحة لنا هنا.
إذن هذا ما سأستخدمه هنا
سنقول، المستخدمين [0].
لذلك سيكون هذا مجموعة من المستخدمين التي تم إنشاؤها وتحتوي على واحد منهم فقط.
لذلك هذا هو السبب في أنني أقول المستخدم [0].
ثم سنقوم بتعيين معرف هذا المستخدم هنا.
إذن هذه هي الطريقة التي سنقوم بها بإنشاء RoleMapping بين الدور الذي أنشأنا للتو
، هذا الدور، ثم تعيينه للعميل الذي أنشأنا للتو.
الآن هذا يأخذنا أيضا إلى المعلمات، وظيفة رد الاتصال.
وفي وظيفة رد الاتصال هذه، سنقول ببساطة،
إذا كان (err) رمي (err).
و إلا فإننا لسنا حريصين حقا على معرفة ما حدث هناك أيضا.
هذا كل شيء إذن هذه هي الطريقة
لذلك إذا كان الدور المسمى المشرف غير موجود،
سنقوم بإنشاء هذا الدور.
إذا لم يكن - لذلك هذا هو
الجزء «آخر» حيث ما زلت بحاجة إلى القيام بهذا التعيين.
لذلك اسمحوا لي أن نسخ هذا الرمز وبعد ذلك سأفعل ذلك بالضبط هنا.
لذلك دور.principals.create ثم تعيين هذا للمستخدم هناك.
لذلك إذا كان دور المشرف موجودًا بالفعل،
فكل ما يحتاجون إليه هو القيام بالتخطيط.
لذلك سيتم تخزين هذا في نموذج رولمابينغ في قاعدة البيانات لدينا. هذا هو
لذا ستحاول هذه القطعة من التعليمات البرمجية التي وضعناها في ملف script.js أولاً
العثور على ما إذا كان مستخدم المشرف موجودًا ويتم تحديد هذا المستخدم بواسطة مسؤول الاسم.
إذا لم يكن كذلك، ثم سيتم إنشاء المستخدم وأيضا بعد ذلك سيتم إنشاء دور للمستخدم.
سنقوم بإنشاء دور اسمه المشرف.
إذا كان هذا الدور موجودًا،
فسنستخدم ذلك فقط.
وإلا سنخلق الدور
وبعد ذلك سنقوم بإنشاء هذا التعيين بين الدور والمستخدم.
لذلك الاسترجاع يسمح لنا للقيام رولمابينغ.
حتى القول هذا المستخدم ليس لهذا الدور.
لذلك يتم هذا التعيين باستخدام هذا البيان.
بحيث يكمل إعداد خوادمنا.
بحيث سيتم إنشاء مستخدم المشرف وأن المستخدم المشرف سوف
تحصل تلقائيا على دور المشرف كما تم تكوينه هنا.
هذا كل شيء دعونا حفظ التغييرات إلى script.js.
والآن يجب أن تكون خوادم الاسترجاع جاهزة.
لذا سنذهب الآن ونبدأ سيرفر العودة ثم نتحقق من ما يمكننا القيام به مع هذا.
الذهاب إلى المحطات،
دعونا نبدأ خادم الاسترجاع.
لذلك سنقول، بداية npm ومن ثم يجب أن يكون خادمنا قيد التشغيل.
دعونا نذهب إلى المستكشف ثم تصفح المعلومات هناك.
وسيكون خادم الاسترجاع هذا
متصلاً تلقائيًا بمونغودب لأنني قمت بإعداد الاتصال.
الذهاب إلى المتصفح الخاص بي،
اسمحوا لي إعادة تحميل هذا.
وعندما أعيد تحميل هذا،
سترى الآن أن لدينا زبون جديد تم إنشاؤه هنا.
المستخدم موجود بالفعل في وقت سابق.
الأطباق، والقادة، والعروض الترويجية كلها هناك.
دعونا أداء الحصول على الأطباق.
الآن بعد أن يرتبط هذا بالفم MongoDB،
يحتوي MongoDB بالفعل على بعض الأطباق هناك.
إذا كان MongoDB الخاص بك فارغًا،
فيمكنك نشر بعض الأطباق باستخدام المشاركة هنا.
لذلك دعونا نحاول بها.
عندما أفعل عملية الحصول على أطباق مائلة،
سترى أنه في الجسم الاستجابة-
جميع الأطباق الموجودة في قاعدة البيانات الخاصة بي تم جلبها.
وبالمثل، يمكنني أن أفعل GET على
الترقيات ويجب أن أرى العرض الترويجي الموجود بالفعل في قاعدة البيانات الخاصة بي هناك.
لذلك، يمكنك أن ترى أن الترقية موجودة بالفعل هناك.
لذلك، هذا يبين لنا كيف يمكننا جلب المعلومات.
الآن، دعونا نحاول نشر طبق جديد.
لذلك، لنشر طبق جديد،
نذهب إلى بوست هنا.
اسمحوا لي فقط نسخ هذا.
من الواضح، في هذه اللحظة،
لأنه منذ أنا لست تسجيل الدخول،
لن يسمح لي بنشر الطبق حتى،
ولكن سوف أثبت أن لك مجرد نسخ ولصق هذه المعلومات هنا،
وسنحاول نشر هذا الطبق،
وبعد ذلك عندما أحاول نشر الطبق،
خادم بلدي الردود على الفور مع هذا الخطأ قائلا، AUTHORIZATION_
أنت غير مخوّل للقيام بهذه العملية.
لذلك، هذا هو السبب في أنك غير مأذون للقيام بهذه العملية.
الآن، كيف تصرح لنفسك؟
لذلك، لتفويض نفسك،
أذكر الآن أننا قد أنشأنا بالفعل مستخدم واحد مع اسم المشرف،
وهذا المستخدم المشرف موجود بالفعل كعميل هنا.
لذا، انتقل إلى نقاط نهاية واجهة برمجة تطبيقات REST الخاصة بالعميل
، إذا قمت بالتمرير
لأسفل، أسفل هنا، سترى تسجيل دخول هذا العميل.
لذلك، عند القيام POST على تسجيل دخول العميل.
لذلك، لتسجيل دخول العميل،
يمكنك التمرير هنا ثم هنا يسأل عن بيانات الاعتماد.
لذلك، في بيانات الاعتماد،
يمكننا كتابة اسم المستخدم في علامات اقتباس مزدوجة، وسنقول،
المشرف، ثم كلمة المرور،
وسنقول، كلمة المرور، ومن ثم سنقوم بنشر هذا.
ثم عند نشره،
ستلاحظ أنه في الرد، سيقوم
LoopBack بإرسال هذه المعلومات مرة أخرى.
الآن، ضمن هذه المعلومات،
هذا المعرف الخاص الذي يرسل مرة أخرى هو AccessStoken لخادم LoopBack الخاص بي.
لذلك، يمكنني فقط نسخ هذا AccessStoken هنا،
ثم الحق في الجزء العلوي هنا،
يمكنك أن ترى أن هذا هو رمز غير تعيين، هنا.
وتقول رمز غير تعيين.
وهنا يمكنك كتابة في هذا AccessStoken،
ومن ثم يقول، تعيين رمز الوصول.
ثم سيتم تعيين AccessStoken الخاص بك،
ومن ثم ستحمل جميع العمليات اللاحقة التي تقوم بها تلقائيًا
هذا AccessStoken في رأس رسالة طلبي.
لذا، بهذه الطريقة، الآن سيسمح للمشرف الخاص بي بالقيام بمشاركات العناصر هناك.
لذلك، الآن بعد أن قمت بتسجيل الدخول كمشرف،
اسمحوا لي أن أذهب إلى العروض الترويجية،
وبعد ذلك سأقوم بنشر عرض ترويجي واحد هناك،
وأظهر لك أنه يمكنني بالفعل نشر العروض الترويجية.
لذلك، دعونا نذهب إلى POST،
وبعد ذلك سنقوم فقط بنسخ هذا، ثم في البيانات،
ومن ثم للاسم سنقول، ترقية الاختبار،
وصورة سنترك الأمر على هذا النحو، وصف، وصف الاختبار.
ويمكنني نشره هناك،
وسترى
أنه لا ينبغي أن أقوم بتضمين هذا المعرف هنا لأنني
تركت LoopBack يقوم تلقائيًا بتعيين المعرف إليه.
اسمحوا لي أن نشر هذا وبعد ذلك سترى أنه في هيئة الاستجابة،
تم نشر ترويج الاختبار هنا.
ولقد لاحظت أنني لم أقم بتضمين
العلم المميز للترقيات الخاصة بي وقادتي.
لذلك، أنا ذاهب للذهاب في وتشمل العلم مميزة باعتبارها
واحدة من أجزاء من الترقيات بلدي هناك.
لذلك، الآن عندما أقوم بعمل GET للترقيات،
سترى أنه في رسالة الرد هذه،
سترى العرض الترويجي القديم الذي كان بالفعل في قاعدة البيانات الخاصة بي
ثم العرض الترويجي الجديد الذي قمت بنشره للتو إلى قاعدة البيانات الخاصة بي المضمنة بالفعل هنا.
لذلك، لاحظت فقط أنني بحاجة إلى تعيين العلم المميز،
وسوف تظهر لك كيفية القيام بذلك في
، وهذا النوع من يوضح لك كيف يمكنك تسجيل الدخول واستكشاف خادم LoopBack الخاص بك.
اسمحوا لي أن تدمير هذا الرمز المميز،
لذلك سنقوم فقط بإزالة الرمز المميز،
ثم انقر فوق
ذلك بحيث سيتم إرسال رمز الوصول بشكل أساسي إلى
سلسلة فارغة وبالتالي لن يتم معالجة الرمز المميز
الخاص بي، حتى الآن لم يعد مستخدم تسجيل الدخول.
اسمحوا لي أن خلق عميل جديد.
لذلك، لإنشاء عميل جديد سأقول، عملاء POST.
وبعد ذلك سأنسخ هذا من هنا
سأقوم بإنشاء حساب جديد لنفسي هنا
وهكذا، هنا،
سأقوم بإزالة المجال، لست
بحاجة إلى ذلك، لست بحاجة إلى المعرف،
لذلك، بالنسبة للاسم الأول
و EmailVerified يجب أن يتم تعيين تلقائيا من قبل النظام.
لذلك، اسمحوا لي تسجيل الدخول كمستخدم هذا.
لذلك، أنا فقط ذاهب لتقديم اسمي الأول، اسم العائلة،
والصورة حاليا،
وسوف مجرد تعيين سلسلة فارغة هناك، اسم المستخدم والبريد الإلكتروني.
ثم سنحاول الخروج،
ثم يعود قائلا،
التفاصيل: «كلمة المرور» لا يمكن أن تكون فارغة.
لذلك، ستلاحظ أنه هنا،
يجب أن أقوم أيضًا بتضمين مع اسم المستخدم
وكلمة المرور وبعد ذلك، دعنا ننشر هذا.
لذلك، عندما تقوم بنشره، فإنه يعود مع
هيئة الاستجابة قائلا أنك الآن جزء من النظام.
لذلك، يتم
إرسال اسمك الأول واسم عائلتك واسم المستخدم الخاص بك ومعرف بريدك الإلكتروني والمعرف الذي يعينه لك LoopBack مرة أخرى إليك.
لذا، هذا ليس سوى معرف MongoDB كما ترون هنا.
لذا، الآن بعد أن قمت بالتسجيل كعميل،
يجب أن أتمكن من تسجيل الدخول كعميل،
بحيث سأذهب إلى سجل POST
هنا، ثم هنا بدلاً من المشرف،
سأقوم بتسجيل الدخول كمستخدم جديد قمت بتسجيل الدخول.
لذلك، ثم انقر فوق لمحاولة الخروج،
سترى أنه يعود مع معرف،
لذلك يعطيني الرمز المميز لهذا المستخدم المشرف هنا.
لذلك، مع هذا أكملنا فحص خادم LoopBack الذي أنشأنا للتو.
وكما ذكرت للتو،
لاحظت أن الترقيات والقادة لم تظهر العلم لذلك،
أنا ذاهب للذهاب إلى التعليمات البرمجية.
لذلك، لنفترض أنك نسيت شيئا من هذا القبيل،
ثم يمكنك ببساطة الذهاب في وتحرير رمز جسون إذا كنت ترغب في ذلك.
لذلك، أنا ذاهب للذهاب إلى رمز بلدي،
والذهاب إلى التعليمات البرمجية،
وأنا ذاهب للذهاب أولا إلى المشاعات ومن ثم سأذهب إلى dishes.json.
ثم في dishes.json،
أرى هذا العقار المميز هناك.
سأقوم بنسخ هذه الخاصية المميزة،
ثم سأذهب إلى leaders.json،
ثم سأقوم بلصق خاصية الميزة هذه إلى leaders.json،
وكذلك مع promotions.json.
لقد نسيت تضمين هذا عندما قمت بإنشاء تلك النماذج. كان
يجب أن أفعل ذلك عندما كنت أقوم بإنشاء النموذج نفسه،
إذا نسيت شيئًا من
هذا القبيل، فهذه طريقة أخرى لتحرير النموذج الخاص بك
ومن ثم التأكد من إعداد النموذج الخاص بك بشكل صحيح.
إذاً، هذا كل شيء
لذا، الآن الترقيات والقادة سوف يكون لها أيضا العلم المميز مجموعة في هناك.
مع هذا، نكمل هذا التمرين.
في هذا التمرين، رأينا كيف يمكننا إعداد
نموذج جديد من خلال توسيع فئة نموذج أساسي موجود بالفعل في LoopBack.
كما رأينا كيف يمكننا إعداد عناصر تحكم الوصول باستخدام
قوائم التحكم في الوصول التي يدعمها LoopBack.
مع هذا، نكمل هذا التمرين.
هذا هو الوقت المناسب بالنسبة لك للقيام الحصول على تغطية مع
مصادر البيانات LoopBack الرسالة والتحكم في الوصول.