- C1: Disable Swagger UI in production (env gate) - M1+M2: Add Helmet.js for security headers (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy) and remove X-Powered-By - H2: Add @nestjs/throttler rate limiting (5 req/min on login/register) - M4: Remove orgSchema from JWT payload and client-side storage; tenant middleware now resolves schema from orgId via cached DB lookup - L1: Fix Chatwoot user identification (read from auth store on ready) - Remove schemaName from frontend Organization type and UI displays Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
43 lines
1.3 KiB
HTML
43 lines
1.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>HOA LedgerIQ</title>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.tsx"></script>
|
|
<script>
|
|
(function(d,t) {
|
|
var BASE_URL="https://chat.hoaledgeriq.com";
|
|
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
|
g.src=BASE_URL+"/packs/js/sdk.js";
|
|
g.async=true;
|
|
s.parentNode.insertBefore(g,s);
|
|
g.onload=function(){
|
|
window.chatwootSDK.run({
|
|
websiteToken:'K6VXvTtKXvaCMvre4yK85SPb',
|
|
baseUrl:BASE_URL
|
|
})
|
|
}
|
|
})(document,"script");
|
|
window.addEventListener('chatwoot:ready', function() {
|
|
try {
|
|
var raw = localStorage.getItem('ledgeriq-auth');
|
|
if (!raw) return;
|
|
var auth = JSON.parse(raw);
|
|
var user = auth && auth.state && auth.state.user;
|
|
if (user && window.$chatwoot) {
|
|
window.$chatwoot.setUser(user.id, {
|
|
name: (user.firstName || '') + ' ' + (user.lastName || ''),
|
|
email: user.email
|
|
});
|
|
}
|
|
} catch (e) {}
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|