Website học trực tuyến với:
- Đăng nhập bằng Google (Firebase Auth)
- Khóa học, bài học lưu trên Firestore
- Trang admin quản lý khóa học, bài học, người dùng
- Tiến độ học đồng bộ giữa các thiết bị
- Video host trên Google Drive
Toàn bộ MIỄN PHÍ. Không cần backend riêng.
learning-site/
├── index.html ← Trang chủ (list khóa học)
├── course.html ← Trang học (sidebar + video)
├── admin.html ← Trang quản trị (chỉ admin)
├── login.html ← Trang đăng nhập
├── assets/
│ ├── firebase.js ← Khởi tạo Firebase + helpers
│ ├── app.js ← Header, utils
│ ├── home.js ← Logic trang chủ
│ ├── course.js ← Logic trang học
│ ├── login.js ← Logic đăng nhập
│ ├── admin.js ← Logic admin
│ └── style.css ← Giao diện đen-vàng
├── firebase-setup/
│ └── firestore.rules ← Security Rules (copy vào Firebase Console)
└── README.md
- Vào repo
AVA-Studytrên GitHub - Xóa các file cũ (giữ lại
.gitnếu có) - Upload toàn bộ file mới (đè lên)
- Commit changes
- GitHub Pages tự build lại sau ~1 phút
- Vào https://console.firebase.google.com → project
ava-study - Menu trái → Firestore Database → tab Rules
- Xóa toàn bộ nội dung cũ
- Mở file
firebase-setup/firestore.rules(trong repo này), copy toàn bộ nội dung - Paste vào Firebase Rules editor
- Bấm Publish
- Mở web:
https://teiv17402.github.io/AVA-Study/ - Tự động redirect sang
login.html - Bấm "Đăng nhập bằng Google" → đăng nhập bằng tài khoản
lehoangviet.17042002@gmail.com - Vì email này là admin nên header sẽ có thêm nút "⚙ Quản trị"
- Bấm Quản trị trên header
- Bấm + Thêm khóa học → nhập tên + mô tả → Lưu
- Trong khóa vừa tạo, bấm + Thêm bài → nhập:
- Tên bài
- Google Drive File ID (xem hướng dẫn bên dưới)
- Thời lượng (giây)
- Mô tả
- Lưu. Quay lại trang chủ là thấy.
- Upload video MP4 lên Google Drive
- Click chuột phải → Chia sẻ → đổi thành "Bất kỳ ai có liên kết" quyền Người xem
- Bấm Sao chép liên kết — sẽ có dạng:
https://drive.google.com/file/d/1abcDEFghiJKLmnoPQRstuVWXyz/view?usp=sharing - Phần giữa
/d/và/viewlà File ID — copy vào ô "Google Drive File ID"
- Admin: chỉ email
lehoangviet.17042002@gmail.com(cấu hình trongassets/firebase.js, mụcADMIN_EMAILS) - User: mọi email khác đăng nhập Google đều thành user thường, chỉ học được, không vào được admin
Mở assets/firebase.js, sửa:
export const ADMIN_EMAILS = [
"lehoangviet.17042002@gmail.com",
"newadmin@gmail.com" // ← thêm dòng này
];Đồng thời sửa firebase-setup/firestore.rules cho phép admin mới:
function isAdmin() {
return isSignedIn() && (
request.auth.token.email == "lehoangviet.17042002@gmail.com" ||
request.auth.token.email == "newadmin@gmail.com"
);
}
Rồi publish lại Rules trên Firebase Console.
→ Chưa set Firestore Rules. Làm lại Bước 2 phần Deploy.
→ Domain teiv17402.github.io chưa được add vào Authorized domains của Firebase Auth. Vào Firebase Console → Authentication → Settings → Authorized domains → Add domain.
→ Email đang đăng nhập KHÁC với email trong ADMIN_EMAILS. Đăng xuất, đăng nhập lại bằng đúng email admin.
→ Kiểm tra:
- File Drive đã share "Bất kỳ ai có liên kết" chưa?
- File ID có đúng không? (copy chính xác phần giữa
/d/và/view)