use ip-lookup-api to determine users country
This commit is contained in:
Generated
+7731
-5187
File diff suppressed because it is too large
Load Diff
@@ -43,6 +43,7 @@
|
|||||||
"habitica-markdown": "^3.0.0",
|
"habitica-markdown": "^3.0.0",
|
||||||
"helmet": "^4.6.0",
|
"helmet": "^4.6.0",
|
||||||
"in-app-purchase": "^1.11.3",
|
"in-app-purchase": "^1.11.3",
|
||||||
|
"ip-location-api": "^4.0.0",
|
||||||
"js2xmlparser": "^5.0.0",
|
"js2xmlparser": "^5.0.0",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"jwks-rsa": "^2.1.5",
|
"jwks-rsa": "^2.1.5",
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import Amplitude from 'amplitude';
|
import Amplitude from 'amplitude';
|
||||||
import useragent from 'useragent';
|
import useragent from 'useragent';
|
||||||
|
import { lookup } from 'ip-location-api'
|
||||||
|
import { createHash } from 'crypto';
|
||||||
import {
|
import {
|
||||||
omit,
|
omit,
|
||||||
toArray,
|
toArray,
|
||||||
@@ -56,7 +58,7 @@ function _lookUpItemName (itemKey) {
|
|||||||
return itemName;
|
return itemName;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _formatUserData (user) {
|
function _formatUserData (user, ipaddress) {
|
||||||
const properties = {};
|
const properties = {};
|
||||||
|
|
||||||
if (user.stats) {
|
if (user.stats) {
|
||||||
@@ -103,6 +105,12 @@ function _formatUserData (user) {
|
|||||||
properties.loginIncentives = user.loginIncentives;
|
properties.loginIncentives = user.loginIncentives;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ipaddress) {
|
||||||
|
const location = lookup(ipaddress);
|
||||||
|
properties.country = location.country;
|
||||||
|
properties.region = location.region1;
|
||||||
|
}
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +164,7 @@ function _formatDataForAmplitude (data) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (data.user) {
|
if (data.user) {
|
||||||
ampData.user_properties = _formatUserData(data.user);
|
ampData.user_properties = _formatUserData(data.user, data.ipaddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
const itemName = _lookUpItemName(data.itemKey);
|
const itemName = _lookUpItemName(data.itemKey);
|
||||||
@@ -260,7 +268,7 @@ async function updateUserData (data) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const toUpdate = {
|
const toUpdate = {
|
||||||
..._formatUserData(user),
|
..._formatUserData(user, data.ipaddress),
|
||||||
...properties,
|
...properties,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user