hedgeagent/1.12.0 #1

Open
sa6anw wants to merge 201 commits from hedgeagent/1.12.0 into hedgeagent/1.10.5
3 changed files with 24 additions and 12 deletions
Showing only changes of commit 074f7251e9 - Show all commits

View File

@@ -1,14 +1,19 @@
'use strict' 'use strict'
import Scrypt from 'scrypt-kdf'
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
// external modules // external modules
const Sequelize = require('sequelize') const Sequelize = require('sequelize')
const scrypt = require('scrypt-kdf')
const filterXSS = require('xss') const filterXSS = require('xss')
// core // core
const logger = require('../logger') const logger = require('../logger')
const { generateAvatarURL } = require('../letter-avatars') const { generateAvatarURL } = require('../letter-avatars')
module.exports = function (sequelize, DataTypes) { function UserModel (sequelize, DataTypes) {
const User = sequelize.define('User', { const User = sequelize.define('User', {
id: { id: {
type: DataTypes.UUID, type: DataTypes.UUID,
@@ -46,8 +51,13 @@ module.exports = function (sequelize, DataTypes) {
} }
}) })
User.prototype.verifyPassword = function (attempt) { User.prototype.verifyPassword = async function (attempt) {
return scrypt.verify(Buffer.from(this.password, 'hex'), 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) { 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: // suggested way to hash passwords to be able to do this asynchronously:
// @see https://github.com/sequelize/sequelize/issues/1821#issuecomment-44265819 // @see https://github.com/sequelize/sequelize/issues/1821#issuecomment-44265819
@@ -159,7 +169,7 @@ module.exports = function (sequelize, DataTypes) {
return Promise.resolve() 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')) user.setDataValue('password', keyBuf.toString('hex'))
}) })
} }
@@ -169,3 +179,5 @@ module.exports = function (sequelize, DataTypes) {
return User return User
} }
export default UserModel

View File

@@ -95,7 +95,7 @@
"readline-sync": "1.4.10", "readline-sync": "1.4.10",
"rimraf": "6.1.3", "rimraf": "6.1.3",
"sanitize-filename": "1.6.4", "sanitize-filename": "1.6.4",
"scrypt-kdf": "4.0.0", "scrypt-kdf": "3.0.0",
"sequelize": "5.22.5", "sequelize": "5.22.5",
"socket.io": "4.8.3", "socket.io": "4.8.3",
"sqlite3": "5.1.7", "sqlite3": "5.1.7",

View File

@@ -1596,7 +1596,7 @@ __metadata:
reveal.js: "npm:3.9.2" reveal.js: "npm:3.9.2"
rimraf: "npm:6.1.3" rimraf: "npm:6.1.3"
sanitize-filename: "npm:1.6.4" sanitize-filename: "npm:1.6.4"
scrypt-kdf: "npm:4.0.0" scrypt-kdf: "npm:3.0.0"
select2: "npm:3.5.2-browserify" select2: "npm:3.5.2-browserify"
sequelize: "npm:5.22.5" sequelize: "npm:5.22.5"
socket.io: "npm:4.8.3" socket.io: "npm:4.8.3"
@@ -14772,10 +14772,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"scrypt-kdf@npm:4.0.0": "scrypt-kdf@npm:3.0.0":
version: 4.0.0 version: 3.0.0
resolution: "scrypt-kdf@npm:4.0.0" resolution: "scrypt-kdf@npm:3.0.0"
checksum: 10/2e88019932fe1d092d02d7c6764817f835b4d6de8b67a24587e9ecfce4686ca2b4d2b8d75224d904b05a784ba87134062b035955f29e0e8e97ffb0284551df36 checksum: 10/8442bb32304fce74a4a6f002931510ed4505ec8bae0c1215c107df22cae809166fcd599250bee7d1d1a757d27fa6958f9b0ed1262bd8e31d2dd4d72636879a74
languageName: node languageName: node
linkType: hard linkType: hard