diff --git a/package.json b/package.json index 8350a060..6617b455 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@prisma/client": "5.3.1", "@tanstack/react-query": "^4.33.0", "@umami/prisma-client": "^0.2.0", - "@umami/redis-client": "^0.5.0", + "@umami/redis-client": "^0.15.0", "chalk": "^4.1.1", "chart.js": "^4.2.1", "chartjs-adapter-date-fns": "^3.0.0", diff --git a/src/components/pages/settings/websites/TrackingCode.js b/src/components/pages/settings/websites/TrackingCode.js index a666476d..03dd6a1d 100644 --- a/src/components/pages/settings/websites/TrackingCode.js +++ b/src/components/pages/settings/websites/TrackingCode.js @@ -3,7 +3,7 @@ import useMessages from 'components/hooks/useMessages'; import useConfig from 'components/hooks/useConfig'; import { useRouter } from 'next/router'; -export function TrackingCode({ websiteId, analyticsUrl }) { +export function TrackingCode({ websiteId, baseUrl }) { const { formatMessage, messages } = useMessages(); const { basePath } = useRouter(); const config = useConfig(); @@ -13,9 +13,7 @@ export function TrackingCode({ websiteId, analyticsUrl }) { const url = trackerScriptName?.startsWith('http') ? trackerScriptName - : `${ - analyticsUrl || process.env.analyticsUrl || location.origin - }${basePath}/${trackerScriptName}`; + : `${baseUrl || location.origin}${basePath}/${trackerScriptName}`; const code = ``; diff --git a/src/lib/cache.ts b/src/lib/cache.ts index c54eda2e..a2e4ea5a 100644 --- a/src/lib/cache.ts +++ b/src/lib/cache.ts @@ -2,60 +2,58 @@ import { User, Website } from '@prisma/client'; import redis from '@umami/redis-client'; import { getSession, getUserById, getWebsiteById } from '../queries'; -const { fetchObject, storeObject, deleteObject, expire } = redis; - async function fetchWebsite(id): Promise { - return fetchObject(`website:${id}`, () => getWebsiteById(id), 86400); + return redis.fetchObject(`website:${id}`, () => getWebsiteById(id), 86400); } async function storeWebsite(data) { const { id } = data; const key = `website:${id}`; - const obj = await storeObject(key, data); - await expire(key, 86400); + const obj = await redis.storeObject(key, data); + await redis.expire(key, 86400); return obj; } async function deleteWebsite(id) { - return deleteObject(`website:${id}`); + return redis.deleteObject(`website:${id}`); } async function fetchUser(id): Promise { - return fetchObject(`user:${id}`, () => getUserById(id, { includePassword: true }), 86400); + return redis.fetchObject(`user:${id}`, () => getUserById(id, { includePassword: true }), 86400); } async function storeUser(data) { const { id } = data; const key = `user:${id}`; - const obj = await storeObject(key, data); - await expire(key, 86400); + const obj = await redis.storeObject(key, data); + await redis.expire(key, 86400); return obj; } async function deleteUser(id) { - return deleteObject(`user:${id}`); + return redis.deleteObject(`user:${id}`); } async function fetchSession(id) { - return fetchObject(`session:${id}`, () => getSession(id), 86400); + return redis.fetchObject(`session:${id}`, () => getSession(id), 86400); } async function storeSession(data) { const { id } = data; const key = `session:${id}`; - const obj = await storeObject(key, data); - await expire(key, 86400); + const obj = await redis.storeObject(key, data); + await redis.expire(key, 86400); return obj; } async function deleteSession(id) { - return deleteObject(`session:${id}`); + return redis.deleteObject(`session:${id}`); } async function fetchUserBlock(userId: string) { @@ -80,5 +78,5 @@ export default { deleteSession, fetchUserBlock, incrementUserBlock, - enabled: redis.enabled, + enabled: !!redis, }; diff --git a/src/lib/middleware.ts b/src/lib/middleware.ts index 8259677d..4be958b6 100644 --- a/src/lib/middleware.ts +++ b/src/lib/middleware.ts @@ -55,7 +55,7 @@ export const useAuth = createMiddleware(async (req, res, next) => { if (isUuid(userId)) { user = await getUserById(userId); - } else if (redis.enabled && authKey) { + } else if (redis && authKey) { user = await redis.get(authKey); } diff --git a/src/pages/api/auth/login.ts b/src/pages/api/auth/login.ts index 47521084..74661e33 100644 --- a/src/pages/api/auth/login.ts +++ b/src/pages/api/auth/login.ts @@ -52,17 +52,18 @@ export default async ( const user = await getUserByUsername(username, { includePassword: true }); if (user && checkPassword(password, user.password)) { - if (redis.enabled) { + if (redis) { const token = await setAuthKey(user); return ok(res, { token, user }); } const token = createSecureToken({ userId: user.id }, secret()); + const { id, username, role, createdAt } = user; return ok(res, { token, - user: { id: user.id, username: user.username, role: user.role, createdAt: user.createdAt }, + user: { id, username, role, createdAt }, }); } diff --git a/src/pages/api/auth/logout.ts b/src/pages/api/auth/logout.ts index cbccce8d..e6222e49 100644 --- a/src/pages/api/auth/logout.ts +++ b/src/pages/api/auth/logout.ts @@ -8,7 +8,7 @@ export default async (req: NextApiRequest, res: NextApiResponse) => { await useAuth(req, res); if (req.method === 'POST') { - if (redis.enabled) { + if (redis) { await redis.del(getAuthToken(req)); } diff --git a/src/pages/api/auth/sso.ts b/src/pages/api/auth/sso.ts index 66cbd8e2..a7992666 100644 --- a/src/pages/api/auth/sso.ts +++ b/src/pages/api/auth/sso.ts @@ -8,7 +8,7 @@ import { setAuthKey } from 'lib/auth'; export default async (req: NextApiRequestAuth, res: NextApiResponse) => { await useAuth(req, res); - if (redis.enabled && req.auth.user) { + if (redis && req.auth.user) { const token = await setAuthKey(req.auth.user, 86400); return ok(res, { user: req.auth.user, token }); diff --git a/yarn.lock b/yarn.lock index 8687c432..ecb1a7eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2766,10 +2766,10 @@ dependencies: debug "^4.3.4" -"@umami/redis-client@^0.5.0": - version "0.5.0" - resolved "https://registry.npmjs.org/@umami/redis-client/-/redis-client-0.5.0.tgz" - integrity sha512-x7wx/pMjyg3AAYzgjGOw031bNhyZ81h6tRMAl60RQQI9xlJaJEA1r0TEUrWfFi21gHAvdBLJGYCsvHzpix4LKQ== +"@umami/redis-client@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@umami/redis-client/-/redis-client-0.15.0.tgz#55e9c4ede28fdd3b6a169378d391a5d2cc039e51" + integrity sha512-+Ei6i4qx9Md4o92Mlzvh9rTgkfllgmSwFu1687DEqFnNrHd+KNVxgNNDiyyCwzfC0t/DAaq7PoOFw4NjJYo9wQ== dependencies: debug "^4.3.4" redis "^4.5.1"