https://github.com/downstize/user-vault
Сервис управления пользователями с авторизацией, JWT и CRUD-операциями. Проект реализован на .NET 9, с использованием PostgreSQL, JWT, Docker и Swagger.
https://github.com/downstize/user-vault
crud dot-net-9 jwt postgresql swagger
Last synced: about 1 month ago
JSON representation
Сервис управления пользователями с авторизацией, JWT и CRUD-операциями. Проект реализован на .NET 9, с использованием PostgreSQL, JWT, Docker и Swagger.
- Host: GitHub
- URL: https://github.com/downstize/user-vault
- Owner: Downstize
- License: mit
- Created: 2025-05-17T19:52:19.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-17T20:05:55.000Z (about 1 year ago)
- Last Synced: 2025-06-13T12:11:45.040Z (12 months ago)
- Topics: crud, dot-net-9, jwt, postgresql, swagger
- Language: C#
- Homepage:
- Size: 11.2 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🛡️ UserVault API
**Сервис управления пользователями с авторизацией, JWT и CRUD-операциями.**
Проект реализован на **.NET 9**, с использованием **PostgreSQL**, **JWT**, **Docker** и **Swagger**.
---
## 📌 Функциональность
- **Авторизация** по логину и паролю с выдачей JWT-токена.
- **Роли**: `Admin` и `User`, с разграничением доступа к API.
- **CRUD-операции над пользователями**:
- создание
- изменение имени, логина, пароля, даты рождения и пола
- мягкое удаление и восстановление
- запросы пользователей по фильтрам
- **Swagger UI** для взаимодействия с API.
- **Хранение пользователей в PostgreSQL**.
---
## 🛠️ Технологии
- **.NET 9 (ASP.NET Core Web API)**
- **Entity Framework Core**
- **PostgreSQL**
- **JWT (аутентификация и авторизация)**
- **Docker + Docker Compose**
- **Serilog (логгирование)**
- **Swagger/OpenAPI**
---
## 📂 Структура проекта
```
📦 UserVault
┣ 📂 Controllers # AuthController и UsersController
┣ 📂 Services # JWT-сервис и бизнес-логика пользователей
┣ 📂 Models # Сущность User и enum
┣ 📂 Dtos # DTO-модели
┣ 📂 Data # AppDbContext (EF Core)
┣ 📜 Program.cs # Конфигурация приложения
┣ 📜 appsettings.json # Настройки БД и JWT
┣ 📜 Dockerfile # Docker-образ приложения
┣ 📜 docker-compose.yml # Docker Compose с БД
````
---
## 🚀 Запуск проекта
1️⃣ Клонирование репозитория и запуск:
```bash
git clone https://github.com/your-user/uservault.git
cd uservault
docker-compose up --build
````
2️⃣ Swagger будет доступен по адресу:
```
http://localhost:5470/swagger
```
---
## 🔐 Авторизация и роли
После запуска:
* Предсоздан пользователь:
```
Login: admin
Password: admin123
```
* Получить JWT токен через `/auth/login`:
```json
{
"login": "admin",
"password": "admin123"
}
```
* Вставить токен в Swagger через кнопку "Authorize (Замочек в правом верхнем углу)" как:
```
token
```
---
## 📌 Основные эндпоинты
| Метод | Путь | Доступ | Описание |
| -------- | ------------------------------------ | ---------- | ---------------------------- |
| `POST` | `/auth/login` | Все | Авторизация |
| `POST` | `/api/users/create` | Admin | Создать пользователя |
| `PUT` | `/api/users/update/name/{login}` | Admin/User | Изменить имя |
| `PUT` | `/api/users/update/password/{login}` | Admin/User | Изменить пароль |
| `PUT` | `/api/users/update/login/{login}` | Admin/User | Изменить логин |
| `DELETE` | `/api/users/{login}` | Admin | Мягкое удаление |
| `PUT` | `/api/users/restore/{login}` | Admin | Восстановление |
| `GET` | `/api/users/all` | Admin | Все активные пользователи |
| `GET` | `/api/users/by-login/{login}` | Admin | Данные по логину |
| `GET` | `/api/users/validate` | User | Самостоятельная проверка |
| `GET` | `/api/users/older-than/{age}` | Admin | Пользователи старше возраста |
---
## 📌 Валидация полей
| Поле | Ограничения |
| ---------- | ---------------------------------------- |
| `Login` | Только латинские буквы и цифры |
| `Password` | Только латинские буквы и цифры |
| `Name` | Только русские и латинские буквы |
| `Gender` | 0 — женщина, 1 — мужчина, 2 — неизвестно |
---
## 🔒 Безопасность
* Все защищённые маршруты используют JWT.
* Только авторизованные пользователи могут вызывать методы.
* Роль `Admin` необходима для критичных операций (создание, удаление, восстановление, просмотр всех).
---
## ✉️ Контакты
Разработчик: **Вячеслав / Venceslao**
GitHub:
[https://github.com/Downstize/user-vault.git](https://github.com/Downstize/user-vault.git)
Email:
`swankydid@gmail.com`