feat(auth-firebase): implement Phase 2 integration - Firebase Auth, Session Sync, Favorites Grid, and Firestore Newsletter
This commit is contained in:
@@ -20,6 +20,49 @@ $description = $description ?? 'Seasonal recipes, tested tips, and approachable
|
||||
<!-- Main stylesheet -->
|
||||
<link rel="stylesheet" href="/assets/style.css">
|
||||
|
||||
<!-- Firebase v10 compat SDKs -->
|
||||
<script src="https://www.gstatic.com/firebasejs/10.8.0/firebase-app-compat.js"></script>
|
||||
<script src="https://www.gstatic.com/firebasejs/10.8.0/firebase-auth-compat.js"></script>
|
||||
<script src="https://www.gstatic.com/firebasejs/10.8.0/firebase-firestore-compat.js"></script>
|
||||
<script>
|
||||
(function() {
|
||||
var config = <?php echo json_encode(get_firebase_config()); ?>;
|
||||
firebase.initializeApp(config);
|
||||
window.auth = firebase.auth();
|
||||
window.db = firebase.firestore();
|
||||
|
||||
// Auto-sync PHP Session with Firebase Auth State
|
||||
window.auth.onAuthStateChanged(function(user) {
|
||||
var phpUser = <?php echo isset($_SESSION['fc_user']) ? json_encode($_SESSION['fc_user']) : 'null'; ?>;
|
||||
if (user) {
|
||||
if (!phpUser || phpUser.uid !== user.uid) {
|
||||
user.getIdToken().then(function(token) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', '/api/session.php', true);
|
||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
xhr.send('action=login&uid=' + encodeURIComponent(user.uid) + '&email=' + encodeURIComponent(user.email) + '&token=' + encodeURIComponent(token));
|
||||
xhr.onload = function() {
|
||||
if (xhr.status === 200) {
|
||||
if (!phpUser) { window.location.reload(); }
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (phpUser) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', '/api/session.php', true);
|
||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
xhr.send('action=logout');
|
||||
xhr.onload = function() {
|
||||
window.location.reload();
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
<!-- GSAP + ScrollTrigger (CDN) -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user