- asggiunto bottone "installa app" sulla email di conferma registrazione e anche la Guida "/guida".

- migliorato InvitaAmico
This commit is contained in:
Surya Paolo
2025-11-19 11:39:42 +01:00
parent 657dc79996
commit aa877dea0a
8 changed files with 79 additions and 18 deletions

View File

@@ -29,7 +29,7 @@ GCM_API_KEY=""
PROD=0
PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
TOKEN_LIFE=10m
TOKEN_LIFE=2m
REFRESH_TOKEN_LIFE=14d
FTPSERVER_HOST=139.162.166.31
FTPSERVER_PORT=21

View File

@@ -31,7 +31,7 @@ TOKEN_LIFE=2h
REFRESH_TOKEN_LIFE=14d
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
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"}]
SCRIPTS_DIR=admin_scripts
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]

View File

@@ -32,7 +32,7 @@ TOKEN_LIFE=2h
REFRESH_TOKEN_LIFE=14d
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
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
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
MIAB_HOST=box.lamiaposta.org

View File

@@ -138,10 +138,19 @@ html(lang="it")
margin-bottom: 16px;
}
.cta-buttons-wrapper {
display: flex;
gap: 12px;
justify-content: center;
align-items: stretch;
flex-wrap: wrap;
margin-top: 16px;
}
.cta-button {
display: inline-block;
padding: 16px 48px;
font-size: 18px;
padding: 16px 32px;
font-size: 16px;
font-weight: 600;
color: white;
background: linear-gradient(135deg, #027be3 0%, #0056b3 100%);
@@ -149,6 +158,9 @@ html(lang="it")
text-decoration: none;
box-shadow: 0 4px 12px rgba(2, 123, 227, 0.3);
transition: transform 0.2s, box-shadow 0.2s;
flex: 1;
min-width: 180px;
max-width: 220px;
}
.cta-button:hover {
@@ -156,6 +168,30 @@ html(lang="it")
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 {
margin-top: 16px;
font-size: 13px;
@@ -236,11 +272,16 @@ html(lang="it")
font-size: 14px;
}
.cta-buttons-wrapper {
flex-direction: column;
gap: 12px;
}
.cta-button {
padding: 14px 32px;
font-size: 16px;
padding: 14px 24px;
font-size: 15px;
width: 100%;
max-width: 300px;
max-width: 100%;
}
}
@@ -260,7 +301,9 @@ html(lang="it")
.cta-title 🔐 1. Verifica il tuo account
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
| Oppure copia e incolla questo link nel tuo browser:
@@ -274,10 +317,25 @@ html(lang="it")
strong  completare il tuo profilo.
.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
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-title 📋 I tuoi dati di accesso

View File

@@ -98,11 +98,12 @@ function logResponse(req, res, data) {
const emoji = statusCode >= 200 && statusCode < 300 ? '✅' : statusCode >= 400 && statusCode < 500 ? '⚠️' : '❌';
console.log(
`${emoji} [${method}] ${url} | Status: ${statusCode} | User: ${userId} | Data: ${
data ? JSON.stringify(data).substring(0, 100) : 'empty'
}`
);
if (statusCode !== 200) {
console.log(
`${emoji} [${method}] ${url} | Status: ${statusCode} | User: ${userId} | Data: ${data ? JSON.stringify(data).substring(0, 100) : 'empty'
}`
);
}
}
const authenticate = (req, res, next) => authenticateMiddleware(req, res, next);

View File

@@ -62,6 +62,8 @@ function createCorsOptions(domains, domainsAllowed, isProduction, noCors = false
const allowedOrigins = buildAllowedOrigins(domains, domainsAllowed, isProduction);
console.log('allowedOrigins:', allowedOrigins.map((origin) => `'${origin}'`).join(', '));
let originValidator = (origin, callback) => {
if (!origin) {
// console.log('✅ Origin undefined or empty — allowing');

View File

@@ -16,7 +16,7 @@ async function myLoad() {
}
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 corsOptions = createCorsOptions(domains, domainsAllowed, isProduction);

View File

@@ -1 +1 @@
1.2.78
1.2.79