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",
"version": "1.7.7",
"version": "1.7.9",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+37 -15
View File
@@ -1,4 +1,4 @@
const admin = require('firebase-admin');
const admin = require("firebase-admin");
const timeDiff = (ds1, ds2) => {
const d1 = new Date(ds1);
@@ -13,36 +13,58 @@ const cleanUser = async (pT, sT) => {
await admin
.auth()
.listUsers(1000, pT)
.then((listUsersResult) => {
.then(async (listUsersResult) => {
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);
}
});
if (listUsersResult.pageToken) {
usersToDelete.push(...listAllUsers(listUsersResult.pageToken, sT));
const uD = await cleanUser(listUsersResult.pageToken, sT);
usersToDelete.push(...uD);
}
return;
})
.catch((error) => {
console.log('Error listing users:', error);
console.log("Error listing users:", error);
});
return usersToDelete;
};
module.exports = async (req, res) => {
console.info(`[START]\tWEBHOOKS/User Clean Up`);
res.status(200).send({ message: 'User Clean Up Started' });
const startedTime = new Date();
const usersToDelete = await cleanUser(undefined, startedTime);
console.info(`[PROGRESS]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length}`);
admin
const batchDeleteUser = async (userList, totalNumber) => {
setTimeout(async () => {
const uTDSplice = userList.splice(0, 100);
if (uTDSplice.length > 0) {
await admin
.auth()
.deleteUsers(usersToDelete)
.deleteUsers(uTDSplice)
.catch((err) =>
console.error(
`[ERROR]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length},\tERROR:${err}`
`[ERROR]\tWEBHOOKS/User Clean Up\t# OF USERS ${userList.length} REMAINING,\tERROR:${err}`
)
);
console.info(`[DONE]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length}`);
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) => {
console.info(`[START]\tWEBHOOKS/User Clean Up`);
res.status(200).send({ message: "User Clean Up Started" });
const startedTime = new Date();
const usersToDelete = await cleanUser(undefined, startedTime);
console.info(
`[PROGRESS]\tWEBHOOKS/User Clean Up\t# OF USERS ${usersToDelete.length}`
);
batchDeleteUser(usersToDelete, usersToDelete.length);
};