Update README.md
Build and push Docker Image / Build-and-Docker-Image (push) Successful in 36s

This commit is contained in:
wt
2025-07-16 15:05:06 +07:00
parent c42a9cd0cf
commit 7d234a30d0
2 changed files with 280 additions and 22 deletions
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Auth Service Go
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+259 -22
View File
@@ -1,42 +1,279 @@
# auth_service
# Auth Service Go
- [routes](#routes)
- [build](#build)
- [configure](#configure)
- [exaple](#example)
Микросервис аутентификации и авторизации, написанный на Go. Предоставляет REST API для управления пользователями, аутентификации через JWT токены и контроля доступа.
## routes
## Возможности
- `/api/token` - Auth by username/password return token
- `/api/token/verify` - Verify token
- `/api/access` - Access request by token
- `/api/register` - Register user
- `/api/users` - Get all users data
- `/api/users/user` - Get user data
- `/api/users/password` - Change user password
- `/api/users/change` - Change user data
- `/api/users/del` - Delete user
- `/api/users/add` - Add user
- 🔐 JWT токены для аутентификации
- 👥 Управление пользователями (создание, обновление, удаление)
- 🗄️ SQLite база данных с GORM
- 🔒 Поддержка TLS/SSL
- 📝 Регистрация пользователей (опционально)
- ⚙️ Гибкая конфигурация через переменные окружения
- 🐳 Docker поддержка
## buuild
## Требования
```shell
- Go 1.24.3 или новее
- SQLite3
## Установка
### Из исходного кода
```bash
git clone <repository-url>
cd auth_service_go
go mod download
go build
```
## configure
### example
### Docker
```bash
docker build -t auth_service .
docker run -p 8090:8090 auth_service
```
## Конфигурация
Создайте файл `.env` или установите переменные окружения:
```env
# Файлы базы данных
USERS_FILE=users.json
USERS_DB=users.db
# Настройки регистрации
ENABLE_SELF_REGISTER=false
# TLS настройки
ENABLE_TLS=false
CERT_FILE=/data/file.crt
KEY_FILE=/data/file/key
KEY_FILE=/data/file.key
# Настройки сервера
SERVER_ADDRESS=0.0.0.0
SERVER_PORT=8090
```
### Параметры конфигурации
| Параметр | Описание | Значение по умолчанию |
|----------|----------|----------------------|
| `USERS_FILE` | Путь к JSON файлу с пользователями | `users.json` |
| `USERS_DB` | Путь к SQLite базе данных | `users.db` |
| `ENABLE_SELF_REGISTER` | Разрешить самостоятельную регистрацию | `false` |
| `ENABLE_TLS` | Включить TLS/SSL | `false` |
| `CERT_FILE` | Путь к SSL сертификату | - |
| `KEY_FILE` | Путь к SSL ключу | - |
| `SERVER_ADDRESS` | IP адрес сервера | `0.0.0.0` |
| `SERVER_PORT` | Порт сервера | `8090` |
## API Документация
### Аутентификация
#### POST `/api/token`
Аутентификация пользователя по логину и паролю.
**Запрос:**
```json
{
"username": "user",
"password": "password"
}
```
**Ответ:**
```json
{
"token": "jwt_token_here",
"expires_at": "2024-01-01T00:00:00Z"
}
```
#### POST `/api/token/verify`
Проверка валидности JWT токена.
**Запрос:**
```json
{
"token": "jwt_token_here"
}
```
**Ответ:**
```json
{
"valid": true,
"user_id": "user_id_here"
}
```
#### POST `/api/access`
Запрос доступа с использованием токена.
**Заголовки:**
```
Authorization: Bearer jwt_token_here
```
### Управление пользователями
#### POST `/api/register`
Регистрация нового пользователя.
**Запрос:**
```json
{
"username": "newuser",
"password": "password",
"email": "user@example.com"
}
```
#### GET `/api/users`
Получение списка всех пользователей.
**Заголовки:**
```
Authorization: Bearer jwt_token_here
```
#### GET `/api/users/user`
Получение информации о текущем пользователе.
**Заголовки:**
```
Authorization: Bearer jwt_token_here
```
#### PUT `/api/users/password`
Изменение пароля пользователя.
**Запрос:**
```json
{
"old_password": "old_password",
"new_password": "new_password"
}
```
#### PUT `/api/users/change`
Изменение данных пользователя.
**Запрос:**
```json
{
"email": "new_email@example.com",
"first_name": "John",
"last_name": "Doe"
}
```
#### POST `/api/users/add`
Добавление нового пользователя (администратор).
**Запрос:**
```json
{
"username": "newuser",
"password": "password",
"email": "user@example.com",
"role": "user"
}
```
#### DELETE `/api/users/del`
Удаление пользователя.
**Запрос:**
```json
{
"user_id": "user_id_here"
}
```
## Примеры использования
### Получение токена
```bash
curl -X POST http://localhost:8090/api/token \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "password"}'
```
### Использование токена
```bash
curl -X GET http://localhost:8090/api/users \
-H "Authorization: Bearer your_jwt_token_here"
```
### Регистрация пользователя
```bash
curl -X POST http://localhost:8090/api/register \
-H "Content-Type: application/json" \
-d '{"username": "newuser", "password": "password", "email": "user@example.com"}'
```
## Разработка
### Структура проекта
```
auth_service_go/
├── api/ # API обработчики
├── database/ # Работа с базой данных
├── model/ # Модели данных
├── server/ # Настройка сервера
├── utils/ # Утилиты
├── main.go # Входная точка
├── go.mod # Зависимости Go
└── README.md # Документация
```
### Запуск для разработки
```bash
# Установка зависимостей
go mod tidy
# Запуск с горячей перезагрузкой (требует air)
air
# Обычный запуск
go run main.go
```
### Сборка
```bash
# Сборка для текущей платформы
go build
# Сборка для Linux
GOOS=linux GOARCH=amd64 go build
# Сборка для Windows
GOOS=windows GOARCH=amd64 go build
```
## Безопасность
- Используйте HTTPS в продакшене
- Регулярно обновляйте зависимости
- Используйте сильные пароли
- Настройте правильные разрешения для файлов базы данных
- Не храните секреты в коде
## Лицензия
Этот проект лицензируется под MIT лицензией. Смотрите файл [LICENSE](LICENSE) для подробностей.
## Поддержка
При возникновении проблем создайте issue в репозитории проекта.