ไม่มีชื่อบทความ
👤 ผสาน Firebase Auth กับ Firestore Rules เพื่อควบคุมสิทธิ์
🔑 ตั้งค่า Email/Password Authentication
- ไปที่ Firebase Console → Authentication → Sign-in method
- เปิดใช้งาน Email/Password และกด Save
🔐 เพิ่ม Google Sign-In (Popup)
- เปิดใช้งาน Provider "Google"
- ด้าน client ใช้ popup sign-in:
import { getAuth, signInWithPopup, GoogleAuthProvider } from 'firebase/auth';
const auth = getAuth();
const provider = new GoogleAuthProvider();
signInWithPopup(auth, provider)
.then(result => console.log(result.user))
.catch(error => console.error('❌', error));
🧾 อ่าน user.uid แล้วบันทึกลง Firestore
import { getAuth } from 'firebase/auth';
import { doc, setDoc } from 'firebase/firestore';
import { db } from '@/lib/firebaseClient';
const auth = getAuth();
const user = auth.currentUser;
if (user) {
await setDoc(doc(db, 'users', user.uid), {
name: user.displayName,
email: user.email,
createdAt: new Date()
});
}
📜 Firestore Rules แบบจำกัดสิทธิ์ต่อ user
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
}
}
- ใช้
userIdจาก path เป็นตัวเปรียบเทียบกับrequest.auth.uid - ถ้า uid ตรงกัน → อ่าน/เขียนได้
🧪 แนะนำการทดสอบ Rules ด้วย Rules Playground
- ไปที่ Firebase Console → Firestore → Rules
- คลิกปุ่ม “Rules Playground” (ด้านขวาบน)
- ใส่ UID ที่ต้องการทดสอบ, เอกสาร target เช่น
/users/abc123 - เลือก action เช่น
get()หรือset() - กด Run Test → จะเห็นว่า "ALLOW" หรือ "DENY"
🧠 ใช้ทดสอบ logic rules ก่อน deploy production เพื่อป้องกัน error ที่อาจเกิด
การผสาน Firebase Authentication กับ Firestore Security Rules ช่วยให้ควบคุมการเข้าถึงข้อมูลได้ละเอียดขึ้น ปลอดภัยกว่า client‑side check เพียงอย่างเดียว และเหมาะกับการออกแบบระบบที่มี user หลายประเภทหรือสิทธิ์เฉพาะตัว