Files
bank-rest/README.md
me 757f99d0e7
All checks were successful
Tests / Run Tests (push) Successful in 42s
feat: update README to include toc & test results
2026-02-24 15:46:36 +03:00

96 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
gitea: none
include_toc: true
---
# Система управления банковскими картами [![Tests](https://git.fymio.us/me/bank-rest/actions/workflows/test.yml/badge.svg)](https://git.fymio.us/me/bank-rest/actions)
REST API на Spring Boot для управления банковскими картами с JWT авторизацией, шифрованием номеров карт и ролевым доступом.
## Быстрый старт
### Запуск через Docker Compose
```bash
docker-compose up -d
```
Приложение будет доступно на `http://localhost:8080`.
### Запуск вручную
1. Запустите PostgreSQL:
```bash
docker run -d --name postgres \
-e POSTGRES_DB=bankcards \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 postgres:15
```
2. Соберите и запустите приложение:
```bash
mvn clean package -DskipTests
java -jar target/bankcards-0.0.1-SNAPSHOT.jar
```
## API документация
После запуска Swagger UI доступен по адресу:
`http://localhost:8080/swagger-ui.html`
## Аутентификация
Все запросы (кроме `/api/auth/**`) требуют JWT токен в заголовке:
```
Authorization: Bearer <token>
```
**Дефолтный администратор:**
- Username: `admin`
- Password: `admin123`
## Роли
| Роль | Возможности |
|------|-------------|
| `ROLE_ADMIN` | Создание/блокировка/активация/удаление карт; управление пользователями; просмотр всех карт |
| `ROLE_USER` | Просмотр своих карт; запрос блокировки; переводы между своими картами |
## Основные эндпоинты
### Аутентификация
- `POST /api/auth/register` — регистрация
- `POST /api/auth/login` — вход
### Карты (пользователь)
- `GET /api/cards` — мои карты (фильтр по статусу, пагинация)
- `GET /api/cards/{id}` — карта по id
- `POST /api/cards/{id}/request-block` — запросить блокировку
- `POST /api/cards/transfer` — перевод между своими картами
### Карты (администратор)
- `POST /api/admin/cards` — создать карту
- `GET /api/admin/cards` — все карты
- `PATCH /api/admin/cards/{id}/block` — заблокировать
- `PATCH /api/admin/cards/{id}/activate` — активировать
- `DELETE /api/admin/cards/{id}` — удалить
### Пользователи (администратор)
- `GET /api/admin/users` — все пользователи
- `PATCH /api/admin/users/{id}/role` — изменить роль
- `DELETE /api/admin/users/{id}` — удалить
## Безопасность
- Номера карт хранятся в зашифрованном виде (AES)
- Отображаются только в маскированном виде: `**** **** **** 1234`
- Пароли хешируются через BCrypt
- Доступ контролируется по ролям через Spring Security
## Тесты
```bash
mvn test
```