{"id":28664163,"url":"https://github.com/downstize/user-vault","last_synced_at":"2026-04-29T15:05:57.972Z","repository":{"id":293901220,"uuid":"985455019","full_name":"Downstize/user-vault","owner":"Downstize","description":"Сервис управления пользователями с авторизацией, JWT и CRUD-операциями. Проект реализован на .NET 9, с использованием PostgreSQL, JWT, Docker и Swagger.","archived":false,"fork":false,"pushed_at":"2025-05-17T20:05:55.000Z","size":11775,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-13T12:11:45.040Z","etag":null,"topics":["crud","dot-net-9","jwt","postgresql","swagger"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Downstize.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-17T19:52:19.000Z","updated_at":"2025-05-17T20:05:58.000Z","dependencies_parsed_at":"2025-05-17T20:44:07.468Z","dependency_job_id":null,"html_url":"https://github.com/Downstize/user-vault","commit_stats":null,"previous_names":["downstize/user-vault"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Downstize/user-vault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Downstize%2Fuser-vault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Downstize%2Fuser-vault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Downstize%2Fuser-vault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Downstize%2Fuser-vault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Downstize","download_url":"https://codeload.github.com/Downstize/user-vault/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Downstize%2Fuser-vault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32430826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crud","dot-net-9","jwt","postgresql","swagger"],"created_at":"2025-06-13T12:11:39.788Z","updated_at":"2026-04-29T15:05:57.942Z","avatar_url":"https://github.com/Downstize.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🛡️ UserVault API\n\n**Сервис управления пользователями с авторизацией, JWT и CRUD-операциями.**  \nПроект реализован на **.NET 9**, с использованием **PostgreSQL**, **JWT**, **Docker** и **Swagger**.\n\n---\n\n## 📌 Функциональность\n\n- **Авторизация** по логину и паролю с выдачей JWT-токена.\n- **Роли**: `Admin` и `User`, с разграничением доступа к API.\n- **CRUD-операции над пользователями**:\n  - создание\n  - изменение имени, логина, пароля, даты рождения и пола\n  - мягкое удаление и восстановление\n  - запросы пользователей по фильтрам\n- **Swagger UI** для взаимодействия с API.\n- **Хранение пользователей в PostgreSQL**.\n\n---\n\n## 🛠️ Технологии\n\n- **.NET 9 (ASP.NET Core Web API)**\n- **Entity Framework Core**\n- **PostgreSQL**\n- **JWT (аутентификация и авторизация)**\n- **Docker + Docker Compose**\n- **Serilog (логгирование)**\n- **Swagger/OpenAPI**\n\n---\n\n## 📂 Структура проекта\n```\n📦 UserVault\n┣ 📂 Controllers      # AuthController и UsersController\n┣ 📂 Services         # JWT-сервис и бизнес-логика пользователей\n┣ 📂 Models           # Сущность User и enum\n┣ 📂 Dtos             # DTO-модели\n┣ 📂 Data             # AppDbContext (EF Core)\n┣ 📜 Program.cs       # Конфигурация приложения\n┣ 📜 appsettings.json # Настройки БД и JWT\n┣ 📜 Dockerfile       # Docker-образ приложения\n┣ 📜 docker-compose.yml # Docker Compose с БД\n````\n\n---\n\n## 🚀 Запуск проекта\n\n1️⃣ Клонирование репозитория и запуск:\n```bash\ngit clone https://github.com/your-user/uservault.git\ncd uservault\ndocker-compose up --build\n````\n\n2️⃣ Swagger будет доступен по адресу:\n\n```\nhttp://localhost:5470/swagger\n```\n\n---\n\n## 🔐 Авторизация и роли\n\nПосле запуска:\n\n* Предсоздан пользователь:\n\n  ```\n  Login: admin\n  Password: admin123\n  ```\n\n* Получить JWT токен через `/auth/login`:\n\n  ```json\n  {\n    \"login\": \"admin\",\n    \"password\": \"admin123\"\n  }\n  ```\n\n* Вставить токен в Swagger через кнопку \"Authorize (Замочек в правом верхнем углу)\" как:\n\n  ```\n  token\n  ```\n\n---\n\n## 📌 Основные эндпоинты\n\n| Метод    | Путь                                 | Доступ     | Описание                     |\n| -------- | ------------------------------------ | ---------- | ---------------------------- |\n| `POST`   | `/auth/login`                        | Все        | Авторизация                  |\n| `POST`   | `/api/users/create`                  | Admin      | Создать пользователя         |\n| `PUT`    | `/api/users/update/name/{login}`     | Admin/User | Изменить имя                 |\n| `PUT`    | `/api/users/update/password/{login}` | Admin/User | Изменить пароль              |\n| `PUT`    | `/api/users/update/login/{login}`    | Admin/User | Изменить логин               |\n| `DELETE` | `/api/users/{login}`                 | Admin      | Мягкое удаление              |\n| `PUT`    | `/api/users/restore/{login}`         | Admin      | Восстановление               |\n| `GET`    | `/api/users/all`                     | Admin      | Все активные пользователи    |\n| `GET`    | `/api/users/by-login/{login}`        | Admin      | Данные по логину             |\n| `GET`    | `/api/users/validate`                | User       | Самостоятельная проверка     |\n| `GET`    | `/api/users/older-than/{age}`        | Admin      | Пользователи старше возраста |\n\n---\n\n## 📌 Валидация полей\n\n| Поле       | Ограничения                              |\n| ---------- | ---------------------------------------- |\n| `Login`    | Только латинские буквы и цифры           |\n| `Password` | Только латинские буквы и цифры           |\n| `Name`     | Только русские и латинские буквы         |\n| `Gender`   | 0 — женщина, 1 — мужчина, 2 — неизвестно |\n\n---\n\n## 🔒 Безопасность\n\n* Все защищённые маршруты используют JWT.\n* Только авторизованные пользователи могут вызывать методы.\n* Роль `Admin` необходима для критичных операций (создание, удаление, восстановление, просмотр всех).\n\n---\n\n## ✉️ Контакты\n\nРазработчик: **Вячеслав / Venceslao**  \nGitHub:  \n[https://github.com/Downstize/user-vault.git](https://github.com/Downstize/user-vault.git)  \nEmail:  \n`swankydid@gmail.com`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdownstize%2Fuser-vault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdownstize%2Fuser-vault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdownstize%2Fuser-vault/lists"}