v1.7.9/webhook user cleanup update
This commit is contained in:
Generated
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "watch-party-api",
|
"name": "watch-party-api",
|
||||||
"version": "1.7.7",
|
"version": "1.7.9",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const admin = require('firebase-admin');
|
const admin = require("firebase-admin");
|
||||||
|
|
||||||
const timeDiff = (ds1, ds2) => {
|
const timeDiff = (ds1, ds2) => {
|
||||||
const d1 = new Date(ds1);
|
const d1 = new Date(ds1);
|
||||||
@@ -13,36 +13,58 @@ const cleanUser = async (pT, sT) => {
|
|||||||
await admin
|
await admin
|
||||||
.auth()
|
.auth()
|
||||||
.listUsers(1000, pT)
|
.listUsers(1000, pT)
|
||||||
.then((listUsersResult) => {
|
.then(async (listUsersResult) => {
|
||||||
listUsersResult.users.forEach((userRecord) => {
|
listUsersResult.users.forEach((userRecord) => {
|
||||||
if (userRecord.uid !== "PTjxbs2rAxMvCD6Pj5P6Z2U6d5A3" && timeDiff(userRecord.metadata.lastRefreshTime, sT) >= 24) {
|
if (
|
||||||
|
userRecord.uid !== "PTjxbs2rAxMvCD6Pj5P6Z2U6d5A3" &&
|
||||||
|
timeDiff(userRecord.metadata.lastRefreshTime, sT) >= 24
|
||||||
|
) {
|
||||||
usersToDelete.push(userRecord.uid);
|
usersToDelete.push(userRecord.uid);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (listUsersResult.pageToken) {
|
if (listUsersResult.pageToken) {
|
||||||
usersToDelete.push(...listAllUsers(listUsersResult.pageToken, sT));
|
const uD = await cleanUser(listUsersResult.pageToken, sT);
|
||||||
|
usersToDelete.push(...uD);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.log('Error listing users:', error);
|
console.log("Error listing users:", error);
|
||||||
});
|
});
|
||||||
return usersToDelete;
|
return usersToDelete;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const batchDeleteUser = async (userList, totalNumber) => {
|
||||||
|
setTimeout(async () => {
|
||||||
|
const uTDSplice = userList.splice(0, 100);
|
||||||
|
if (uTDSplice.length > 0) {
|
||||||
|
await admin
|
||||||
|
.auth()
|
||||||
|
.deleteUsers(uTDSplice)
|
||||||
|
.catch((err) =>
|
||||||
|
console.error(
|
||||||
|
`[ERROR]\tWEBHOOKS/User Clean Up\t# OF USERS ${userList.length} REMAINING,\tERROR:${err}`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
console.info(
|
||||||
|
`[DONE]\tWEBHOOKS/User Clean Up\t# OF USERS ${uTDSplice.length}/${userList.length}`
|
||||||
|
);
|
||||||
|
batchDeleteUser(userList, totalNumber);
|
||||||
|
} else {
|
||||||
|
console.info(
|
||||||
|
`[DONE]\tWEBHOOKS/User Clean Up\tDeleted all ${totalNumber} stale users`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, 3000);
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = async (req, res) => {
|
module.exports = async (req, res) => {
|
||||||
console.info(`[START]\tWEBHOOKS/User Clean Up`);
|
console.info(`[START]\tWEBHOOKS/User Clean Up`);
|
||||||
res.status(200).send({ message: 'User Clean Up Started' });
|
res.status(200).send({ message: "User Clean Up Started" });
|
||||||
const startedTime = new Date();
|
const startedTime = new Date();
|
||||||
const usersToDelete = await cleanUser(undefined, startedTime);
|
const usersToDelete = await cleanUser(undefined, startedTime);
|
||||||
console.info(`[PROGRESS]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length}`);
|
console.info(
|
||||||
admin
|
`[PROGRESS]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length}`
|
||||||
.auth()
|
);
|
||||||
.deleteUsers(usersToDelete)
|
batchDeleteUser(usersToDelete, usersToDelete.length);
|
||||||
.catch((err) =>
|
|
||||||
console.error(
|
|
||||||
`[ERROR]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length},\tERROR:${err}`
|
|
||||||
)
|
|
||||||
);
|
|
||||||
console.info(`[DONE]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length}`);
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user