fix(deps): update scrypt import to ESM

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
This commit is contained in:
Erik Michelson
2026-08-21 20:01:01 +02:00
parent 6ea80ef636
commit 074f7251e9
3 changed files with 24 additions and 12 deletions

View File

@@ -1,14 +1,19 @@
'use strict'
import Scrypt from 'scrypt-kdf'
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
// external modules
const Sequelize = require('sequelize')
const scrypt = require('scrypt-kdf')
const filterXSS = require('xss')
// core
const logger = require('../logger')
const { generateAvatarURL } = require('../letter-avatars')
module.exports = function (sequelize, DataTypes) {
function UserModel (sequelize, DataTypes) {
const User = sequelize.define('User', {
id: {
type: DataTypes.UUID,
@@ -46,8 +51,13 @@ module.exports = function (sequelize, DataTypes) {
}
})
User.prototype.verifyPassword = function (attempt) {
return scrypt.verify(Buffer.from(this.password, 'hex'), attempt)
User.prototype.verifyPassword = async function (attempt) {
try {
return (await Scrypt.verify(Buffer.from(this.password, 'hex'), attempt))
} catch (error) {
logger.error(`Error during login: ${error}`)
return false
}
}
User.associate = function (models) {
@@ -151,7 +161,7 @@ module.exports = function (sequelize, DataTypes) {
}
}
function updatePasswordHashHook (user, options) {
async function updatePasswordHashHook (user, options) {
// suggested way to hash passwords to be able to do this asynchronously:
// @see https://github.com/sequelize/sequelize/issues/1821#issuecomment-44265819
@@ -159,7 +169,7 @@ module.exports = function (sequelize, DataTypes) {
return Promise.resolve()
}
return scrypt.kdf(user.getDataValue('password'), { logN: 15 }).then(keyBuf => {
return Scrypt.kdf(user.getDataValue('password'), { logN: 15 }).then(keyBuf => {
user.setDataValue('password', keyBuf.toString('hex'))
})
}
@@ -169,3 +179,5 @@ module.exports = function (sequelize, DataTypes) {
return User
}
export default UserModel