overleaf的用户信息,保存在mongo数据库的users集合中。

用户密码则存在hashedPassword字段中
 从开源的代码services\web\app\src\Features\Authentication\AuthenticationManager.js第303行可以找到密码加密逻辑。
 从开源的代码services\web\app\src\Features\Authentication\AuthenticationManager.js第303行可以找到密码加密逻辑。
本地可以通过下面的代码生成overleaf用户密码信息。
npm install bcryptjsconst bcrypt = require('bcryptjs'); // 使用 bcryptjs 模块
const BCRYPT_ROUNDS = 12; // 定义哈希轮数
async function hashPassword(password) {
    try {
        // 生成盐
        const salt = await bcrypt.genSalt(BCRYPT_ROUNDS,'a');
        // 使用盐对密码进行哈希
        const hashedPassword = await bcrypt.hash(password, salt);
        return hashedPassword;
    } catch (error) {
        console.error('Error hashing password:', error);
        throw error;
    }
}
async function exampleUsage() {
	// 定义明文密码
    const plainPassword = '111111';
    console.log('明文密码:', plainPassword);
    // 哈希密码
    const hashedPassword = await hashPassword(plainPassword);
    console.log('Hashed密码:', hashedPassword);
}
// 运行示例
exampleUsage();
通过该功能可实现其它系统与overleaf系统用户信息同步。
只需将用户信息写入mongo的users集合中即可。
补充,还有生成referal_id和_id的代码:
/*生成referal_id*/
const crypto = require('crypto')
function _randomString(length, alphabet) {
		const result = crypto
			.randomBytes(length)
			.toJSON()
			.data.map(b => alphabet[b % alphabet.length])
			.join('')
		return result
}
function generateReferralId() {
	return _randomString(16, TOKEN_ALPHANUMERICS)
}
const TOKEN_LOWERCASE_ALPHA = 'bcdfghjkmnpqrstvwxyz'
const TOKEN_NUMERICS = '123456789'
const TOKEN_ALPHANUMERICS = TOKEN_LOWERCASE_ALPHA + TOKEN_LOWERCASE_ALPHA.toUpperCase() + TOKEN_NUMERICS
const newReferralId = generateReferralId()
console.log(newReferralId)/*生成_id*/
const { ObjectId } = require('mongodb')
user_id = new ObjectId().toString()
console.log(user_id)


















