Server Json che fa una registrazione di un utente tramite mail utilizzando mongoDB e allacciato all'applicazione flutter che lo interroga
| auth_svr.zip | ||
| authemailsvr.zip | ||
| README.md | ||
Applicazione Flutter e relativo server json utilizzando MongoDB
server
npm init -y
npm install express nodemailer body-parser dotenv mongoose crypto express-rate-limit path
lista dei packages installati
npm list --depth=0
├── 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
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ì
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/*"