/** * GET /api/chat/eligible → { eligible: boolean } * * Server-authoritative answer to "may THIS user use staff chat?" — checks the * DB (IsSystemUser + IsChatEnabled + non-limited role) via the shared gate, so * the client no longer depends on the possibly-stale logship_user cookie copy * of IsChatEnabled. A colleague who gets chat enabled in iDempiere AFTER their * last login therefore becomes eligible WITHOUT re-logging-in. * * Always returns 200 (eligible:false when chat is disabled or the user isn't * allowed) so the client fetch never throws / logs noise for ordinary denials. */ import { gateFromEvent } from '../../utils/chatAccess' export default defineEventHandler(async (event) => { const config = useRuntimeConfig() if (config.chatEnabled !== true) return { eligible: false } try { await gateFromEvent(event) // resolves DB flags (cached); refreshes token if expired return { eligible: true } } catch { return { eligible: false } } })