diff --git a/db/clickhouse/schema.sql b/db/clickhouse/schema.sql index 0579d13d..256b713d 100644 --- a/db/clickhouse/schema.sql +++ b/db/clickhouse/schema.sql @@ -68,6 +68,6 @@ SELECT website_id, language, country, event_name, - event_data, + if((empty(event_data) = 0) AND startsWith(event_data, '"'), concat('{', event_data, ': true}'), event_data) AS event_data, created_at FROM event_queue; \ No newline at end of file diff --git a/lib/auth.js b/lib/auth.js index 664ff30c..09193e89 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -50,12 +50,9 @@ export function isValidToken(token, validation) { export async function allowQuery(req, type) { const { id } = req.query; - const { - user: { id: userId, isAdmin }, - shareToken, - } = req.auth; + const { user, shareToken } = req.auth; - if (isAdmin) { + if (user?.isAdmin) { return true; } @@ -63,11 +60,11 @@ export async function allowQuery(req, type) { return isValidToken(shareToken, { id }); } - if (userId) { + if (user?.id) { if (type === TYPE_WEBSITE) { const website = await getWebsite({ id }); - return website && website.userId === userId; + return website && website.userId === user.id; } else if (type === TYPE_USER) { const user = await getUser({ id }); diff --git a/lib/middleware.js b/lib/middleware.js index 09d790d1..c60d2770 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -29,12 +29,12 @@ export const useAuth = createMiddleware(async (req, res, next) => { const payload = parseSecureToken(token, secret()); const shareToken = await parseShareToken(req); - let user; + let user = null; const { userId, key } = payload || {}; if (validate(userId)) { user = await getUser({ id: userId }); - } else if (redis.enabled) { + } else if (redis.enabled && key) { user = await redis.get(key); }