# Applicazione Flutter e relativo server json utilizzando MongoDB ## server ```bash npm init -y npm install express nodemailer body-parser dotenv mongoose crypto express-rate-limit path ``` lista dei packages installati npm list --depth=0 ```bash ├── body-parser@2.2.0 ├── crypto@1.0.1 ├── dotenv@17.2.3 ├── express-rate-limit@8.2.1 ├── express@5.1.0 ├── mongoose@8.19.3 ├── nodemailer@7.0.10 └── path@0.12.7 ``` far partire con node index.js modificare .env per il server ## utilizza auth.patachina.it per comunicare ## interrogare il server con curl ```bash curl -X POST https://auth.patachina.it/api/verifica-email \ -H "Content-Type: application/json" \ -d '{ "nome": "Fabio", "cognome": "Micheluz", "email": "fabio.micheluz@gmail.com", "telefono": "+393331234567", "applicazione": "flutter-app" }' curl -X POST https://auth.patachina.it/api/conferma-codice \ -H "Content-Type: application/json" \ -d '{ "email": "fabio.micheluz@gmail.com", "codice": "323646" }' curl -X POST https://auth.patachina.it/api/cancella_utente \ -H "Content-Type: application/json" \ -d '{ "email": "fabio.micheluz@gmail.com" }' ``` ## Settare nginx nginx è settato così ```bash server { listen 443 ssl; server_name auth.patachina.it; ssl_certificate ssl/live/patachina.it/fullchain.pem; ssl_certificate_key ssl/live/patachina.it/privkey.pem; # per aggancio con applicazione Flutter android location /.well-known/ { proxy_pass http://192.168.1.3:3400/.well-known/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # Per farlo funzionare anche su Browser anche senza noCORS difatti abilita tutte le origini location /api/ { proxy_pass http://192.168.1.3:3400; # o il tuo backend # Header CORS per tutte le richieste add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always; # Gestione preflight OPTIONS if ($request_method = OPTIONS) { add_header 'Access-Control-Max-Age' 86400; add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always; add_header 'Content-Length' 0; add_header 'Content-Type' 'text/plain charset=UTF-8'; return 204; } } # per il passaggio dei dati location / { proxy_pass http://192.168.1.3:3400; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ## fare i backup del codice da linux i server json zip -r authemailsvr.zip emailsvr2/ -x "*/node_modules/*" da android studio il flutter zip -r auth_svr.zip auth_svr -x "*/.*" -x "auth_svr/build/*"