Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/next/lib/user-id.ts
5698 views
1
/*
2
* This file is part of CoCalc: Copyright © 2021 Sagemath, Inc.
3
* License: MS-RSL – see LICENSE.md for details
4
*/
5
6
import type { Request } from "express";
7
8
import { getServerSettings } from "@cocalc/database/settings/server-settings";
9
import { ANALYTICS_COOKIE_NAME } from "@cocalc/util/consts";
10
import { getClientIpAddress } from "@cocalc/util/get-client-ip-address";
11
import { isValidAnonymousID } from "@cocalc/util/misc";
12
13
// Get anonymous user ID from cookie or IP address
14
export async function getAnonymousID(
15
req: Request,
16
): Promise<string | undefined> {
17
const { analytics_cookie: analytics_enabled } = await getServerSettings();
18
19
if (analytics_enabled) {
20
const cookie = req.cookies[ANALYTICS_COOKIE_NAME];
21
if (isValidAnonymousID(cookie)) {
22
return cookie;
23
}
24
}
25
26
// Fall back to IP address
27
const connectingIp = getClientIpAddress(req);
28
29
if (isValidAnonymousID(connectingIp)) {
30
return connectingIp;
31
}
32
33
return undefined;
34
}
35
36