Skip to content

demig00d/identity-service

Repository files navigation

actions status

Запуск

1. Создать файл с настройками

mv env.template .env

2. Запустить сервис

go run cmd/app/main.go

или, используя make и docker-compose, запустите сервис вместе с MongoDB:

make compose-up

Тесты

go test -v -cover -race ./internal/...

или через make

make test

Ручки

Сервисные ручки

  • GET /healthz - Kubernetes Liveness probe
  • GET /swagger/index.html - Документация Swagger

Аутентификация и авторизация

POST /auth/authenticate

Описание: Аутентифицирует пользователя. Выдаёт UUID пользователя и отправляет код подтверждения на указанный email.

Параметры:

Параметр Тип Описание Обязательный
email string Адрес электронной почты пользователя Да

Заголовки:

Заголовок Описание
X-Device-Fingerprint SHA-256 хэш отпечатка устройства

Ответы:

Код состояния Описание Тело ответа
200 Пользователь найден { "user_id": "UUID" }
201 Пользователь создан { "user_id": "UUID" }
400 Неверный запрос { "error": "сообщение об ошибке" }

POST /auth/token

Описание: Получает токены доступа и обновления после ввода кода подтверждения.

Параметры:

Параметр Тип Описание Обязательный
code integer Код подтверждения Да

Заголовки:

Заголовок Описание
X-User-Id UUID пользователя
X-Device-Fingerprint SHA-256 хэш отпечатка устройства

Ответы:

Код состояния Описание Тело ответа
200 Токены выданы { "access_token": "string", "refresh_token": "string" }1
400 Неверный запрос { "error": "сообщение об ошибке" }
401 UUID пользователя не указан или пользователь не найден { "error": "сообщение об ошибке" }
403 Неверный код подтверждения { "error": "сообщение об ошибке" }

POST /auth/token/refresh

Описание: Обновляет токен доступа.

Параметры:

Параметр Тип Описание Обязательный
refresh_token string Токен обновления 2 Да

Заголовки:

Заголовок Описание
X-User-Id UUID пользователя
X-Device-Fingerprint SHA-256 хэш отпечатка устройства

Ответы:

Код состояния Описание Тело ответа
200 Токен доступа обновлён { "access_token": "string" }
400 Неверный запрос { "error": "сообщение об ошибке" }
401 UUID пользователя не указан или пользователь не найден { "error": "сообщение об ошибке" }
403 Неверный токен обновления { "error": "сообщение об ошибке" }

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

POST /users/{user_id}/profile

Описание: Создает профиль пользователя.

Параметры:

Параметр Тип Описание Обязательный
username string Никнейм пользователя Да
firstname string Имя пользователя Да
lastname string Фамилия пользователя Нет

Заголовки:

Заголовок Описание
X-Device-Fingerprint SHA-256 хэш отпечатка устройства

Ответы:

Код состояния Описание Тело ответа
201 Профиль пользователя создан
400 Неверный запрос { "error": "сообщение об ошибке" }
404 Пользователь не найден { "error": "сообщение об ошибке" }
409 Ник пользователя занят { "error": "сообщение об ошибке" }

PATCH /users/{user_id}/profile

Описание: Изменяет профиль пользователя.

Параметры:

Параметр Тип Описание Обязательный
username string Никнейм пользователя Нет
firstname string Имя пользователя Нет
lastname string Фамилия пользователя Нет

Заголовки:

Заголовок Описание
X-Device-Fingerprint SHA-256 хэш отпечатка устройства

Ответы:

Код состояния Описание Тело ответа
200 Профиль пользователя обновлён
400 Неверный запрос { "error": "сообщение об ошибке" }
404 Профиль пользователя не найден { "error": "сообщение об ошибке" }
409 Ник пользователя занят { "error": "сообщение об ошибке" }

GET /users/{user_id}/profile

Описание: Получает профиль пользователя.

Параметры:

Нет

Заголовки:

Заголовок Описание
X-Device-Fingerprint SHA-256 хэш отпечатка устройства

Ответы:

Код состояния Описание Тело ответа
200 Профиль найден { "firstname": "string", "lastname": "string", "email": "string" }
400 Неверный запрос { "error": "сообщение об ошибке" }
404 Пользователь или профиль пользователя не найдены { "error": "сообщение об ошибке" }

GET /users/search

Описание: Поиск пользователей по никнейму с использованием нечеткого поиска

Параметры:

Параметр Тип Описание Обязательный
searchTerm string Строка для поиска Да

Заголовки:

Заголовок Описание
X-Device-Fingerprint SHA-256 хэш отпечатка устройства

Ответы:

Код состояния Описание Тело ответа
200 Пользователи найдены [{ "user_id": "UUID", "profile": { "firstname": "string", "lastname": "string", "username": "string" }, "score": "number" }]
400 Неверный запрос { "error": "сообщение об ошибке" }

Footnotes

  1. refresh_token вохращается в теле ответа, но не доходит до клиента, так как API Gateway устанавливает его в куки.

  2. API Gateway сам ставит это поле, доставая из httpOnly кук

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published