Firebase Security Rules
🔐 React Native (TypeScript) – Firebase Security Rules ব্যাখ্যা
Firebase ব্যবহার করলে ডেটা সুরক্ষা খুবই গুরুত্বপূর্ণ। Security Rules দিয়ে নির্ধারণ করা হয় কে কোন ডেটা পড়তে বা লিখতে পারবে। এই টিউটোরিয়ালে আমরা দেখব কিভাবে ফাইল-বেসড React Native অ্যাপে Firebase Security Rules সেটআপ করবেন এবং কিভাবে এর আউটপুট দেখবেন।
📌 ১. Firebase Security Rules কী?
Firebase Security Rules হলো JSON ভিত্তিক নিয়ম যা Firebase Database এবং Storage এ এক্সেস নিয়ন্ত্রণ করে। উদাহরণস্বরূপ:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
এখানে auth != null নির্দেশ করছে যে শুধুমাত্র লগইন করা ব্যবহারকারীই ডেটা পড়তে বা লিখতে পারবে।
📌 ২. File-based React Native App এ Security Rules ব্যবহার
আমরা ধরছি একটি ফাইল-ভিত্তিক অ্যাপ যেখানে ডেটা TypeScript ব্যবহার করে Firebase এ সংরক্ষিত হবে।
✔ Example: Firebase Storage Rules
service firebase.storage {
match /b/{bucket}/o {
match /user_uploads/{userId}/{allPaths=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
এখানে user_uploads ফোল্ডারের প্রত্যেকটি ফাইল কেবল সেই ব্যবহারকারী পড়তে বা লিখতে পারবে যিনি লগইন করেছেন।
এটি user-level security নিশ্চিত করে।
📌 ৩. React Native (TypeScript) কোড উদাহরণ
ধরুন আমাদের একটি ফাইল আপলোড ফাংশন আছে, আমরা লগইন করা ব্যবহারকারীর জন্য ফাইল আপলোড করবো:
import storage from '@react-native-firebase/storage';
import auth from '@react-native-firebase/auth';
const uploadFile = async (fileUri: string) => {
try {
const userId = auth().currentUser?.uid;
if (!userId) throw new Error('User not logged in');
const fileName = fileUri.split('/').pop();
const storageRef = storage().ref(`user_uploads/${userId}/${fileName}`);
await storageRef.putFile(fileUri);
const downloadURL = await storageRef.getDownloadURL();
console.log('ফাইল আপলোড হয়েছে:', downloadURL);
} catch (error) {
console.error('ফাইল আপলোডে সমস্যা:', error);
}
};
এখানে আমরা auth().currentUser?.uid ব্যবহার করেছি যাতে নিশ্চিত করা যায় যে শুধুমাত্র নির্দিষ্ট ব্যবহারকারীই তার ফোল্ডারে ফাইল আপলোড করতে পারবে।
এটি Firebase Storage Rules এর সাথে সামঞ্জস্যপূর্ণ।
📌 ৪. আউটপুট পরীক্ষা (Output)
যদি ব্যবহারকারী সঠিকভাবে লগইন করে এবং ফাইল আপলোড করে, তাহলে কনসোলে দেখতে পাবেন:
ফাইল আপলোড হয়েছে: https://firebasestorage.googleapis.com/...
যদি ব্যবহারকারী লগইন না করে ফাইল আপলোড করার চেষ্টা করে, তাহলে Firebase Security Rules block করবে এবং ত্রুটি দেখাবে:
ফাইল আপলোডে সমস্যা: FirebaseError: [storage/unauthorized] User is not authorized to perform the desired action.
📌 ৫. Best Practices
- প্রত্যেকটি ইউজার-ফোল্ডার আলাদা রাখুন।
- Security Rules আপডেট করলে অবশ্যই Firebase Emulator ব্যবহার করে টেস্ট করুন।
- আপলোডের আগে client-side validation করুন।
- Read/Write permissions সর্বদা
auth.uidএর সাথে সংযুক্ত রাখুন। - প্রোডাকশন বিল্ডে লগইন ও Rules consistency চেক করুন।
✅ এই পদ্ধতিতে আপনি File-based React Native অ্যাপে নিরাপদভাবে Firebase Security Rules ব্যবহার করতে পারবেন। ব্যবহারকারী শুধুমাত্র তার নিজস্ব ফাইল পড়তে ও আপলোড করতে পারবে। এটি আপনার অ্যাপকে নিরাপদ ও প্রফেশনাল করে তোলে।