π’
β
Announcements
π₯
β
Videos
β
β
Pending Reviews
π¬
β
Pending Comments
π©
β
New Enquiries
β‘ Quick Actions
π Activity This Week
Loadingβ¦
π’ Post New Announcement
π All Announcements
π₯ Add New Video
π Video Library
π Write New Blog Post
π All Blog Posts
β Student Reviews
Approve reviews to show them in the homepage slideshow.
π¬ Community Comments
Approve comments to display them on the contact page.
π© Student Enquiries
Enquiries from the contact form. Mark as read once reviewed.
π₯ Firebase Security Rules
Copy these rules and paste them in: Firebase Console β Firestore Database β Rules β Publish
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Authorised admins only
function isAdmin() {
return request.auth != null && request.auth.token.email in [
'[email protected]',
'[email protected]',
'[email protected]'
];
}
// Any signed-in user
function isSignedIn() {
return request.auth != null;
}
// ANNOUNCEMENTS: public read, admin write
match /announcements/{id} {
allow read: if true;
allow create, update, delete: if isAdmin();
}
// VIDEOS: public read, admin write
match /videos/{id} {
allow read: if true;
allow create, update, delete: if isAdmin();
}
// BLOG POSTS: public read, admin write
match /blogposts/{id} {
allow read: if true;
allow create, update, delete: if isAdmin();
}
// REVIEWS: approved ones are public, anyone can submit
match /reviews/{id} {
allow read: if resource.data.approved == true || isAdmin();
allow create: if isSignedIn()
&& request.resource.data.approved == false
&& request.resource.data.stars >= 1
&& request.resource.data.stars <= 5
&& request.resource.data.text.size() <= 1000;
allow update, delete: if isAdmin();
}
// COMMENTS: approved ones are public, anyone can submit
match /comments/{id} {
allow read: if resource.data.approved == true || isAdmin();
allow create: if request.resource.data.approved == false
&& request.resource.data.message.size() <= 2000;
allow update, delete: if isAdmin();
}
// ENQUIRIES: private β admin only
match /enquiries/{id} {
allow read, update, delete: if isAdmin();
allow create: if request.resource.data.details.size() <= 3000;
}
// Deny everything else
match /{document=**} {
allow read, write: if false;
}
}
}
π Rules Explained
π’ Announcements & π₯ Videos & π Blog Posts
Public can read all content. Only the 3 authorised admins can create, edit or delete.
Public can read all content. Only the 3 authorised admins can create, edit or delete.
β Reviews
Signed-in users can submit (always starts unapproved). Public only sees approved reviews. Admins approve or delete.
Signed-in users can submit (always starts unapproved). Public only sees approved reviews. Admins approve or delete.
π¬ Comments
Anyone can submit (starts unapproved). Public only sees approved. Admins moderate all.
Anyone can submit (starts unapproved). Public only sees approved. Admins moderate all.
π© Enquiries
Anyone can submit. Only admins can read β completely private from the public.
Anyone can submit. Only admins can read β completely private from the public.
π Everything Else
All other documents are denied by default. Nothing is accessible unless explicitly allowed above.
All other documents are denied by default. Nothing is accessible unless explicitly allowed above.
βοΈ Site Settings
Maintenance Mode
Show maintenance message to site visitors while keeping admin access active.
Review Submission
Allow students to submit new reviews through the contact page.
Comment Submission
Allow students to submit comments through the contact page.
Auto-approve Reviews
Automatically publish all new review submissions without manual approval.
π₯ Authorised Admin Accounts
Admin 1 β Owner
β Active
Admin 2
β Active
Admin 3
β Active
π§ System
Firebase Project
Connected to: de-altruists
β Connected
Export All Data
Download all site data as a JSON backup file.
π Danger Zone
Delete All Pending Reviews
Permanently delete all unapproved reviews. Cannot be undone.
Delete All Pending Comments
Permanently delete all unapproved comments. Cannot be undone.