Русский English

Система аутентификации через Telegram

Данная система предназначена для аутентификации пользователей через Telegram. Она обеспечивает безопасный и удобный способ реализации функционала входа с использованием механизма аутентификации Telegram и QR-кодов.

Возможности

🔒 Безопасная аутентификация

Аутентификация через Telegram с использованием QR-кодов, без необходимости ввода пароля.

👤 Управление пользователями

Полноценная система пользователей с ролями и разрешениями.

🏢 Организации и отделы

Управление организационной структурой с поддержкой множества организаций и отделов.

📊 Отслеживание сессий

Детальное отслеживание пользовательских сессий и управление доступом.

🔄 Управление периодами

Система периодов для циклических процессов.

Технический стек

Начало работы

Для использования этого API:

  1. Настройте переменные окружения в файле .env (см. раздел "Конфигурация")
  2. Установите зависимости с помощью npm install
  3. Запустите сервер с помощью npm start или npm run dev для разработки

Конфигурация

Необходимые переменные окружения:

# Сервер
PORT=3000
NODE_ENV=development

# База данных
DB_HOST=localhost
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name
DB_PORT=3306

# Telegram бот
BOT_TOKEN=your_telegram_bot_token
BOT_USERNAME=your_bot_username

# Аутентификация
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=7d
SESSION_EXPIRE_MINUTES=5

# Фронтенд
FRONTEND_URL=http://localhost:3000
    

Миграции базы данных

Система использует автоматические миграции Sequelize для поддержания актуальной схемы базы данных.

Для сброса базы данных (ВНИМАНИЕ: это удалит все данные):

npm run reset-db

Для создания администратора используйте:

npm run create-admin

Документация API

Полная документация API доступна по адресу /docs с использованием Swagger UI. Она предоставляет интерактивный интерфейс для тестирования всех эндпоинтов API.

Конечные точки аутентификации

POST /api/auth/generate

Генерирует новую сессию аутентификации для входа по QR-коду

GET /api/auth/status/:key

Возвращает статус сессии аутентификации

POST /api/auth/register

Регистрирует нового пользователя с предоставленной информацией

GET /api/auth/check/:snils

Проверяет, существует ли пользователь с указанным СНИЛС

Конечные точки пользователя

GET /api/user/me

Возвращает информацию о текущем аутентифицированном пользователе

GET /api/user/:telegramId

Возвращает информацию о пользователе по его Telegram ID

GET /api/user

Возвращает список всех пользователей (требуются права администратора)

PUT /api/user/profile

Обновляет профиль текущего пользователя

PUT /api/user/:id

Обновляет информацию о пользователе (требуются права администратора)

Организации и отделы

GET /api/organization

Получает список всех организаций

GET /api/department

Получает список всех отделов

Периоды

GET /api/period

Получает список всех периодов

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

package.json          # Конфигурация проекта
public/               # Статические файлы
  index.html          # Страница документации
src/
  server.js           # Основная точка входа приложения
  bot/                # Реализация Telegram бота
  config/             # Файлы конфигурации
  controllers/        # Контроллеры API
  docs/               # Документация Swagger
  middleware/         # Middleware Express
  migrations/         # Миграции базы данных
  models/             # Модели Sequelize
  routes/             # Маршруты API
  scripts/            # Служебные скрипты
  services/           # Бизнес-логика
    

Лицензия

Этот проект лицензирован по лицензии ISC.

Контакты

По вопросам или поддержке обращайтесь: support@luk-sirius.ru


© 2025 Система аутентификации Telegram

Telegram Auth System

This is a system for authenticating users via Telegram. It provides a secure and convenient way to implement login functionality using Telegram's authentication mechanism and QR codes.

Features

🔒 Secure Authentication

QR code-based Telegram authentication without the need for passwords.

👤 User Management

Comprehensive user system with 3-tier role system: User, Teacher, Admin.

🏢 Organizations & Departments

Manage organizational structure with support for multiple organizations and departments.

📊 Session Tracking

Detailed tracking of user sessions and access management.

🔄 Period Management

Period system for cyclical processes.

Tech Stack

Getting Started

To use this API:

  1. Set up your environment variables in a .env file (see Configuration section)
  2. Install dependencies with npm install
  3. Start the server with npm start or npm run dev for development

Configuration

Required environment variables:

# Server
PORT=3000
NODE_ENV=development

# Database
DB_HOST=localhost
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name
DB_PORT=3306

# Telegram Bot
BOT_TOKEN=your_telegram_bot_token
BOT_USERNAME=your_bot_username

# Auth
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=7d
SESSION_EXPIRE_MINUTES=5

# Frontend
FRONTEND_URL=http://localhost:3000
    

Database Migrations

The system uses Sequelize's auto-migration functionality to keep the database schema up to date.

To reset the database (WARNING: this will delete all data):

npm run reset-db

To create an admin user:

npm run create-admin

API Documentation

Full API documentation is available at /docs using Swagger UI. It provides an interactive interface for testing all API endpoints.

Authentication Endpoints

POST /api/auth/generate

Generates a new authentication session for QR code login

GET /api/auth/status/:key

Returns the status of an authentication session

POST /api/auth/register

Registers a new user with the provided information

GET /api/auth/check/:snils

Checks if a user with the given SNILS exists

User Endpoints

GET /api/user/me

Returns information about the currently authenticated user

GET /api/user/:telegramId

Returns information about a user by their Telegram ID

GET /api/user

Returns a list of all users (requires admin rights)

PUT /api/user/profile

Updates the current user's profile

PUT /api/user/:id

Updates user information (requires admin rights)

PUT /api/user/:id/role

Updates user role - supports: user, teacher, admin (requires admin rights)

Organizations and Departments

GET /api/organization

Gets a list of all organizations

GET /api/department

Gets a list of all departments

Periods

GET /api/period

Gets a list of all periods

Project Structure

package.json          # Project configuration
public/               # Static files
  index.html          # Documentation page
src/
  server.js           # Main application entry point
  bot/                # Telegram bot implementation
  config/             # Configuration files
  controllers/        # API route controllers
  docs/               # Swagger documentation
  middleware/         # Express middleware
  migrations/         # Database migrations
  models/             # Sequelize models
  routes/             # API routes
  scripts/            # Utility scripts
  services/           # Business logic
    

License

This project is licensed under the ISC License.

Contact

For support or questions, please contact: support@luk-sirius.ru


© 2025 Telegram Auth System