aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/countries.js249
-rw-r--r--lib/register.js23
2 files changed, 257 insertions, 15 deletions
diff --git a/lib/countries.js b/lib/countries.js
new file mode 100644
index 00000000..4d5a48dc
--- /dev/null
+++ b/lib/countries.js
@@ -0,0 +1,249 @@
+export default {
+ AF: "AFG",
+ AL: "ALB",
+ DZ: "DZA",
+ AD: "AND",
+ AO: "AGO",
+ AI: "AIA",
+ AQ: "ATA",
+ AR: "ARG",
+ AM: "ARM",
+ AW: "ABW",
+ AU: "AUS",
+ AT: "AUT",
+ AZ: "AZE",
+ BS: "BHS",
+ BH: "BHR",
+ BD: "BGD",
+ BB: "BRB",
+ BY: "BLR",
+ BE: "BEL",
+ BZ: "BLZ",
+ BJ: "BEN",
+ BM: "BMU",
+ BT: "BTN",
+ BO: "BOL",
+ BW: "BWA",
+ BV: "NOK",
+ BR: "BRA",
+ IO: "USD",
+ VG: "USD",
+ BN: "BRN",
+ BG: "BGR",
+ BF: "XOF",
+ BI: "BDI",
+ KH: "KHM",
+ CM: "CMR",
+ CA: "CAN",
+ IC: "EUR",
+ CV: "CVE",
+ KY: "KYD",
+ CF: "XAF",
+ TD: "TCD",
+ CL: "CHL",
+ CN: "CHN",
+ CX: "AUD",
+ CC: "AUD",
+ CO: "COL",
+ KM: "COM",
+ CG: "XAF",
+ CD: "CDF",
+ CK: "NZD",
+ CR: "CRC",
+ CI: "XOF",
+ HR: "HRV",
+ CU: "CUB",
+ CW: "ANG",
+ CY: "CYP",
+ CZ: "CZK",
+ DK: "DNK",
+ DJ: "DJI",
+ DM: "DMA",
+ DO: "DOP",
+ TL: "IDS",
+ EC: "ECU",
+ EG: "EGY",
+ SV: "SVC",
+ GQ: "XAF",
+ ER: "ERI",
+ EE: "EST",
+ ET: "ETH",
+ FK: "FKP",
+ FO: "DKK",
+ FJ: "FJI",
+ FI: "FIN",
+ FR: "FRA",
+ GF: "EUR",
+ PF: "XPF",
+ TF: "EUR",
+ GA: "GAB",
+ GM: "GMB",
+ GE: "GEO",
+ DE: "DEU",
+ GH: "GHA",
+ GI: "GIB",
+ GR: "GRC",
+ GL: "GRL",
+ GD: "GRD",
+ GP: "GLP",
+ GU: "GUM",
+ GT: "GTM",
+ GG: "GGY",
+ GN: "GIN",
+ GW: "XOF",
+ GY: "GUY",
+ HT: "HTI",
+ HM: "AUD",
+ HN: "HND",
+ HK: "HKD",
+ HU: "HUN",
+ IS: "ISL",
+ IN: "IND",
+ ID: "IDN",
+ IR: "IRN",
+ IQ: "IRQ",
+ IE: "IRL",
+ Of: "Man",
+ IL: "ISR",
+ IT: "ITA",
+ JM: "JAM",
+ JP: "JPN",
+ JE: "JEY",
+ JO: "JOR",
+ KZ: "KAZ",
+ KE: "KEN",
+ KI: "KIR",
+ XK: "XKX",
+ KW: "KWT",
+ KG: "KGZ",
+ LA: "LAO",
+ LV: "LVA",
+ LB: "LBN",
+ LS: "LSO",
+ LR: "LBR",
+ LY: "LBY",
+ LI: "LIE",
+ LT: "LTU",
+ LU: "LUX",
+ MO: "MAC",
+ MK: "MKD",
+ MG: "MDG",
+ MW: "MWI",
+ MY: "MYS",
+ MV: "MDV",
+ ML: "MLI",
+ MT: "MLT",
+ MH: "USD",
+ MQ: "MTQ",
+ MR: "MRT",
+ MU: "MUS",
+ YT: "MYT",
+ MX: "MEX",
+ FM: "FSM",
+ MD: "MDA",
+ MC: "MCO",
+ MN: "MNG",
+ ME: "MNE",
+ MS: "MSR",
+ MA: "MAR",
+ MZ: "MOZ",
+ MM: "MMR",
+ NA: "NAM",
+ NR: "NRU",
+ NP: "NPL",
+ NL: "NLD",
+ AN: "ANG",
+ NC: "XPF",
+ NZ: "NZD",
+ NI: "NIC",
+ NE: "NER",
+ NG: "NGA",
+ NU: "NIU",
+ NF: "AUD",
+ KP: "KPW",
+ MP: "USD",
+ NO: "NOR",
+ OM: "OMN",
+ PK: "PAK",
+ PW: "PLW",
+ PS: "PSE",
+ PA: "PAN",
+ PG: "PGK",
+ PY: "PRY",
+ PE: "PER",
+ PH: "PHL",
+ PN: "PCN",
+ PL: "POL",
+ PT: "PRT",
+ PR: "USD",
+ QA: "QAT",
+ RE: "REU",
+ RO: "ROU",
+ RU: "RUS",
+ RW: "RWA",
+ BL: "EUR",
+ SH: "GPB",
+ KN: "XCD",
+ LC: "XCD",
+ MF: "EUR",
+ PM: "EUR",
+ VC: "XCD",
+ WS: "WSM",
+ SM: "EUR",
+ ST: "STN",
+ SA: "SAR",
+ SN: "SEN",
+ RS: "SRB",
+ CS: "RSD",
+ SC: "SYC",
+ SL: "SLL",
+ SG: "SGP",
+ SX: "ANG",
+ SK: "SVK",
+ SI: "SVN",
+ SB: "SBD",
+ SO: "SOM",
+ ZA: "ZAR",
+ GS: "GBP",
+ KR: "KRW",
+ SS: "SSP",
+ ES: "ESP",
+ LK: "LKR",
+ SD: "SDN",
+ SR: "SUR",
+ SJ: "NOK",
+ SZ: "SWZ",
+ SE: "SWE",
+ CH: "CHE",
+ SY: "SYR",
+ TW: "TWN",
+ TJ: "TJK",
+ TZ: "TZA",
+ TH: "THA",
+ TG: "TGO",
+ TK: "TKL",
+ TO: "TON",
+ TT: "TTD",
+ TA: "SHP",
+ TN: "TUN",
+ TR: "TUR",
+ TM: "TKM",
+ TC: "USD",
+ TV: "TUV",
+ UM: "USD",
+ VI: "USD",
+ UG: "UGA",
+ UA: "UKR",
+ AE: "AED",
+ GB: "GBP",
+ US: "USD",
+ UY: "URY",
+ UZ: "UZB",
+ VU: "VUT",
+ VA: "VAT",
+ VE: "VEN",
+ VN: "VNM",
+ YE: "YEM",
+ ZM: "ZMB",
+ ZW: "ZWE"
+};
diff --git a/lib/register.js b/lib/register.js
index 60f8825f..6f8f366b 100644
--- a/lib/register.js
+++ b/lib/register.js
@@ -1,3 +1,4 @@
+import countries from "$lib/countries";
import config from "$config";
import { authenticator } from "otplib";
import db from "$db";
@@ -16,22 +17,14 @@ export default async (user, ip, requireChallenge) => {
user.password = await bcrypt.hash(user.password, 1);
}
- let countries = {
- CA: "CAD",
- US: "USD",
- JP: "JPY",
- CN: "CNY",
- AU: "AUD",
- GB: "GBP"
- };
-
- if (!config.ipstack || ip.startsWith("127") || ip.startsWith("192"))
+ if (!config.ipxapi || ip.startsWith("127") || ip.startsWith("192")) {
user.currency = "CAD";
- else {
- let info = await axios.get(
- `http://api.ipstack.com/${ip}?access_key=${config.ipstack}`
- );
- user.currency = countries[info.data.country_code] || "USD";
+ } else {
+ let { data } = await axios.get(`https://ipxapi.com/api/ip?ip=${ip}`, {
+ headers: { authorization: `Bearer ${config.ipxapi}` }
+ });
+
+ user.currency = countries[data.countryCode] || "USD";
}
user.currencies = [...new Set([user.currency, "CAD", "USD"])];