- asggiunto bottone "installa app" sulla email di conferma registrazione e anche la Guida "/guida".
- migliorato InvitaAmico
This commit is contained in:
@@ -29,7 +29,7 @@ GCM_API_KEY=""
|
|||||||
PROD=0
|
PROD=0
|
||||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||||
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
||||||
TOKEN_LIFE=10m
|
TOKEN_LIFE=2m
|
||||||
REFRESH_TOKEN_LIFE=14d
|
REFRESH_TOKEN_LIFE=14d
|
||||||
FTPSERVER_HOST=139.162.166.31
|
FTPSERVER_HOST=139.162.166.31
|
||||||
FTPSERVER_PORT=21
|
FTPSERVER_PORT=21
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ TOKEN_LIFE=2h
|
|||||||
REFRESH_TOKEN_LIFE=14d
|
REFRESH_TOKEN_LIFE=14d
|
||||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||||
DOMAINS=[{"hostname":"riso.app","port":"3006"},{"hostname":"freeplanet.app","port":"3000"},{"hostname":"nuovomondo.app","port":"3032"}]
|
DOMAINS=[{"hostname":"riso.app","port":"3006"},{"hostname":"freeplanet.app","port":"3000"},{"hostname":"nuovomondo.app","port":"3032"}]
|
||||||
DOMAINS_ALLOWED=["comunitanuovomondo.app","nuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]
|
DOMAINS_ALLOWED=["riso.app","comunitanuovomondo.app","nuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]
|
||||||
#DOMAINS=[{"hostname":"abitaregliiblei.it","port":"3021"},{"hostname":"riso.app","port":"3005"}]
|
#DOMAINS=[{"hostname":"abitaregliiblei.it","port":"3021"},{"hostname":"riso.app","port":"3005"}]
|
||||||
SCRIPTS_DIR=admin_scripts
|
SCRIPTS_DIR=admin_scripts
|
||||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ TOKEN_LIFE=2h
|
|||||||
REFRESH_TOKEN_LIFE=14d
|
REFRESH_TOKEN_LIFE=14d
|
||||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||||
DOMAINS=[{"hostname":"riso.app","port":"3005"},{"hostname":"nuovomondo.app","port":"3033"}]
|
DOMAINS=[{"hostname":"riso.app","port":"3005"},{"hostname":"nuovomondo.app","port":"3033"}]
|
||||||
DOMAINS_ALLOWED=["comunitanuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]
|
DOMAINS_ALLOWED=["riso.app","comunitanuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]
|
||||||
SCRIPTS_DIR=admin_scripts
|
SCRIPTS_DIR=admin_scripts
|
||||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
MIAB_HOST=box.lamiaposta.org
|
MIAB_HOST=box.lamiaposta.org
|
||||||
|
|||||||
@@ -138,10 +138,19 @@ html(lang="it")
|
|||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cta-buttons-wrapper {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: stretch;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.cta-button {
|
.cta-button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 16px 48px;
|
padding: 16px 32px;
|
||||||
font-size: 18px;
|
font-size: 16px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: white;
|
color: white;
|
||||||
background: linear-gradient(135deg, #027be3 0%, #0056b3 100%);
|
background: linear-gradient(135deg, #027be3 0%, #0056b3 100%);
|
||||||
@@ -149,6 +158,9 @@ html(lang="it")
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
box-shadow: 0 4px 12px rgba(2, 123, 227, 0.3);
|
box-shadow: 0 4px 12px rgba(2, 123, 227, 0.3);
|
||||||
transition: transform 0.2s, box-shadow 0.2s;
|
transition: transform 0.2s, box-shadow 0.2s;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 180px;
|
||||||
|
max-width: 220px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cta-button:hover {
|
.cta-button:hover {
|
||||||
@@ -156,6 +168,30 @@ html(lang="it")
|
|||||||
box-shadow: 0 6px 16px rgba(2, 123, 227, 0.4);
|
box-shadow: 0 6px 16px rgba(2, 123, 227, 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cta-button-secondary {
|
||||||
|
background: linear-gradient(135deg, #28a745 0%, #1e7e34 100%);
|
||||||
|
box-shadow: 0 4px 12px rgba(40, 167, 69, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-secondary:hover {
|
||||||
|
box-shadow: 0 6px 16px rgba(40, 167, 69, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-tertiary {
|
||||||
|
background: linear-gradient(135deg, #ff9800 0%, #f57c00 100%);
|
||||||
|
box-shadow: 0 4px 12px rgba(255, 152, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-tertiary:hover {
|
||||||
|
box-shadow: 0 6px 16px rgba(255, 152, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-right: 6px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
.alternative-link {
|
.alternative-link {
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
@@ -236,11 +272,16 @@ html(lang="it")
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cta-buttons-wrapper {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
.cta-button {
|
.cta-button {
|
||||||
padding: 14px 32px;
|
padding: 14px 24px;
|
||||||
font-size: 16px;
|
font-size: 15px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 300px;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,7 +301,9 @@ html(lang="it")
|
|||||||
.cta-title 🔐 1. Verifica il tuo account
|
.cta-title 🔐 1. Verifica il tuo account
|
||||||
|
|
||||||
if strlinkreg
|
if strlinkreg
|
||||||
a.cta-button(href=strlinkreg target="_blank") Verifica Registrazione
|
a.cta-button(href=strlinkreg target="_blank")
|
||||||
|
span.button-icon ✓
|
||||||
|
| Verifica Registrazione
|
||||||
|
|
||||||
.alternative-link
|
.alternative-link
|
||||||
| Oppure copia e incolla questo link nel tuo browser:
|
| Oppure copia e incolla questo link nel tuo browser:
|
||||||
@@ -274,10 +317,25 @@ html(lang="it")
|
|||||||
strong completare il tuo profilo.
|
strong completare il tuo profilo.
|
||||||
|
|
||||||
.cta-section
|
.cta-section
|
||||||
.cta-title 🔐 2. Per accedere alla piattaforma #{nomeapp}
|
- var numstep = 1;
|
||||||
|
if !verified_email
|
||||||
|
- var numstep = 2;
|
||||||
|
|
||||||
|
.cta-title 🚀 #{numstep}. Accedi e installa #{nomeapp}
|
||||||
|
|
||||||
if strlinksito
|
if strlinksito
|
||||||
a.cta-button(href=strlinksito target="_blank") Accedi a #{nomeapp}
|
.cta-buttons-wrapper
|
||||||
|
a.cta-button(href=strlinksito target="_blank")
|
||||||
|
span.button-icon 🌐
|
||||||
|
| Accedi a #{nomeapp} da web
|
||||||
|
|
||||||
|
a.cta-button.cta-button-secondary(href=strlinksito+'/installaapp' target="_blank")
|
||||||
|
span.button-icon 📱
|
||||||
|
| Installa l'App
|
||||||
|
|
||||||
|
a.cta-button.cta-button-tertiary(href=strlinksito+'/guida' target="_blank")
|
||||||
|
span.button-icon 📖
|
||||||
|
| Vai alla Guida
|
||||||
|
|
||||||
.credentials-box
|
.credentials-box
|
||||||
.credentials-title 📋 I tuoi dati di accesso
|
.credentials-title 📋 I tuoi dati di accesso
|
||||||
|
|||||||
@@ -98,11 +98,12 @@ function logResponse(req, res, data) {
|
|||||||
|
|
||||||
const emoji = statusCode >= 200 && statusCode < 300 ? '✅' : statusCode >= 400 && statusCode < 500 ? '⚠️' : '❌';
|
const emoji = statusCode >= 200 && statusCode < 300 ? '✅' : statusCode >= 400 && statusCode < 500 ? '⚠️' : '❌';
|
||||||
|
|
||||||
|
if (statusCode !== 200) {
|
||||||
console.log(
|
console.log(
|
||||||
`${emoji} [${method}] ${url} | Status: ${statusCode} | User: ${userId} | Data: ${
|
`${emoji} [${method}] ${url} | Status: ${statusCode} | User: ${userId} | Data: ${data ? JSON.stringify(data).substring(0, 100) : 'empty'
|
||||||
data ? JSON.stringify(data).substring(0, 100) : 'empty'
|
|
||||||
}`
|
}`
|
||||||
);
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const authenticate = (req, res, next) => authenticateMiddleware(req, res, next);
|
const authenticate = (req, res, next) => authenticateMiddleware(req, res, next);
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ function createCorsOptions(domains, domainsAllowed, isProduction, noCors = false
|
|||||||
|
|
||||||
const allowedOrigins = buildAllowedOrigins(domains, domainsAllowed, isProduction);
|
const allowedOrigins = buildAllowedOrigins(domains, domainsAllowed, isProduction);
|
||||||
|
|
||||||
|
console.log('allowedOrigins:', allowedOrigins.map((origin) => `'${origin}'`).join(', '));
|
||||||
|
|
||||||
let originValidator = (origin, callback) => {
|
let originValidator = (origin, callback) => {
|
||||||
if (!origin) {
|
if (!origin) {
|
||||||
// console.log('✅ Origin undefined or empty — allowing');
|
// console.log('✅ Origin undefined or empty — allowing');
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ async function myLoad() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function startServer(app, port) {
|
async function startServer(app, port) {
|
||||||
const isProduction = process.env.NODE_ENV === 'production';
|
const isProduction = ['production', 'test'].includes(process.env.NODE_ENV);
|
||||||
const { domains, domainsAllowed } = parseDomains();
|
const { domains, domainsAllowed } = parseDomains();
|
||||||
const corsOptions = createCorsOptions(domains, domainsAllowed, isProduction);
|
const corsOptions = createCorsOptions(domains, domainsAllowed, isProduction);
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.2.78
|
1.2.79
|
||||||
Reference in New Issue
Block a user