diff --git a/lib/PasswordReset.js b/lib/PasswordReset.js index 5f13aca..31bd32d 100644 --- a/lib/PasswordReset.js +++ b/lib/PasswordReset.js @@ -50,8 +50,42 @@ class PasswordReset { return [ nonce, token ]; } - static generatePasswordReset() { + static async generatePasswordReset(userId) { + const u = await new (require('./User'))(null, userId); + const conn = await new DatabaseConnectionPool(); + let sql = ` + delete from passwordReset + where userId = ?; + `; + + await conn.runQuery(sql, [ u.id ]); + + const [ nonce, token ] = await PasswordReset.hashToken(u); + + const d = new Date(); + d.setHours(d.getHours() + 1); + const expires = d.getTime() / 1000; + + sql = ` + insert into passwordReset + ( + userId, + token, + nonce, + expires + ) + values (?, ?, ?, FROM_UNIXTIME(?)); + `; + + await conn.runQuery(sql, [ + u.id, + token, + nonce, + expires + ]); + + return new PasswordReset(u.id); } }