[FIX] Password reset/change accepting current password as new password (#16331)
Co-authored-by: Diego Sampaio <chinello@gmail.com>pull/17715/head
parent
d46c864f5e
commit
d6a6332ced
@ -0,0 +1,29 @@ |
||||
import { Accounts } from 'meteor/accounts-base'; |
||||
|
||||
/** |
||||
* Check if a given password is the one user by given user or if the user doesn't have a password |
||||
* @param {object} user User object |
||||
* @param {object} pass Object with { plain: 'plain-test-password' } or { sha256: 'sha256password' } |
||||
*/ |
||||
export function compareUserPassword(user, pass) { |
||||
if (!user?.services?.password?.bcrypt?.trim()) { |
||||
return true; |
||||
} |
||||
|
||||
if (!pass || (!pass.plain && !pass.sha256)) { |
||||
return false; |
||||
} |
||||
|
||||
const password = pass.plain || { |
||||
digest: pass.sha256.toLowerCase(), |
||||
algorithm: 'sha-256', |
||||
}; |
||||
|
||||
const passCheck = Accounts._checkPassword(user, password); |
||||
|
||||
if (passCheck.error) { |
||||
return false; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
Loading…
Reference in new issue