From 7190bc48518f7814895b8d2f1811db27e9a0d4c9 Mon Sep 17 00:00:00 2001 From: Bill Kirtley Date: Fri, 1 Mar 2019 18:25:28 -0500 Subject: [PATCH] Support password expiration in months, not just days When we configured expire_password_after = 3.months and tested on March 1, we got the wrong answer. This makes it happier. --- lib/devise_security_extension/models/password_expirable.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/devise_security_extension/models/password_expirable.rb b/lib/devise_security_extension/models/password_expirable.rb index 95184ded..fcba4ebc 100644 --- a/lib/devise_security_extension/models/password_expirable.rb +++ b/lib/devise_security_extension/models/password_expirable.rb @@ -13,7 +13,9 @@ module PasswordExpirable # is an password change required? def need_change_password? - if self.expire_password_after.is_a? Fixnum or self.expire_password_after.is_a? Float + if defined?(ActiveSupport::Duration) && self.expire_password_after.is_a?(ActiveSupport::Duration) + self.password_changed_at.nil? or self.password_changed_at < self.expire_password_after.ago + elsif self.expire_password_after.is_a? Fixnum or self.expire_password_after.is_a? Float self.password_changed_at.nil? or self.password_changed_at < self.expire_password_after.seconds.ago else false @@ -39,7 +41,7 @@ def need_change_password self.password_changed_at end - + def expire_password_after self.class.expire_password_after end