API для системы аутентификации и управления пользователями ITaM. Включает функциональность для работы с пользователями, достижениями, запросами, уведомлениями и загрузкой файлов.
- 🔐 Аутентификация и авторизация пользователей
- 👤 Управление профилями пользователей
- 🏆 Система достижений
- 📝 Управление запросами
- 🔔 Система уведомлений
- 📁 Загрузка и управление изображениями
- 📚 Swagger документация
- Go 1.19+
- PostgreSQL 12+
- Docker (опционально)
- Клонируйте репозиторий:
git clone <repository-url>
cd itam_auth- Установите зависимости:
go mod download- Создайте файл
.envна основеenv.sample:
cp env.sample .env- Настройте переменные окружения в
.env:
# Database Configuration
DB_USER=itam_user
DB_PASSWORD=itam_db
DB_HOST=localhost
DB_PORT=5432
DB_NAME=itam_auth
# JWT Configuration
JWT_SECRET_KEY=your-secret-key-here
# Migrations
MIGRATIONS_PATH=./migrations
# File Upload Configuration
UPLOAD_PATH=./uploads
MAX_FILE_SIZE=10485760
ALLOWED_TYPES=.jpg,.jpeg,.png,.gif,.webp- Примените миграции:
migrate -path migrations -database "postgres://user:password@localhost:5432/dbname?sslmode=disable" up- Запустите сервер:
go run cmd/app/main.goСервер будет доступен по адресу: http://localhost:8080
Swagger документация доступна по адресу: http://localhost:8080/auth/swagger
POST /auth/api/register- Регистрация пользователяPOST /auth/api/login- Авторизация пользователя
GET /auth/api/me- Получить текущего пользователяPATCH /auth/api/update_user_info- Обновить информацию пользователяGET /auth/api/get_user/{user_id}- Получить пользователя по ID
POST /auth/api/create_achievement- Создать достижениеGET /auth/api/get_all_achievements- Получить все достиженияGET /auth/api/get_user_achievements- Получить достижения пользователя
POST /auth/api/upload_profile_image- Загрузить изображение профиляPOST /auth/api/upload_achievement_image- Загрузить изображение достиженияGET /uploads/{filename}- Получить файлDELETE /auth/api/delete_file/{file_id}- Удалить файл
Система поддерживает загрузку изображений для профилей пользователей и достижений.
- JPEG (.jpg, .jpeg)
- PNG (.png)
- GIF (.gif)
- WebP (.webp)
- Максимальный размер файла: 10MB (настраивается)
- Только изображения
- Файлы сохраняются с уникальными именами
curl -X POST http://localhost:8080/auth/api/upload_profile_image \
-H "Authorization: Bearer <your-jwt-token>" \
-F "image=@profile.jpg"curl -X POST http://localhost:8080/auth/api/upload_achievement_image \
-H "Authorization: Bearer <your-jwt-token>" \
-F "image=@achievement.jpg" \
-F "achievement_id=uuid-of-achievement"itam_auth/
├── cmd/
│ ├── app/
│ │ └── main.go
│ └── migrator/
│ └── main.go
├── internal/
│ ├── config/
│ ├── database/
│ ├── handlers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── services/
│ └── utils/
├── migrations/
├── docs/
└── uploads/
go run cmd/app/main.go# Применение миграций
migrate -path migrations -database "postgres://user:password@localhost:5432/dbname?sslmode=disable" up
# Откат миграций
migrate -path migrations -database "postgres://user:password@localhost:5432/dbname?sslmode=disable" downswag init -g cmd/app/main.go -o docsdocker build -t itam-auth .docker run -p 8080:8080 itam-authdocker-compose up -d- JWT токены для аутентификации
- Валидация входных данных
- Проверка типов файлов
- Ограничение размера файлов
- Проверка прав доступа
MIT License
- Email: support@itam.com
- Документация:
http://localhost:8080/auth/swagger