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"