بوابة عميل برابط خاص: لماذا يرتكز كل استعلام على العميل
بوابة العميل صفحة يفتحها العميل من رابط خاص به ليجد ملفه كاملا: عروضه وعقوده وفواتيره.
الخطأ الذي يجب تجنّبه بأي ثمن
أن يرى عميل بيانات عميل آخر.
وطريقة حدوثه أبسط مما يتصور كثيرون: تأخذ الصفحة معرفا من الرابط وتستعلم به مباشرة، فمن غيّر رقما في الرابط فتح ملف عميل غيره.
القاعدة التي طبّقتها
الرابط يستعمل مرة واحدة فقط، لفك هوية العميل. بعد هذه الخطوة ينساه الكود نهائيا، ويرتكز كل استعلام لاحق على صف العميل الذي أعادته عملية الفك.
العميل = ابحث بالتوكن ← مرة واحدة
العروض = عروض هذا العميل ← لا شيء من الرابط
العقود = عقود هذا العميل
الفواتير = فواتير هذا العميل
وليعبث من شاء بالرابط كيف شاء، لا يوجد استعلام يقرأ منه.
التعقيد الذي واجهته
بعض السجلات عندي بلا ربط مباشر بالعميل، فالعقود والعروض كانت مربوطة بالبريد أو برقم الطلب، ولم يكن فيها معرف العميل أصلا.
فصار الوصول إليها عبر ما يملكه العميل فعلا، أي عبر طلباته وبريده، وأي ربط يصل من الرابط نفسه أرفضه. وعلى هذا المستوى من التفاصيل يتقرر هل تصمد البوابة أم تسرب.
قيود الرابط نفسه
التوكن عشوائي طويل، لا رقم متسلسل، لأن المتسلسل يغري من يملك رابطا واحدا بتجربة الأرقام المجاورة.
وهو قابل للإبطال والتدوير: ينتهي المشروع أو يتسرب الرابط، فيلغى القديم ويصدر بديل عنه.
ويمحى مع بيانات العميل حين يطلب محوها، وإلا بقي باب مفتوح على ملف فارغ أو على بقايا.
كيف تتأكد
لا تراجع الكود، اختبره. افتح البوابة برابط أحد العملاء وابحث في الصفحة عن اسم عميل آخر أو عن رقم طلب لا يخصه. عندي سكربت ينفذ هذا الفحص على الإنتاج ثم يبطل كل ما أنشأه.