مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2026-01-18 13:59:47 +00:00
initial commit from appmail
هذا الالتزام موجود في:
52
app/models/user/authentication.rb
Normal file
52
app/models/user/authentication.rb
Normal file
@@ -0,0 +1,52 @@
|
||||
class User
|
||||
|
||||
has_secure_password
|
||||
|
||||
validates :password, :length => {:minimum => 8, :allow_blank => true}
|
||||
|
||||
when_attribute :password_digest, :changes_to => :anything do
|
||||
before_save do
|
||||
self.password_reset_token = nil
|
||||
self.password_reset_token_valid_until = nil
|
||||
end
|
||||
end
|
||||
|
||||
def self.authenticate(email_address, password)
|
||||
user = where(:email_address => email_address).first
|
||||
raise Postal::Errors::AuthenticationError.new('InvalidEmailAddress') if user.nil?
|
||||
raise Postal::Errors::AuthenticationError.new('InvalidPassword') unless user.authenticate(password)
|
||||
user
|
||||
end
|
||||
|
||||
def authenticate_with_previous_password_first(unencrypted_password)
|
||||
if password_digest_changed?
|
||||
BCrypt::Password.new(password_digest_was).is_password?(unencrypted_password) && self
|
||||
else
|
||||
authenticate(unencrypted_password)
|
||||
end
|
||||
end
|
||||
|
||||
def begin_password_reset(return_to = nil)
|
||||
self.password_reset_token = Nifty::Utils::RandomString.generate(:length => 24)
|
||||
self.password_reset_token_valid_until = 1.day.from_now
|
||||
self.save!
|
||||
AppMailer.password_reset(self, return_to).deliver
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Postal::Errors::AuthenticationError < Postal::Error
|
||||
|
||||
attr_reader :error
|
||||
|
||||
def initialize(error)
|
||||
@error = error
|
||||
end
|
||||
|
||||
def to_s
|
||||
"Authentication Failed: #{@error}"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# -*- SkipSchemaAnnotations
|
||||
المرجع في مشكلة جديدة
حظر مستخدم