Kundenansicht neu: Dashboard-Weiche vor den statischen Dateien, Platzhalter-Seite
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7c4a4a567d
commit
f2c9eb107a
4 files changed
+221
No files matched your search
@@ -60,6 +60,7 @@ import teamRoutes from './routes/team/index.js'
|
||||
import legacyAdminRedirect from './routes/legacyAdminRedirect.js'
|
||||
import { corsMiddleware } from './middleware/cors.js'
|
||||
import { kundenansichtGuard } from './middleware/kundenansichtGuard.js'
|
||||
import { dashboardWeiche, neuDirektWeiche, oeffentlicheSeiteWeiche } from './services/kundenansicht/dashboardWeiche.js'
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
const publicDir = path.join(__dirname, '..', 'public')
|
||||
@@ -151,6 +152,11 @@ app.use(unterkunftSeiteRouter())
|
||||
// Abgeschaltetes Admin-Panel und Rechnungsanalyse: Links aus alten Team-Mails ins Ticketsystem
|
||||
app.use('/admin.html', legacyAdminRedirect.admin)
|
||||
app.use('/kalkulation.html', legacyAdminRedirect.kalkulation)
|
||||
// Kundenansicht neu: je Sitzung die neue oder die alte Seite (Schalter KUNDENANSICHT_NEU), vor den statischen Dateien
|
||||
app.get('/dashboard.html', dashboardWeiche({ publicDir }))
|
||||
app.get('/neu/dashboard.html', neuDirektWeiche())
|
||||
// Kuendigen und Widerrufen: im Pilot die neuen Seiten aus public/neu/oeffentlich/, sobald die Dateien dort liegen
|
||||
app.get(['/kuendigen.html', '/widerrufen.html'], oeffentlicheSeiteWeiche({ publicDir }))
|
||||
app.use(express.static(publicDir))
|
||||
|
||||
app.get('/dashboard.html', (req, res, next) => {
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import { stat } from 'node:fs/promises'
|
||||
import path from 'node:path'
|
||||
import { neueAnsicht } from './schalter.js'
|
||||
|
||||
/**
|
||||
* Weichen der neuen Kundenansicht (Schalter KUNDENANSICHT_NEU, siehe schalter.js). Handler-Fabriken, die server/index.js
|
||||
* vor express.static einhaengt: je Sitzung die neue Seite aus public/neu/ oder next() fuer die alte (bytegleich, von
|
||||
* express.static ausgeliefert). Die neue Seite wird nie gecacht, weil dieselbe Adresse je Sitzung etwas anderes liefert.
|
||||
*/
|
||||
|
||||
const NEUES_DASHBOARD = 'neu/dashboard.html'
|
||||
|
||||
// Nachtrag N39: Seiten, die schon im Pilot aus public/neu/oeffentlich/ kommen, sobald die Datei dort liegt
|
||||
const OEFFENTLICHE_SEITEN = new Map([
|
||||
['/kuendigen.html', 'neu/oeffentlich/kuendigen.html'],
|
||||
['/widerrufen.html', 'neu/oeffentlich/widerrufen.html'],
|
||||
])
|
||||
|
||||
/** Neue Seite senden; no-cache steht vor sendFile, damit Express den Header nicht ueberschreibt. Fehler gehen an next(err). */
|
||||
function sendeNeu(res, publicDir, datei, next) {
|
||||
res.set('Cache-Control', 'no-cache')
|
||||
res.sendFile(datei, { root: publicDir }, (err) => {
|
||||
if (err) next(err)
|
||||
})
|
||||
}
|
||||
|
||||
/** GET /dashboard.html: neue Ansicht -> public/neu/dashboard.html, sonst next(). */
|
||||
export function dashboardWeiche({ publicDir }) {
|
||||
return (req, res, next) => {
|
||||
if (!neueAnsicht(req)) return next()
|
||||
sendeNeu(res, publicDir, NEUES_DASHBOARD, next)
|
||||
}
|
||||
}
|
||||
|
||||
/** GET /neu/dashboard.html (Direktaufruf): neue Ansicht -> next() (express.static liefert die Datei), sonst 302 auf /dashboard.html. */
|
||||
export function neuDirektWeiche() {
|
||||
return (req, res, next) => {
|
||||
if (neueAnsicht(req)) return next()
|
||||
res.redirect(302, '/dashboard.html')
|
||||
}
|
||||
}
|
||||
|
||||
/** GET /kuendigen.html und /widerrufen.html (N39): angemeldete Pilot-Sitzung und Datei vorhanden -> neue Seite, sonst next(). */
|
||||
export function oeffentlicheSeiteWeiche({ publicDir }) {
|
||||
return async (req, res, next) => {
|
||||
try {
|
||||
const datei = OEFFENTLICHE_SEITEN.get(req.path)
|
||||
if (!datei || !neueAnsicht(req)) return next()
|
||||
const info = await stat(path.join(publicDir, datei)).catch(() => null)
|
||||
if (!info?.isFile()) return next()
|
||||
sendeNeu(res, publicDir, datei, next)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user