From 750a966c30b9290b666940b533ad1639cb2fd168 Mon Sep 17 00:00:00 2001 From: Dave Gudge Date: Wed, 19 Feb 2014 12:54:51 +0000 Subject: [PATCH] Support for future suspensions. --- lib/devise_suspendable/model.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/devise_suspendable/model.rb b/lib/devise_suspendable/model.rb index a4d408a..254c44c 100644 --- a/lib/devise_suspendable/model.rb +++ b/lib/devise_suspendable/model.rb @@ -21,18 +21,22 @@ def self.included(base) end def suspended? - self.suspended_at? + self.suspended_at? && suspended_at < Time.zone.now end - def suspend!(reason = nil) + def suspension_pending? + self.suspended_at? && suspended_at > Time.zone.now + end + + def suspend!(reason = nil, suspend_at = nil) return if suspended? - self.suspended_at = Time.zone.now + self.suspended_at = suspend_at || Time.zone.now self.suspension_reason = reason self.save(:validate => false) end def unsuspend! - return if !suspended? + return unless suspended? || suspension_pending? self.suspended_at = nil self.suspension_reason = nil self.save(:validate => false) if self.changed? @@ -42,7 +46,7 @@ def unsuspend! def active_for_authentication? super && !suspended? end - + # Overwrites invalid_message from Devise::Models::Authenticatable to define # the correct reason for blocking the sign in. def inactive_message