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