मुख्य बातें
- हर रेस्टोरेंट का डेटा सिर्फ़ ऐप में नहीं, बल्कि ख़ुद डेटाबेस के अंदर अलग रखा जाता है।
- पासवर्ड scrypt से हैश किए जाते हैं; बार-बार गलत कोशिश होने पर अकाउंट 15 मिनट के लिए लॉक हो जाता है।
- हर रीफ़्रेश पर सेशन रोटेट होते हैं, और किसी सेशन का दोबारा इस्तेमाल होने पर पूरी साइन इन चेन ख़त्म हो जाती है।
- ऑर्डर, कैश, पॉइंट्स और ऑडिट रिकॉर्ड में सिर्फ़ नई एंट्री जोड़ी जा सकती है।
हर रेस्टोरेंट अपनी अलग जगह में
सभी रेस्टोरेंट एक ही प्लेटफ़ॉर्म पर चलते हैं, लेकिन यह अलगाव डेटाबेस लागू करता है। रेस्टोरेंट की हर टेबल पर रो-लेवल सिक्योरिटी चालू और अनिवार्य है, और हर अनुरोध एक ऐसे ट्रांज़ैक्शन में चलता है जो किसी एक रेस्टोरेंट पर सेट होता है। ऐप्लिकेशन जिस अकाउंट का इस्तेमाल करता है, वह इन नियमों को बायपास नहीं कर सकता।
सिर्फ़ दो आंतरिक रोल को सीमित कामों के लिए इन नियमों से आगे जाने की अनुमति है: बैकग्राउंड वर्कर, जो रेस्टोरेंट-दर-रेस्टोरेंट अपना काम करने से पहले सिर्फ़ यह सूची देख सकते हैं कि कौन-से रेस्टोरेंट एक्टिव हैं, और SCALE टीम का कंट्रोल सेंटर, जिसकी पहुँच ग्राहकों के पतों, ऑर्डर की लोकेशन, पासवर्ड हैश या रेस्टोरेंट के अपने ऑडिट लॉग तक नहीं है।
साइन इन और पासवर्ड
- पासवर्ड 8 से 128 कैरेक्टर के होते हैं और रैंडम सॉल्ट के साथ scrypt हैश के रूप में स्टोर किए जाते हैं; उनकी तुलना कॉन्स्टेंट टाइम में होती है।
- पाँच गलत पासवर्ड पर अकाउंट 15 मिनट के लिए लॉक हो जाता है। जो अकाउंट मौजूद नहीं है, उसमें साइन इन करने में भी उतना ही समय लगता है, इसलिए इससे यह पता नहीं चलता कि कौन-से अकाउंट मौजूद हैं।
- साइन इन की कोशिशें हर एड्रेस के लिए 15 मिनट में भी सीमित हैं: स्टाफ़ के लिए 10, ग्राहकों के लिए 60, और 5 नए ग्राहक रजिस्ट्रेशन। ये गिनतियाँ सभी सर्वर साझा करते हैं।
- वेरिफ़िकेशन कोड 6 अंकों के होते हैं, 10 मिनट बाद एक्सपायर हो जाते हैं और सीमित बार ही आज़माए जा सकते हैं।
- साइन इन और ऑर्डर करने के लिए Cloudflare बॉट सुरक्षा चालू की जा सकती है।
ऐसे सेशन जिन्हें दोबारा चलाया नहीं जा सकता
साइन इन करने पर थोड़ी देर चलने वाला एक्सेस टोकन (डिफ़ॉल्ट रूप से 15 मिनट) और एक रीफ़्रेश टोकन मिलता है। हर रीफ़्रेश पर रीफ़्रेश टोकन की जगह नया टोकन आ जाता है। अगर कभी कोई पुराना टोकन दोबारा इस्तेमाल हो, तो सेशन की पूरी चेन ख़त्म कर दी जाती है, जिससे चोरी हुआ टोकन लंबे समय तक इस्तेमाल नहीं हो पाता।
हर अनुरोध यह भी जाँचता है कि सेशन अब भी एक्टिव है, इसलिए किसी स्टाफ़ मेंबर को हटाने, उसका पासवर्ड बदलने या उसका रोल घटाने पर वह हर जगह से एक साथ साइन आउट हो जाता है। कंसोल की कुकी को पेज स्क्रिप्ट पढ़ नहीं सकतीं और दूसरी साइटें उन्हें नहीं भेजतीं।
न्यूनतम ज़रूरी अधिकार वाले रोल
एक्सेस 29 परमिशन से बनता है, ऑर्डर पढ़ने से लेकर कैश कन्फ़र्म करने या स्टाफ़ मैनेज करने तक। ओनर इनके किसी भी मेल से रोल बना सकता है, और स्टाफ़ को एक ब्रांच तक सीमित किया जा सकता है। कोई भी ऐसी परमिशन नहीं दे सकता जो उसके अपने पास न हो, पहले से बने रोल एडिट नहीं किए जा सकते, और आख़िरी एक्टिव ओनर को हटाया नहीं जा सकता।
कंसोल वह छिपा देता है जिसे कोई रोल इस्तेमाल नहीं कर सकता, लेकिन यह सिर्फ़ स्पष्टता के लिए है: सर्वर हर कार्रवाई पर परमिशन, ब्रांच और मेंबरशिप जाँचता है।
ऐसे रिकॉर्ड जिन्हें दोबारा नहीं लिखा जा सकता
ऑर्डर स्टेटस के बदलाव, पॉइंट्स लेजर, स्टॉक मूवमेंट, कीमतों की हिस्ट्री और ऑडिट लॉग में सिर्फ़ नई एंट्री जोड़ी जा सकती है। डेटाबेस हर अपडेट या डिलीट को अस्वीकार कर देता है, इसलिए सुधार एक नई, दिखने वाली एंट्री जोड़कर किए जाते हैं।
ग्राहकों के डेटा का सम्मान
- ऑर्डर की लोकेशन सिर्फ़ तब ली जाती है जब ऐप खुला हो, सहमति के साथ, और 180 दिनों के बाद डिलीट कर दी जाती है।
- ग्राहक वेबसाइट या ऐप से अपना अकाउंट डिलीट कर सकते हैं। उनके पते, लोकेशन, डिवाइस, नोटिफ़िकेशन और पासवर्ड हटा दिए जाते हैं, और उनकी प्रोफ़ाइल को गुमनाम कर दिया जाता है।
- एक ही व्यक्ति को नए ग्राहक वाले ऑफ़र दोबारा लेने से रोकने के लिए, उनके फ़ोन और ईमेल के सिर्फ़ सुरक्षित फ़िंगरप्रिंट रखे जाते हैं।