{"id":15198790,"url":"https://github.com/artyom099/auth-service","last_synced_at":"2026-04-01T21:06:20.143Z","repository":{"id":230418358,"uuid":"763915585","full_name":"Artyom099/auth-service","owner":"Artyom099","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-06T17:58:20.000Z","size":408,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-06T18:28:57.091Z","etag":null,"topics":["jwt","nest","postgres","prisma"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Artyom099.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-27T06:27:22.000Z","updated_at":"2025-04-06T17:58:24.000Z","dependencies_parsed_at":"2024-09-24T01:00:50.139Z","dependency_job_id":"69d5758e-3486-46ce-87c2-1b462f136ea4","html_url":"https://github.com/Artyom099/auth-service","commit_stats":{"total_commits":10,"total_committers":2,"mean_commits":5.0,"dds":"0.30000000000000004","last_synced_commit":"dbf0eb0d248572a18024fe2e9438e5c48636c7c8"},"previous_names":["artyom099/auth-service"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artyom099%2Fauth-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artyom099%2Fauth-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artyom099%2Fauth-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artyom099%2Fauth-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Artyom099","download_url":"https://codeload.github.com/Artyom099/auth-service/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248812258,"owners_count":21165395,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jwt","nest","postgres","prisma"],"created_at":"2024-09-28T01:41:24.745Z","updated_at":"2026-04-01T21:06:20.132Z","avatar_url":"https://github.com/Artyom099.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://nestjs.com/\" target=\"blank\"\u003e\u003cimg src=\"https://nestjs.com/img/logo-small.svg\" width=\"200\" alt=\"App Logo\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Nest-10.0.0-red\" alt=\"Nest version\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Version-v1.0-green\" alt=\"App version\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue\" alt=\"License\" /\u003e\n\u003c/p\u003e\n\n## Description\n\nProject stack: Nest, Postgres, TypeORM, Docker, Docker Compose, TypeScript, Jest, Swagger\n\n## Distribute\n\nIn progress\n\n## Documentation\n\n### Диаграмма работы авторизации через oauth\n\n```mermaid\nsequenceDiagram\n  participant user\n  participant client\n  participant server\n  participant oauth provider\n  \n  user-\u003e\u003e+client: Войти с помощью Яндекс\n  activate client\n  Note right of client: Генерация\u003cbr\u003eпараметров\n  client-\u003e\u003eclient: \n  \n  activate oauth provider\n  client-\u003e\u003e+oauth provider: Перенаправление на Яндекс\n  deactivate client\n  oauth provider-\u003e\u003e+user: Спрашивает разрешение предоставить сервису данные пользователя\n  deactivate oauth provider\n  \n  user-\u003e\u003e-oauth provider: Пользователь соглашается\n  \n  activate oauth provider\n  Note right of oauth provider: Генерация\u003cbr\u003eкода авторизации\n  oauth provider-\u003e\u003eoauth provider: \n  \n  oauth provider-\u003e\u003eserver: Передача кода\n  deactivate oauth provider\n  \n  server-\u003e\u003eoauth provider: Запрос на получение токена по коду\n  oauth provider-\u003e\u003eserver: Передача токена\n  server-\u003e\u003eoauth provider: Запрос на получение данных пользователя по токену\n  oauth provider-\u003e\u003eserver: Передача данных пользователя\n\n  Note right of server: Создание аккаунта\u003cbr\u003eпользователя\n  server-\u003e\u003eserver: \n  server-\u003e\u003eclient: Отправка пары токенов\n  client-\u003e\u003euser: Домашняя страница сервиса\n```\n\n### Сервис предоставляет следующие API:\n\n#### Регистрация и подтверждение email\n- `POST /auth/registration` - Регистрация нового пользователя\n\n- `POST /auth/registration-confirmation` - Подтверждение email после регистрации\n\n- `POST /auth/resend-confirmation-code` - Повторная отправка кода подтверждения\n\n#### Аутентификация\n- `POST /auth/login` - Вход в систему\n\n- `POST /auth/refresh-token` - Обновление токенов\n\n- `GET /auth/me` - Получение информации о текущем пользователе\n\n- `POST /auth/logout` - Выход из системы\n\n#### Восстановление пароля\n- `POST /auth/password-recovery` - Запрос на восстановление пароля\n\n- `POST /auth/confirm-password-recovery` - Подтверждение восстановления пароля\n\n- `POST /auth/update-password` - Установка нового пароля\n\n#### OAuth Аутентификация\n- `POST /auth/oauth/:type` - Аутентификация через внешние сервисы\n  - Параметр пути: type (google, github)\n  - Тело запроса: code (код авторизации от провайдера)\n  - Ответ: accessToken\n  - Cookie: refreshToken\n\n#### Управление устройствами\n- `GET /device` - Получение списка устройств пользователя\n\n- `DELETE /device` - Удаление всех устройств кроме текущего\n\n- `DELETE /device/:id` - Удаление конкретного устройства\n\nВсе эндпоинты имеют ограничение: не более 5 запросов с одного IP-адреса в течение 10 секунд.\n\n### Идеи для нового функционала:\n- Интеграция с сервисами TOTP (Google Authenticator, Authy)\n- управление ролевой моделью\n- Двухфакторная аутентификация (2FA)\n- регистрация сторонних сервисов в сервисе авторизации???\n- Поддержка SSO (Single Sign-On)\n- решить проблему: как быть, если пользователь зарелся через oauth и хочет залогинить через логин и пароль\n`\nРешить эту проблему можно, например, с помощью синхронизации почтовых адресов. Если при OAuth-аутентификации в вашей базе обнаруживается совпадение по адресу, пользователю можно отправить сообщение типа «указанная почта уже использовалась при входе другим способом, проверьте свой способ аутентификации». Это потребует дополнительных ресурсов для реализации.\n\nСуществует альтернативное решение — «магические ссылки», которые отправляются на почту, указанную пользователем при входе. Перейдя по ссылке, он начинает авторизованную сессию. Такой метод аутентификации доказал свою надёжность и уже стал стандартом в web3-сервисах.\n`\n\n### Еще ряд идей:\n- Интеграция с новыми протоколами: Включите поддержку новых протоколов, таких как WebAuthn или FIDO2, которые обеспечивают более безопасную и удобную авторизацию.\n- Использование машинного обучения: Используйте алгоритмы машинного обучения для улучшения безопасности и точности авторизации, а также для предотвращения мошенничества и других типов атак.\n- Поддержка различных типов идентификации: Добавьте поддержку различных типов идентификации, таких как биометрическая идентификация (лицо или отпечатки пальцев), голосовая идентификация или другие методы идентификации.\n- Интеграция с блокчейнами: Включите поддержку интеграции с блокчейн-технологиями, которые обеспечивают более безопасную и прозрачную авторизацию.\n- Интеграция с другими сервисами: Включите поддержку интеграции с другими сервисами и приложениями, чтобы обеспечить единую систему авторизации.\n- Аналитика и отчетность: Предоставьте пользователям возможность получать анализ и отчеты о их авторизации и безопасности.\n\n## Developers\n\n - [Artyom Golubev](https://github.com/Artyom099)\n\n## License\n\nThis project is distributed under the [MIT license]()\n\n### Создание миграции\n```\ntypeorm migration:create ./src/libs/db/migration/MIGRATION_NAME\n```\n\n## Interface\n\n![img.png](interface/login.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartyom099%2Fauth-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartyom099%2Fauth-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartyom099%2Fauth-service/lists"}