v1.7.9/webhook user cleanup update

This commit is contained in:
2021-01-06 11:57:38 -05:00
parent 39a9c45ca0
commit 122903cbe7
2 changed files with 39 additions and 17 deletions
+1 -1
View File
@@ -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": {
+38 -16
View File
@@ -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}`);
}; };