This commit is contained in:
michael committed 2026-09-23 07:52:15 +00:00
1 parent 040f1903e6
commit d6c8877ed7
16 files changed
+1541 -178

No files matched your search

+5 -2
View File
@@ -17,6 +17,7 @@ export type AuthUser = {
active: boolean;
zammad_user_id: string | null;
has_zammad_api_token: boolean;
zammad_email_session_webhook_enabled: boolean;
};
declare global {
@@ -77,7 +78,8 @@ function publicUser(user: AuthUser) {
role: user.role,
active: user.active,
zammad_user_id: user.zammad_user_id ?? null,
has_zammad_api_token: Boolean(user.has_zammad_api_token)
has_zammad_api_token: Boolean(user.has_zammad_api_token),
zammad_email_session_webhook_enabled: Boolean(user.zammad_email_session_webhook_enabled)
};
}
@@ -134,7 +136,8 @@ export async function requireAuth(req: Request, res: Response, next: NextFunctio
u.role,
u.active,
u.zammad_user_id::text AS zammad_user_id,
(u.zammad_api_token IS NOT NULL) AS has_zammad_api_token
(u.zammad_api_token IS NOT NULL) AS has_zammad_api_token,
u.zammad_email_session_webhook_enabled
FROM auth_sessions s
JOIN users u ON u.id = s.user_id
WHERE s.token_hash = $1
+726 -168
View File
File diff suppressed because it is too large. Load diff
+22
View File
@@ -86,6 +86,7 @@ export async function migrate() {
`);
await query("ALTER TABLE users ADD COLUMN IF NOT EXISTS zammad_api_token TEXT;");
await query("ALTER TABLE users ADD COLUMN IF NOT EXISTS zammad_user_id BIGINT;");
await query("ALTER TABLE users ADD COLUMN IF NOT EXISTS zammad_email_session_webhook_enabled BOOLEAN NOT NULL DEFAULT false;");
await query(`
CREATE TABLE IF NOT EXISTS auth_sessions (
@@ -220,6 +221,27 @@ export async function migrate() {
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS recurring_occurrence_date DATE;");
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS recurring_occurrence_key TEXT;");
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS project_teamspace_entry_id BIGINT;");
await query(`
CREATE TABLE IF NOT EXISTS zammad_email_session_events (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
zammad_article_id BIGINT,
delivery_id TEXT,
session_id BIGINT REFERENCES sessions(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT zammad_email_session_event_source CHECK (zammad_article_id IS NOT NULL OR delivery_id IS NOT NULL)
);
`);
await query(`
CREATE UNIQUE INDEX IF NOT EXISTS idx_zammad_email_session_events_user_article
ON zammad_email_session_events(user_id, zammad_article_id)
WHERE zammad_article_id IS NOT NULL;
`);
await query(`
CREATE UNIQUE INDEX IF NOT EXISTS idx_zammad_email_session_events_delivery
ON zammad_email_session_events(delivery_id)
WHERE delivery_id IS NOT NULL;
`);
if (adminId) {
await query("UPDATE sessions SET user_id = $1 WHERE user_id IS NULL;", [adminId]);
}