Progetto per il corso di Applicazioni Dinamiche per il Web (2023/2024) dell'Università degli Studi di Verona.
Il sistema software è stato progettato per gestire gli ordini di una società commerciale. Il sistema è composto da tre tipi di utenti: clienti, agenti e dirigenti. I clienti possono visualizzare i propri ordini, gli agenti possono visualizzare e modificare gli ordini dei propri clienti e i dirigenti possono visualizzare e modificare tutti gli ordini.
Questa applicazione è un'API RESTful costruita con Express.js che gestisce utenti,
agenti e dirigenti. Utilizza JWT per l'autenticazione e autorizzazione. L'applicazione
si collega a due database PostgreSQL: webUsers per gestire gli utenti e
organization per gestire gli ordini e le informazioni relative agli agenti e clienti.
- Node.js
- PostgreSQL
-
Clona il repository
git clone https://github.com/alessiogj/PrgAppDinamiche.git
-
Installa le dipendenze
cd <directory del progetto> npm install
-
Configura i database PostgreSQL16
- Crea i database
webUserseorganization, assicurandoti di usare il formato UTF-8 - Con i file di Backup
usersBackup.sqleorganizationBackup.sqlnella root del server popola le tabelle nei rispettivi Db.
- Crea i database
-
Configura il file
config.jscon le informazioni di accesso ai database e la chiave segreta per iJWT.
module.exports = {
jwtSecretKey: "",
database: {
webUsers: {
user: "",
host: "",
database: "",
password: "",
port: 5432
},
organization: {
user: "",
host: "",
database: "",
password: "",
port: 5432
}
}
};##] Avvio dell'applicazione Per avviare l'applicazione:
node app.jsL'applicazione sarà disponibile su http://localhost:3100.
Permette agli utenti di effettuare il login.
Richiesta:
{
"username": "exampleUser",
"password": "examplePassword"
}Risposta:
200 OKcon il token JWT se le credenziali sono corrette.401 Unauthorizedse le credenziali sono errate.404 Not Foundse l'utente non esiste.500 Internal Server ErrorSe c'è un errore interno al database.
Permette di verificare un token JWT
**Richiesta
{
"token": "exampleToken"
}Risposta:
200 OKse il token è valido.401 Unauthorizedse il token è scaduto o non è valido.400 Bad Requestse il token non è fornito.
Restituisce tutti gli ordini di un cliente.
Richiesta:
- Header
Authorization: Bearer <jwtToken>
Risposta:
200 OKcon un array di ordini.401 Unauthorizedse il token non è valido.500 Internal Server ErrorSe c'è un errore interno al database.
Restituisce tutti gli ordini di un agente.
Richiesta:
- Header
Authorization: Bearer <jwtToken>
Risposta:
200 OKcon un array di ordini.401 Unauthorizedse il token non è valido.500 Internal Server ErrorSe c'è un errore interno al database.
Modifica lo stato di un ordine.
Richiesta:
- Header
Authorization: Bearer <jwtToken> - Corpo:
{
"modifiedOrder": {
"ord_num": 1,
"ord_amount": 100,
"advance_amount": 10,
"ord_date": "2023-01-01",
"cust_code": "C001",
"agent_code": "A001",
"ord_description": "Order description"
}
}Risposta:
200 OKse l'ordine è stato modificato con successo.401 Unauthorizedse il token non è valido.404 Not Foundse l'ordine non esiste.500 Internal Server ErrorSe c'è un errore interno al database.
Elimina un ordine esistente.
Richiesta:
- Header
Authorization: Bearer <jwtToken> - Corpo:
{
"ord_num": 1
}Risposta:
200 OKse l'ordine è stato eliminato con successo.401 Unauthorizedse il token non è valido.404 Not Foundse l'ordine non esiste.500 Internal Server ErrorSe c'è un errore interno al database.
Aggiunge un nuovo ordine.
Richiesta:
- Header
Authorization: Bearer <jwtToken> - Corpo:
{
"newOrder": {
"ord_amount": 100,
"advance_amount": 10,
"ord_date": "2023-01-01",
"cust_code": "C001",
"agent_code": "A001",
"ord_description": "Order description"
}
}Risposta:
200 OKse l'ordine è stato aggiunto con successo.401 Unauthorizedse il token non è valido.500 Internal Server ErrorSe c'è un errore interno al database.
Restituisce tutti i clienti disponibili per un agente.
Richiesta:
- Header
Authorization: Bearer <jwtToken>
Risposta:
200 OKcon un array di clienti.401 Unauthorizedse il token non è valido.500 Internal Server ErrorSe c'è un errore interno al database.
Restituisce tutti gli ordini.
Richiesta:
- Header
Authorization: Bearer <jwtToken>
Risposta:
200 OKcon un array di ordini.401 Unauthorizedse il token non è valido.500 Internal Server ErrorSe c'è un errore interno al database.
Modifica un ordine esistente.
Richiesta:
- Header
Authorization: Bearer <jwtToken> - Corpo:
{
"modifiedOrder": {
"ord_num": 1,
"ord_amount": 100,
"advance_amount": 10,
"ord_date": "2023-01-01",
"cust_code": "C001",
"agent_code": "A001",
"ord_description": "Order description"
}
}Risposta:
200 OKse l'ordine è stato modificato con successo.401 Unauthorizedse il token non è valido.404 Not Foundse l'ordine non esiste.500 Internal Server ErrorSe c'è un errore interno al database.