Files
watchparty/functions/webhooks/userCleanUp.js
T
2020-10-11 00:16:56 -04:00

49 lines
1.5 KiB
JavaScript

const admin = require('firebase-admin');
const timeDiff = (ds1, ds2) => {
const d1 = new Date(ds1);
const d2 = new Date(ds2);
var diff = (d2.getTime() - d1.getTime()) / 1000;
diff /= 60 * 60;
return Math.abs(Math.round(diff));
};
const cleanUser = async (pT, sT) => {
var usersToDelete = [];
await admin
.auth()
.listUsers(1000, pT)
.then((listUsersResult) => {
listUsersResult.users.forEach((userRecord) => {
if (userRecord.uid !== "PTjxbs2rAxMvCD6Pj5P6Z2U6d5A3" && timeDiff(userRecord.metadata.lastRefreshTime, sT) >= 24) {
usersToDelete.push(userRecord.uid);
}
});
if (listUsersResult.pageToken) {
usersToDelete.push(...listAllUsers(listUsersResult.pageToken, sT));
}
return;
})
.catch((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
.auth()
.deleteUsers(usersToDelete)
.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}`);
};