Skip to content

sava11/GBData

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GBData - Система управления пользователями

Веб-приложение для управления пользователями медицинской информационной системы ФГБУ ФНОЦ МСЭ и Р им. Г.А. Альбрехта Минтруда России.

Описание

GBData представляет собой Node.js веб-приложение, построенное на базе Express.js, которое предоставляет функциональность для:

  • Аутентификации пользователей
  • Управления данными пользователей (добавление, редактирование, удаление)
  • Просмотра статистики и попыток пользователей в играх
  • Генерации PDF отчетов с графиками прогресса

Технологии

  • Backend: Node.js, Express.js
  • База данных: MySQL с использованием mysql2
  • Шаблонизатор: EJS с express-ejs-layouts
  • Аутентификация: Express-session
  • CSS Framework: Bulma
  • Графики: Chart.js с chartjs-node-canvas для серверного рендеринга
  • PDF генерация: Puppeteer
  • Хеширование: Crypto (SHA-256)

Структура проекта

/
├── app.js                 # Главный файл приложения
├── controllers/           # Контроллеры приложения
│   ├── authController.js  # Аутентификация
│   └── homeController.js  # Основная логика
├── routes/               # Маршрутизация
│   ├── authRouter.js     # Маршруты аутентификации
│   └── homeRouter.js     # Основные маршруты
├── views/                # Шаблоны EJS
│   ├── layouts/          # Макеты страниц
│   ├── auth/             # Страницы аутентификации
│   ├── user/             # Страницы пользователей
│   └── error.ejs         # Страница ошибок
├── dataBase/             # Конфигурация базы данных
│   └── dataBase.js       # Пул соединений MySQL
├── public/               # Статические файлы
│   ├── css/              # Стили
│   ├── imgs/             # Изображения
│   ├── bulma-1.0.2/      # CSS фреймворк
│   └── chart.js/         # Библиотека графиков
├── db.sql                # Скрипт создания базы данных
└── package.json          # Зависимости проекта

Установка и настройка

Предварительные требования

  • Node.js (версия 14 или выше)
  • MySQL Server
  • npm или yarn

1. Клонирование репозитория

git clone <repository-url>
cd Site

2. Установка зависимостей

npm install

3. Настройка базы данных

Создайте базу данных MySQL и выполните скрипт db.sql:

mysql -u root -p < db.sql

4. Конфигурация переменных окружения

Создайте файл .env в корне проекта:

PORT=3000
NODE_ENV=development
SECRET_KEY=your-secret-key-here
DB_HOST=localhost
DB_PORT=3306
DB_USER=your-db-user
DB_PASSWORD=your-db-password
DB_NAME=geometrybeatdb

5. Запуск приложения

Для запуска в режиме разработки:

npm run dev

Для запуска в продакшене:

npm start

Сервер будет доступен по адресу: http://localhost:3000

API Endpoints

Аутентификация

  • GET /login - Страница входа
  • POST /login - Обработка входа
  • GET /logout - Выход из системы

Пользователи

  • GET / - Список пользователей (требует аутентификации)
  • GET /add - Форма добавления пользователя
  • POST /add - Создание пользователя
  • GET /edit/:login - Форма редактирования пользователя
  • POST /edit/:login - Обновление данных пользователя
  • POST /delete/:login - Запрос на удаление пользователя

Статистика и отчеты

  • GET /attempts/:login - Просмотр попыток пользователя
  • GET /attempts/:login/pdf-report - Скачивание PDF отчета

База данных

Основные таблицы

  • users - Пользователи системы
  • user_level_records - Записи попыток пользователей по уровням
  • user_delete_requests - Запросы на удаление пользователей
  • user_statuses - Справочник статусов пользователей

Хранимые процедуры

  • create_delete_request(login) - Создание запроса на удаление
  • cancel_delete_request(login) - Отмена запроса на удаление
  • execute_delete_request(login) - Выполнение удаления данных

Безопасность

  • Хеширование паролей с использованием SHA-256
  • Защита от SQL-инъекций через подготовленные запросы
  • HttpOnly cookies для сессий
  • Валидация входных данных
  • Обработка ошибок без раскрытия чувствительной информации в продакшене

Разработка

Доступные скрипты

  • npm start - Запуск сервера
  • npm run dev - Запуск в режиме разработки с nodemon
  • npm test - Запуск тестов (не реализованы)

Структура кода

  • Контроллеры содержат бизнес-логику и обработку запросов
  • Маршруты определяют endpoints и связывают их с контроллерами
  • Представления используют EJS для рендеринга HTML
  • Модели (база данных) используют mysql2 для взаимодействия с MySQL

Развертывание

Для развертывания в продакшене:

  1. Установите переменную окружения NODE_ENV=production
  2. Настройте обратный прокси (nginx/apache)
  3. Убедитесь, что база данных доступна
  4. Запустите приложение через process manager (pm2)

Лицензия

ISC License

Автор

sava

About

Проект Емельяненко Савелия - "Игровая среда "GeometryBeat" для развития реакции у пользователей". Веб серверная часть.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors