module
0.0.0-20240122115852-d299c2136466
Repository: https://github.com/yury132/golang-task-1.git
Documentation: pkg.go.dev
# README
Задание №1
Необходимо создать сервис реализующий авторизацию через Google OAuth2.
Сервис должен выполнять следующий сценарий:
- Пользователь инициирует авторизацию перейдя на некий путь, например /auth
- Сервис перенаправляет пользователя на авторизацию через Google, где пользователь авторизуется введя свой логин и пароль
- Google перенаправляет пользователя обратно на сервис, подставляя в query данные для получения информации об авторизовавшемся пользователе
- Сервис должен получить данные о пользователе и авторизовать его в системе, автоматически создавая нового пользователя при его отсутствии в БД
- В результате авторизации сервис должен создать сессию пользователя, которую можно использовать через Cookie или заголовок Authorization
- При корректной работе механизма, пользователь должен иметь возможность запросить метод /me, который вернет информацию о текущем авторизованном пользователе или ошибку 401 при отсутствии авторизации
Требования:
- Использовать 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 файл из проекта
-
Скопировать docker-compose.yml в новую папку "postgresql"
-
Выполнить в терминале команду
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.
Для нового пользователя создается запись в БД.
Также создается сессия.
- Кнопка "Информация обо мне" - получение имени пользователя и адреса электронной почты.
Если пользователь неавторизован - выдается сообщение об ошибке.
- Кнопка "Выход из системы" - окончание сессии, переход на главную страницу.
- Получение текущего списка пользователей в БД по адресу:
http://localhost:8080/users-list
# Packages
No description provided by the author