feat: implement OAuth2 user data normalization and service integration #26

Closed
opened 2026-04-21 19:19:43 +00:00 by skettiks · 0 comments
skettiks commented 2026-04-21 19:19:43 +00:00 (Migrated from github.com)

Описание: Абстрагировать данные пользователя OAuth2 от разных провайдеров в единый формат и интегрировать с Spring Security через CustomOAuth2UserService с логикой найти-или-создать пользователя + Добавить поля OAuth2-провайдера в существующую таблицу пользователей через миграцию.

Задачи:

  • Создать абстрактный интерфейс OAuth2UserInfo в adapters/security/oauth2
  • Реализовать конкретные классы: GoogleOAuth2UserInfo, YandexOAuth2UserInfo, VkOAuth2UserInfo
  • Создать OAuth2UserInfoFactory для получения нужной реализации по провайдеру
  • Создать CustomOAuth2UserService extends DefaultOAuth2UserService
  • Переопределить метод loadUser() с логикой найти-или-создать пользователя через UserRepository
  • Создать UserPrincipal implements OAuth2User, UserDetails для представления аутентифицированного пользователя
  • Обработать OAuth2AuthenticationException для некорректных данных от провайдера
  • Создать V2__add_oauth2_fields.sql
  • Добавить поля: provider, provider_id, created_at
  • Добавить уникальный индекс на (provider, provider_id)
  • Проверить работу на H2 и PostgreSQL

Ветка: feat/oauth2-user-service-26

Описание: Абстрагировать данные пользователя OAuth2 от разных провайдеров в единый формат и интегрировать с Spring Security через CustomOAuth2UserService с логикой найти-или-создать пользователя + Добавить поля OAuth2-провайдера в существующую таблицу пользователей через миграцию. Задачи: - Создать абстрактный интерфейс OAuth2UserInfo в adapters/security/oauth2 - Реализовать конкретные классы: GoogleOAuth2UserInfo, YandexOAuth2UserInfo, VkOAuth2UserInfo - Создать OAuth2UserInfoFactory для получения нужной реализации по провайдеру - Создать CustomOAuth2UserService extends DefaultOAuth2UserService - Переопределить метод loadUser() с логикой найти-или-создать пользователя через UserRepository - Создать UserPrincipal implements OAuth2User, UserDetails для представления аутентифицированного пользователя - Обработать OAuth2AuthenticationException для некорректных данных от провайдера - Создать V2__add_oauth2_fields.sql - Добавить поля: provider, provider_id, created_at - Добавить уникальный индекс на (provider, provider_id) - Проверить работу на H2 и PostgreSQL Ветка: feat/oauth2-user-service-26
Sign in to join this conversation.