npm installnpm run devPour lancer la base de données.
docker compose up -dRegarder dans le fichier swagger.json
Regarder dans le fichier docker/init.sql
erDiagram
categories {
UUID id PK "gen_random_uuid()"
VARCHAR category_name
TEXT description
}
suppliers {
UUID id PK "gen_random_uuid()"
VARCHAR company_name
VARCHAR contact_name
TEXT address
VARCHAR phone
VARCHAR email
}
products {
UUID id PK
VARCHAR reference
VARCHAR product_name
DECIMAL unit_price
INT stock_quantity
UUID category_id FK
}
product_suppliers {
UUID product_id PK,FK
UUID supplier_id PK,FK
}
customers {
UUID id PK "gen_random_uuid()"
VARCHAR last_name
VARCHAR first_name
TEXT address
VARCHAR phone
VARCHAR email
}
orders {
UUID id PK "gen_random_uuid()"
UUID customer_id FK
DATETIME order_date
VARCHAR status
}
order_details {
UUID order_id PK,FK
UUID product_id PK,FK
INT quantity
DECIMAL unit_price
}
categories ||--o{ products : has
products ||--o{ product_suppliers : has
suppliers ||--o{ product_suppliers : supplies
customers ||--o{ orders : places
orders ||--o{ order_details : contains
products ||--o{ order_details : "ordered in"
Notre application possèdent plusieurs failles de sécurité :
- Injection SQL (concaténation de chaîne),
- Tout le monde peut faire des actions comme supprimer un fournisseur,
- Les CORS ne sont pas configurés de ce fait tout le monde peut faire des actions sur notre API,
- Aucune vérification en amont si le fournisseur existe ou non quand la requête
/api/products/:productId/suppliers, - Aucune contrainte unicité n'a été mit sur le champ
namedans la tablecategories. Même chose pour les tables :suppliers,products.
- Aucune contraite n'a été mis sur le champ
emaildans la tablecustomers, - Aucune gestion des erreurs quand par exemple un
customern'est pas trouvé.
De meilleur vérification ont été mise en place :
- Vérification des données en entrée,
- CORS configuré,
- Une meilleur gestion des contraintes d'unicité,
- Une meilleur gestion des erreurs.
- Ajout de plusieurs contraints sur les différentes tables.