Categorygithub.com/Yury132/Golang-Task-1
module
0.0.0-20240122115852-d299c2136466
Repository: https://github.com/yury132/golang-task-1.git
Documentation: pkg.go.dev

# README

Задание №1

Необходимо создать сервис реализующий авторизацию через Google OAuth2.

Сервис должен выполнять следующий сценарий:

  1. Пользователь инициирует авторизацию перейдя на некий путь, например /auth
  2. Сервис перенаправляет пользователя на авторизацию через Google, где пользователь авторизуется введя свой логин и пароль
  3. Google перенаправляет пользователя обратно на сервис, подставляя в query данные для получения информации об авторизовавшемся пользователе
  4. Сервис должен получить данные о пользователе и авторизовать его в системе, автоматически создавая нового пользователя при его отсутствии в БД
  5. В результате авторизации сервис должен создать сессию пользователя, которую можно использовать через Cookie или заголовок Authorization
  6. При корректной работе механизма, пользователь должен иметь возможность запросить метод /me, который вернет информацию о текущем авторизованном пользователе или ошибку 401 при отсутствии авторизации

Требования:

  1. Использовать PostgreSQL15-16 версии в качестве базы данных. И данный драйвер для работы с PostgeSQL в GoLang - https://github.com/jackc/pgx (v5)

Развертка

  • Склонировать репозиторий
git clone https://github.com/Yury132/Golang-Task-1.git
  • Установить PostgreSQL в Docker контейнер, используя docker-compose.yml файл из проекта
  1. Скопировать docker-compose.yml в новую папку "postgresql"

  2. Выполнить в терминале команду

docker compose up
  • Подключиться к базе данных PostgreSQL (Например, через DBeaver)

POSTGRES_DB: mydb

POSTGRES_USER: root

POSTGRES_PASSWORD: mydbpass

Port: 5432

Host: localhost

  • Скопировать полученный файл .env по пути Golang-Task-1/internal/config

  • Запустить веб-приложение командой

go run cmd/main.go

Тестирование

  • Перейти в браузер
http://localhost:8080
  • Кнопка "Авторизация" - авторизация пользователя в системе через Google OAuth2.

alt text

Для нового пользователя создается запись в БД.

Также создается сессия.

alt text

  • Кнопка "Информация обо мне" - получение имени пользователя и адреса электронной почты.

alt text

Если пользователь неавторизован - выдается сообщение об ошибке.

  • Кнопка "Выход из системы" - окончание сессии, переход на главную страницу.
  • Получение текущего списка пользователей в БД по адресу:
http://localhost:8080/users-list

alt text

# Packages

No description provided by the author