* [web] skip db query when getting empty list of users
* [web] fetch token users in a single db query per access mode
GitOrigin-RevId: fa5d9edcb761bd5d5e5ea07d137a5a86efdbdd5c
* Script for removing user enrollment to a subcription
* Add "release-managed-user" audit log event for an user id
GitOrigin-RevId: adf2dd97ac82977bcfa07d9a24d1f3c190d095a2
* [web] switch query for hard-deleting users and add index
Co-authored-by: Dr. Sasha Göbbels <sasha.goebbels@overleaf.com>
* [web] fix unit tests
---------
Co-authored-by: Dr. Sasha Göbbels <sasha.goebbels@overleaf.com>
GitOrigin-RevId: a7fd2a590351d2e0d60c0032ca78d457ef815e41
* Remove skipLoadingStyleSheet
* Remove unused bootstrap-5 assignment from the Account settings page since it's archived
* Remove bsVersionIcon
* Remove bsVersion, bootstrapVersion and isBootstrap5 from elements on the IDE page
* Remove BS3Dropdown from the context menu
* Cleanup Bootstrap 3 related comment and type
GitOrigin-RevId: a67244eb78943ee84cc5f89bae164c0361e8fc13
* Rename `checkSecondaryEmailConfirmationCode` to `checkAddSecondaryEmailConfirmationCode`
* Create function `sendCodeAndStoreInSession`
* Create function `sendExistingSecondaryEmailConfirmationCode`
* Create function `_checkConfirmationCode`
* Create function `checkExistingEmailConfirmationCode`
* Rename `resendSecondaryEmailConfirmationCode` to `resendAddSecondaryEmailConfirmationCode`
* Create function `_resendConfirmationCode`
* Create function `resendExistingSecondaryEmailConfirmationCode`
* Add `ResendConfirmationCodeModal`
* Remove `ResendConfirmationEmailButton`
* `bin/run web npm run extract-translations`
* Update frontend test
* Fix: don't throw on render when send-confirmation-code fails!
* Update phrasing in the UI
Per https://docs.google.com/document/d/1PE1vlZWQN--PjmXpyHR9rV2YPd7OIPIsUbnZaHj0cDI/edit?usp=sharing
* Add unit test
* Don't share the "send-confirmation" and "resend-confirmation" rate-limits
* Update frontend test after copy change
* Rename `checkAddSecondaryEmailConfirmationCode` to `checkNewSecondaryEmailConfirmationCode` and `resendAddSecondaryEmailConfirmationCode` to `resendNewSecondaryEmailConfirmationCode`
* Rename `cb` to `beforeConfirmEmail`
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
* Return `422` on missing session data
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
* Add `userId` to log
* Replace `isSecondary` param by `welcomeUser`
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
* Rename `resend-confirm-email-code`'s `existingEmail` to `email`
* Remove "secondary" from rate-limiters
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
* Remove unnecessary `userId` check behind `AuthenticationController.requireLogin()`
* Only open the modal if the code was sent successfully
---------
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: df892064641d9f722785699777383b2d863124e1
* Create script: remove_unconfirmed_emails.mjs
* Update script remove_unconfirmed_emails.mjs after pairing
Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>
* Add user counts. Add timing
* Revert previous changes: just remove the fully unconfirmed emails
* Add tests on scripts/remove_unconfirmed_emails.mjs
* Update audit log so `removedEmail` is a string and doesn't break the admin-panel audit logs list
* Update remove_unconfirmed_emails to have a `--generate` and a `--consume` mode
* Update tests on remove_unconfirmed_emails
* Add tests checking that `--consume` doesn't delete any email
* Update script so `--consume` checks that emails shouldn't be deleted again!
* Update CSV path to `/tmp/...`
* Add test cases: deleted users, deleted email, comma in email
---------
Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>
GitOrigin-RevId: 8c60b56bcdfa33bc6143d66c32a5f430fb76f6d7
* [misc] fix logger.error(err) calls
The signature is "logger.error({ err }, 'MESSAGE')".
* [project-history] remove duplicate logger.err calls in health check
The call-site is already logging any errors. Also, the logger.err call
signature was not quite right.
* [web] log userId when removeDropbox/removeGithub hook fails
* [misc] fix logger.warn(err) calls
The signature is "logger.warn({ err }, 'MESSAGE')".
* [misc] fix logger.error(OError.tag(err)) calls
* [web] make eslint happy
GitOrigin-RevId: 7f528113a3f7e9f6293b7d2d45adc079380325bb
* Promisify clear_sessions_set_must_reconfirm.mjs
* Add test on PasswordResetTests.mjs
* Add `must-reset-password-unset` audit log
* Add `must-reset-password-set` audit log
* Add test ClearSessionsSetMustReconfirmTests.mjs
* Fixup bad copy-paste in test: `must-reset-password-set` -> `must-reset-password-unset`
* Check `must_reconfirm` before calling `removeReconfirmFlag`
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
* Fix unit test
* Use `promiseMapWithLimit`
* Add `{ script: true }` to AuditLog. Also use `undefined` instead of `null` for consistency
---------
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 522026c82196d263c196503d899b8c57b05b31dd