Skip to content

nickkpiccoli/PrgAppDinamicheServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gestione ordini

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.


Indice

  1. 🚀 Avviare il progetto
  2. 📚 Documentazione API
  3. 👨‍💻 Autori

🚀 Avviare il progetto

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.

Tecnologie utilizzate

  • Node.js
  • PostgreSQL

Installazione

  1. Clona il repository

    git clone https://github.com/alessiogj/PrgAppDinamiche.git
  2. Installa le dipendenze

    cd <directory del progetto>
    npm install
  3. Configura i database PostgreSQL16

    • Crea i database webUsers e organization, assicurandoti di usare il formato UTF-8
    • Con i file di Backup usersBackup.sql e organizationBackup.sql nella root del server popola le tabelle nei rispettivi Db.
  4. Configura il file config.js con le informazioni di accesso ai database e la chiave segreta per i JWT.

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.js

L'applicazione sarà disponibile su http://localhost:3100.

📚 Documentazione API

Autenticazione

POST /auth/login

Permette agli utenti di effettuare il login.


Richiesta:

{
    "username": "exampleUser",
    "password": "examplePassword"
}

Risposta:

  • 200 OK con il token JWT se le credenziali sono corrette.
  • 401 Unauthorized se le credenziali sono errate.
  • 404 Not Found se l'utente non esiste.
  • 500 Internal Server Error Se c'è un errore interno al database.

POST /auth/verify-token

Permette di verificare un token JWT

**Richiesta

{
    "token": "exampleToken"
}

Risposta:

  • 200 OK se il token è valido.
  • 401 Unauthorized se il token è scaduto o non è valido.
  • 400 Bad Request se il token non è fornito.

Clienti


GET /customers/getIrders

Restituisce tutti gli ordini di un cliente.

Richiesta:

  • Header Authorization: Bearer <jwtToken>

Risposta:

  • 200 OK con un array di ordini.
  • 401 Unauthorized se il token non è valido.
  • 500 Internal Server Error Se c'è un errore interno al database.

Agenti


GET /agents/getOrders

Restituisce tutti gli ordini di un agente.

Richiesta:

  • Header Authorization: Bearer <jwtToken>

Risposta:

  • 200 OK con un array di ordini.
  • 401 Unauthorized se il token non è valido.
  • 500 Internal Server Error Se c'è un errore interno al database.

PUT /agents/modifyOrder

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 OK se l'ordine è stato modificato con successo.
  • 401 Unauthorized se il token non è valido.
  • 404 Not Found se l'ordine non esiste.
  • 500 Internal Server Error Se c'è un errore interno al database.

DELETE /agents/deleteOrder

Elimina un ordine esistente.

Richiesta:

  • Header Authorization: Bearer <jwtToken>
  • Corpo:
{
  "ord_num": 1
}

Risposta:

  • 200 OK se l'ordine è stato eliminato con successo.
  • 401 Unauthorized se il token non è valido.
  • 404 Not Found se l'ordine non esiste.
  • 500 Internal Server Error Se c'è un errore interno al database.

POST /agents/addOrder

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 OK se l'ordine è stato aggiunto con successo.
  • 401 Unauthorized se il token non è valido.
  • 500 Internal Server Error Se c'è un errore interno al database.

GET /agents/getAvailableCustomers

Restituisce tutti i clienti disponibili per un agente.

Richiesta:

  • Header Authorization: Bearer <jwtToken>

Risposta:

  • 200 OK con un array di clienti.
  • 401 Unauthorized se il token non è valido.
  • 500 Internal Server Error Se c'è un errore interno al database.

Dirigenti


GET /dirigents/getOrders

Restituisce tutti gli ordini.

Richiesta:

  • Header Authorization: Bearer <jwtToken>

Risposta:

  • 200 OK con un array di ordini.
  • 401 Unauthorized se il token non è valido.
  • 500 Internal Server Error Se c'è un errore interno al database.

PUT /dirigents/modifyOrder

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 OK se l'ordine è stato modificato con successo.
  • 401 Unauthorized se il token non è valido.
  • 404 Not Found se l'ordine non esiste.
  • 500 Internal Server Error Se c'è un errore interno al database.

Autori

About

Progetto App dinamiche per il web - server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published