← back to Fantasea Consulting

server.js

17 lines

const express=require('express');const app=express();const PORT=process.env.PORT||9767;

// Basic Auth gate — accepts the unified fleet cred plus per-client logins.
// Extra pairs can be added via BASIC_AUTH_EXTRA env (comma-separated user:pass).
// Placed before express.static so it protects every route.
const CREDS=['admin:DW2024!','Daniel:Gins2026!','dbrown:dust1989']
  .concat((process.env.BASIC_AUTH_EXTRA||'').split(',').map(s=>s.trim()).filter(Boolean));
const ACCEPTED=new Set(CREDS.map(c=>'Basic '+Buffer.from(c).toString('base64')));
app.use((req,res,next)=>{
  if(ACCEPTED.has(req.headers.authorization||'')) return next();
  res.set('WWW-Authenticate','Basic realm="Fantasea"');
  return res.status(401).send('Authentication required');
});

app.use(express.static(__dirname+'/public',{extensions:['html']}));
app.listen(PORT,()=>console.log('fantasea-consulting on '+PORT));