Создайте аккаунт, чтобы обсуждать учёбу и олимпиады с одноклассниками и писать письма учителям.
Есть вопрос, идея или жалоба? Напишите письмо директору или учителю. Его прочитает только администрация школы.
Форум
Обсуждайте учёбу, олимпиады, кружки и школьную жизнь.
Войдите или зарегистрируйтесь, чтобы читать обсуждения и создавать темы.
Учителя
Педагогический коллектив школы. Нажмите на имя, чтобы прочитать биографию.
Победители олимпиад
Ученики, занявшие призовые места.
Достижения школы
Конкурсы, соревнования, проекты и награды.
Письма
Напишите директору или учителю. Письмо видите только вы и администрация школы. Ответ появится здесь же.
Так директор или учитель будет знать, кому ответить. Ответ придёт сюда же.
Настройка аккаунтов
Сейчас аккаунты и записи хранятся только в этом браузере. Чтобы ученики регистрировались с любых устройств и видели сообщения друг друга, подключите бесплатный Firebase от Google. Это займёт около 15 минут. Эту вкладку видят только администраторы.
Создайте проект
- Откройте console.firebase.google.com и войдите через Google.
- Нажмите Create a project и назовите его, например,
foton-school. - Google Analytics можно выключить. Нажмите Create.
Включите вход по паролю
- Слева: Build → Authentication → Get started.
- Вкладка Sign-in method → Email/Password: включите первый переключатель и нажмите Save.
Создайте базу данных и вставьте правила
- Слева: Build → Firestore Database → Create database, регион
europe-west, режим Production. - Откройте вкладку Rules, удалите всё, вставьте правила ниже и нажмите Publish.
rules_version = '2'; // Правила базы данных для сайта варжарана «Фотон». // Вставьте этот текст в Firebase → Firestore Database → Rules и нажмите Publish. service cloud.firestore { match /databases/{database}/documents { function signedIn() { return request.auth != null; } function isAdmin() { return signedIn() && exists(/databases/$(database)/documents/users/$(request.auth.uid)) && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin'; } // Профили учеников: имя и класс видят все вошедшие. // Роль (admin) ученик сам себе поставить не может. match /users/{uid} { allow read: if signedIn(); allow create: if signedIn() && request.auth.uid == uid && !('role' in request.resource.data) && request.resource.data.name is string && request.resource.data.name.size() <= 60; allow update: if isAdmin() || (signedIn() && request.auth.uid == uid && !request.resource.data.diff(resource.data).affectedKeys().hasAny(['role'])); allow delete: if isAdmin(); } // Форум: читать и писать могут только вошедшие ученики. match /topics/{topicId} { allow read: if signedIn(); allow create: if signedIn() && request.resource.data.author == request.auth.uid; allow update: if isAdmin() || (signedIn() && resource.data.author == request.auth.uid) || (signedIn() && request.resource.data.diff(resource.data).affectedKeys().hasOnly(['lastAt'])); allow delete: if isAdmin() || (signedIn() && resource.data.author == request.auth.uid); match /replies/{replyId} { allow read: if signedIn(); allow create: if signedIn() && request.resource.data.author == request.auth.uid; allow delete: if isAdmin() || (signedIn() && resource.data.author == request.auth.uid); } } // Учителя, олимпиады, достижения, название школы: // видят все посетители, меняет только администрация. match /data/school/{rest=**} { allow read: if true; allow write: if isAdmin(); } // Письма: ученик видит только свои письма, администрация видит все. match /letters/{uid} { allow read, write: if isAdmin() || (signedIn() && request.auth.uid == uid); } } }- Слева: Build → Firestore Database → Create database, регион
Подключите сайт к проекту
- Шестерёнка рядом с Project Overview → Project settings.
- Внизу, в разделе Your apps, нажмите значок
</>(Web), введите название и нажмите Register app. - Скопируйте всё, что в фигурных скобках после
const firebaseConfig =, вместе со скобками. - Откройте этот HTML-файл в Блокноте, найдите строку
const FIREBASE_CONFIG = null;в самом начале скрипта и заменитеnullна скопированное. Сохраните файл.
const FIREBASE_CONFIG = { apiKey: "AIza...", authDomain: "foton-school.firebaseapp.com", projectId: "foton-school", storageBucket: "foton-school.appspot.com", messagingSenderId: "1234567890", appId: "1:1234567890:web:abc123" };Выложите сайт в интернет
Вход через Firebase не работает, если открыть файл двойным щелчком, поэтому сайт нужно разместить в интернете.
- Переименуйте файл в
index.htmlи положите его в отдельную папку. - Откройте app.netlify.com/drop и перетащите туда эту папку. Вы получите адрес вида
что-то.netlify.app. - В Firebase: Authentication → Settings → Authorized domains → Add domain, добавьте этот адрес без
https://.
- Переименуйте файл в
Сделайте себя администратором
- Откройте свой сайт и зарегистрируйтесь.
- В Firebase: Firestore Database → Data → users, найдите документ со своим именем.
- Add field: имя
role, типstring, значениеadmin. Нажмите Save и обновите сайт.
Так же можно сделать администратором директора или учителя.
Заполните сайт
- «Учителя» → «Загрузить 20 примеров учителей» или сразу добавляйте настоящих.
- Добавьте победителей олимпиад и достижения.
- Письма учеников появятся в «Письма» → «Входящие».
Если ученик забыл пароль: Authentication → Users, найдите
логин@foton-school.app→ три точки → Delete account. После этого он может зарегистрироваться заново.