discourse/app/services/user_password_expirer.rb
Alan Guo Xiang Tan 82383ea776
DEV: Avoid unique validation in UserPasswordExpirer.expire_user_password (#27343)
This commit updates the `UserPasswordExpirer.expire_user_password`
method to update `UserPassword#password_expired_at` when an existing
`UserPassword` record exists with the same `password_salt`,
`password_hash` and `password_algorithm`. This is to prevent the unique
validation error on `UserPassword#user_id` and
`UserPassword#password_hash` from being raised when the method is called
twice for a user that has not changed its password.
2024-06-05 15:22:40 +08:00

16 lines
367 B
Ruby

# frozen_string_literal: true
class UserPasswordExpirer
def self.expire_user_password(user)
UserPassword
.where(
user:,
password_hash: user.password_hash,
password_salt: user.salt,
password_algorithm: user.password_algorithm,
)
.first_or_initialize
.update!(password_expired_at: Time.zone.now)
end
end