Add in IP tracking for SingleDeviceOnly checks.

This commit is contained in:
Patrick Fic
2024-09-05 11:52:06 -07:00
parent 4d9be1d232
commit d40f3ee45a

View File

@@ -10,7 +10,7 @@ import {
signInWithEmailAndPassword, signInWithEmailAndPassword,
signOut signOut
} from "firebase/auth"; } from "firebase/auth";
import { doc, getDoc, setDoc } from "firebase/firestore"; import { arrayUnion, doc, getDoc, setDoc, updateDoc } from "firebase/firestore";
import { getToken } from "firebase/messaging"; import { getToken } from "firebase/messaging";
import i18next from "i18next"; import i18next from "i18next";
import LogRocket from "logrocket"; import LogRocket from "logrocket";
@@ -48,6 +48,7 @@ import {
validatePasswordResetSuccess validatePasswordResetSuccess
} from "./user.actions"; } from "./user.actions";
import UserActionTypes from "./user.types"; import UserActionTypes from "./user.types";
import cleanAxios from "../../utils/CleanAxios";
const fpPromise = FingerprintJS.load(); const fpPromise = FingerprintJS.load();
@@ -177,10 +178,24 @@ export function* setInstanceIdSaga({ payload: uid }) {
// Get the visitor identifier when you need it. // Get the visitor identifier when you need it.
const fp = yield fpPromise; const fp = yield fpPromise;
const result = yield fp.get(); const result = yield fp.get();
yield setDoc(userInstanceRef, { const res = yield cleanAxios.get("https://api.ipify.org/?format=json");
timestamp: new Date(), const udoc = yield getDoc(userInstanceRef);
fingerprint: result.visitorId
}); if (!udoc.data()) {
yield setDoc(userInstanceRef, {
timestamp: new Date(),
fingerprint: result.visitorId,
//totalFingerprint: result,
ip: [res.data.ip]
});
} else {
yield updateDoc(userInstanceRef, {
timestamp: new Date(),
fingerprint: result.visitorId,
//totalFingerprint: result,
ip: arrayUnion(res.data.ip)
});
}
yield put(setLocalFingerprint(result.visitorId)); yield put(setLocalFingerprint(result.visitorId));
yield delay(5 * 60 * 1000); yield delay(5 * 60 * 1000);
@@ -311,17 +326,17 @@ export function* SetAuthLevelFromShopDetails({ payload }) {
); );
const user = yield select((state) => state.user.currentUser); const user = yield select((state) => state.user.currentUser);
if (payload.features.singleDeviceOnly) { // if (payload.features.singleDeviceOnly) {
if ( // if (
!( // !(
user.email.includes("@imex.") || // user.email.includes("@imex.") ||
user.email.includes("@rome.") || // user.email.includes("@rome.") ||
user.email.includes("@rometech.") || // user.email.includes("@rometech.") ||
user.email.includes("@promanager.") // user.email.includes("@promanager.")
) // )
) // )
yield put(setInstanceId(user.uid)); yield put(setInstanceId(user.uid));
} //}
//For Rome, check to make sure it's not a PM shop. //For Rome, check to make sure it's not a PM shop.
try { try {