- Sklonuj repozytorium
git clone https://github.com/Inexpli/CPUtopia.git cd CPUtopia/backend - Skopiuj i skonfiguruj plik środowiskowy
cp .env .env.local # Edytuj .env.local: ustaw DATABASE_URL, SECRET - Zainstaluj zależności PHP
composer install
- Zbuduj i uruchom kontenery Docker (jeśli używasz Docker Compose):
docker-compose up -d docker-compose exec php php bin/console doctrine:database:create docker-compose exec php php bin/console doctrine:migrations:migrate
- Sprawdź działanie
- Backend dostępny pod:
http://localhost:8080 - Testuj endpointy zgodnie z dokumentacją poniżej.
- Backend dostępny pod:
Poniżej znajduje się pełna dokumentacja endpointów dostępnych w backendzie aplikacji CPUtopia. Tester powinien korzystać z poniższych informacji, aby poprawnie wykonywać żądania i oceniać odpowiedzi.
POST /api/cart/add/{id}
- Opis: Dodaje produkt o podanym ID do koszyka (sesyjnego lub użytkownika).
- Parametry URL:
id(integer) – ID produktu.
- Body (JSON) (opcjonalnie):
{ "quantity": 2 // liczba sztuk, domyślnie 1 } - Odpowiedź:
200 OK{ "message": "Product added to cart" }
GET /api/cart
- Opis: Zwraca listę produktów znajdujących się w koszyku.
- Odpowiedź:
200 OK– tablica pozycji z informacjami:[ { "product": { /* dane produktu */ }, "quantity": 2, "total": 199.98 }, ... ]
POST /api/cart/remove/{id}
- Opis: Usuwa produkt o danym ID z koszyka.
- Parametry URL:
id(integer) – ID produktu.
- Odpowiedź:
200 OK{ "message": "Product removed from cart" }404 Not Found{ "error": "Product not found in cart" }
POST /api/cart/clear
- Opis: Usuwa wszystkie produkty z koszyka.
- Odpowiedź:
200 OK{ "message": "Cart cleared" }
Wszystkie operacje CRUD na kategoriach wymagają roli ADMIN.
GET /api/category
- Opis: Pobiera wszystkie dostępne kategorie.
- Odpowiedź:
200 OK– tablica obiektów kategorii.
POST /api/category/add
- Uprawnienia:
ROLE_ADMIN - Body (JSON):
{ "name": "Nazwa kategorii" } - Odpowiedź:
201 Created{ "message": "Category added successfully" }400 Bad Request– walidacja lub niepoprawny JSON
PUT / PATCH /api/category/{id}
- Uprawnienia:
ROLE_ADMIN - Parametry URL:
id(integer) – ID kategorii.
- Body (JSON): dowolne z pól, np.:
{ "name": "Nowa nazwa" } - Odpowiedź:
200 OK{ "message": "Category updated successfully" }404 Not Found/400 Bad Request
DELETE /api/category/{id}
- Uprawnienia:
ROLE_ADMIN - Parametry URL:
id(integer)
- Odpowiedź:
200 OK{ "message": "Category deleted successfully" }404 Not Found
Operacje modyfikacji (add, edit, delete) wymagają roli ADMIN.
GET /api/product
- Opis: Pobiera wszystkie produkty.
- Odpowiedź:
200 OK– tablica produktów.
GET /api/product/{id}
- Parametry URL:
id(integer)
- Odpowiedź:
200 OK– obiekt produktu404 Not Found
POST /api/product/add
- Uprawnienia:
ROLE_ADMIN - Body (JSON):
{ "name": "Laptop", "description": "Opis", "price": "1550.60", "stock": 10, "category_id": 1, "image": file } - Odpowiedź:
201 Created{ "message": "Product added successfully" }400 Bad Request
PUT / PATCH /api/product/{id}
- Uprawnienia:
ROLE_ADMIN - Parametry URL:
id(integer)
- Body (JSON): wszystkie pola lub ich podzbiór
- Odpowiedź:
200 OK{ "message": "Product updated successfully" }404 Not Found/400 Bad Request
DELETE /api/product/{id}
- Uprawnienia:
ROLE_ADMIN - Parametry URL:
id(integer)
- Odpowiedź:
200 OK{ "message": "Product deleted successfully" }404 Not Found
GET /api/order/
- Opis: Pobiera historię zamówień zalogowanego użytkownika.
- Odpowiedź:
200 OK– tablica zamówień
POST /api/order/create
- Opis: Tworzy zamówienie na podstawie aktualnego koszyka.
- Odpowiedź:
200 OK– obiekt nowego zamówienia400 Bad Request– np. pusty koszyk
GET /api/orderItem
- Uprawnienia:
ROLE_ADMIN - Opis: Zwraca wszystkie pozycje zamówień w systemie.
- Odpowiedź:
200 OK– tablica obiektówOrderItem
POST /api/user/register
- Body (JSON):
{ "email": "jan@kowalski.pl", "password": "haslo123" } - Odpowiedź:
201 Created400 Bad Request
POST /api/user/login
- Body (JSON):
{ "email": "jan@kowalski.pl", "password": "haslo123" } - Odpowiedź:
200 OK– komunikat o sukcesie400/401– niepoprawne dane
GET /api/user/me
- Opis: Zwraca dane bieżącego użytkownika.
- Odpowiedź:
200 OK401 Unauthorized
GET /api/user/
- Uprawnienia:
ROLE_ADMIN - Opis: Zwraca wszystkich użytkowników.
- Odpowiedź:
200 OK
PATCH /api/user/promote/{id}
- Uprawnienia:
ROLE_ADMIN - Parametry URL:
id(integer)
- Odpowiedź:
200 OK404 Not Found
Uwaga: Wszystkie żądania wymagają nagłówka
Content-Type: application/json.