use ip-lookup-api to determine users country

This commit is contained in:
Phillip Thelen
2025-09-05 12:51:54 +02:00
parent d952239d35
commit 6f63583a12
3 changed files with 7743 additions and 5190 deletions
+7731 -5187
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -43,6 +43,7 @@
"habitica-markdown": "^3.0.0",
"helmet": "^4.6.0",
"in-app-purchase": "^1.11.3",
"ip-location-api": "^4.0.0",
"js2xmlparser": "^5.0.0",
"jsonwebtoken": "^9.0.2",
"jwks-rsa": "^2.1.5",
+11 -3
View File
@@ -2,6 +2,8 @@
import nconf from 'nconf';
import Amplitude from 'amplitude';
import useragent from 'useragent';
import { lookup } from 'ip-location-api'
import { createHash } from 'crypto';
import {
omit,
toArray,
@@ -56,7 +58,7 @@ function _lookUpItemName (itemKey) {
return itemName;
}
function _formatUserData (user) {
function _formatUserData (user, ipaddress) {
const properties = {};
if (user.stats) {
@@ -103,6 +105,12 @@ function _formatUserData (user) {
properties.loginIncentives = user.loginIncentives;
}
if (ipaddress) {
const location = lookup(ipaddress);
properties.country = location.country;
properties.region = location.region1;
}
return properties;
}
@@ -156,7 +164,7 @@ function _formatDataForAmplitude (data) {
};
if (data.user) {
ampData.user_properties = _formatUserData(data.user);
ampData.user_properties = _formatUserData(data.user, data.ipaddress);
}
const itemName = _lookUpItemName(data.itemKey);
@@ -260,7 +268,7 @@ async function updateUserData (data) {
return null;
}
const toUpdate = {
..._formatUserData(user),
..._formatUserData(user, data.ipaddress),
...properties,
};