From 9b37b3897dbbbb11ecacc26a5cc7d788d1d8b43e Mon Sep 17 00:00:00 2001 From: Maxime Alza Date: Wed, 24 Jul 2024 15:28:10 +0200 Subject: [PATCH] Remove inactive user (more thant 1 year without connect) in cleanup --- .gitlab-ci.yml | 28 ++++++------- .../backend/cleanup/index.js | 39 ++++++++++++++++++- 2 files changed, 52 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f6a8f84..d843061 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,22 +9,22 @@ deploy-job: environment: name: open-source script: - - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/translation - - gcloud builds submit . - - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/reporting - - gcloud builds submit . - - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/token-broker - - gcloud builds submit . +# - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/translation +# - gcloud builds submit . +# - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/reporting +# - gcloud builds submit . +# - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/token-broker +# - gcloud builds submit . - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/cleanup - gcloud builds submit . - - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/telemetry - - gcloud builds submit . - - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/authentication - - gcloud builds submit . - - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/detect-text - - gcloud builds submit . - - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/pdf-to-image - - gcloud builds submit . +# - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/telemetry +# - gcloud builds submit . +# - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/authentication +# - gcloud builds submit . +# - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/detect-text +# - gcloud builds submit . +# - cd /builds/petranslate/TradEmploi-backend/translation-app-assessment/backend/pdf-to-image +# - gcloud builds submit . only: refs: - master diff --git a/translation-app-assessment/backend/cleanup/index.js b/translation-app-assessment/backend/cleanup/index.js index c8f51ce..b47cdd5 100644 --- a/translation-app-assessment/backend/cleanup/index.js +++ b/translation-app-assessment/backend/cleanup/index.js @@ -23,7 +23,7 @@ const corsOptions = { origin: process.env.FRONTEND_URL, credentials: true, // Permet les requĂȘtes incluant les cookies allowedHeaders: ['Content-Type', 'Authorization', 'Accept', 'Origin'], - methods: ['GET'], + methods: ['GET', 'POST'], }; app.use(cors(corsOptions)); @@ -93,6 +93,7 @@ app.post('/', async (req, res, next) => { console.log(`deleted chats, size:${querySnapshot.size}`) await createLanguagesFromRates(); + await deleteInactiveUsers(); res.status(204).send() } catch(e) { next(e) @@ -361,3 +362,39 @@ async function createLanguage(isoCode, occurrences, average) { await firestore.collection("languages").doc(isoCode).set(data) } +async function deleteInactiveUsers() { + const auth = firebaseAdmin.auth(); + const oneYearAgo = Date.now() - 365 * 24 * 60 * 60 * 1000; + try { + let usersDeleted = 0; + let nextPageToken; + + do { + const result = await auth.listUsers(1000, nextPageToken); + const inactiveUsers = result.users.filter(user => { + const lastSignInTime = user.metadata.lastSignInTime; + return lastSignInTime && new Date(lastSignInTime).getTime() < oneYearAgo; + }); + + const deletionPromises = inactiveUsers.map(user => { + return auth.deleteUser(user.uid) + .then(() => { + console.log(`Successfully deleted user: ${user.uid}`); + usersDeleted++; + }) + .catch(error => { + console.error(`Error deleting user ${user.uid}:`, error); + }); + }); + + await Promise.all(deletionPromises); + + nextPageToken = result.pageToken; + } while (nextPageToken); + + console.log(`Deleted ${usersDeleted} inactive users.`); + } catch (error) { + console.error('Error listing users:', error); + } +} +