| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import bcrypt from 'bcrypt'
- import { db } from './lib/mongodb.mjs'
- import { batchedUpdate } from '@overleaf/mongo-utils/batchedUpdate.js'
- import { promiseMapWithLimit } from '@overleaf/promise-utils'
- const tags = ['server-ce', 'server-pro']
- const HARDCODED_PASSWORD = 'password_here'
- const CONCURRENCY = parseInt(process.env.CONCURRENCY, 10) || 10
- const migrate = async () => {
- await batchedUpdate(
- db.users,
- { hashedPassword: { $type: 'string' } },
- async function (batch) {
- await promiseMapWithLimit(CONCURRENCY, batch, async user => {
- const match = await bcrypt.compare(
- HARDCODED_PASSWORD,
- user.hashedPassword
- )
- if (match) {
- await db.users.updateOne(
- { _id: user._id, hashedPassword: user.hashedPassword },
- { $unset: { hashedPassword: 1 } }
- )
- }
- })
- },
- { hashedPassword: 1 }
- )
- }
- const rollback = async () => {}
- export default {
- tags,
- migrate,
- rollback,
- }
|