Merge pull request #3032 from evazion/fix-expired-bans

Fix exception when user with expired ban logs in.
This commit is contained in:
Albert Yi
2017-05-08 11:33:44 -07:00
committed by GitHub
4 changed files with 23 additions and 7 deletions

View File

@@ -20,7 +20,7 @@ class SessionLoader
end
if CurrentUser.user
CurrentUser.user.unban! if ban_expired?
CurrentUser.user.unban! if CurrentUser.user.ban_expired?
else
CurrentUser.user = AnonymousUser.new
end
@@ -86,10 +86,6 @@ private
session[:user_id] = CurrentUser.user.id
end
def ban_expired?
CurrentUser.user.is_banned? && CurrentUser.user.recent_ban && CurrentUser.user.recent_ban.expired?
end
def cookie_password_hash_valid?
cookies[:password_hash] && cookies.signed[:user_name] && User.authenticate_cookie_hash(cookies.signed[:user_name], cookies[:password_hash])
end

View File

@@ -80,6 +80,7 @@ class User < ActiveRecord::Base
has_many :post_votes
has_many :bans, lambda {order("bans.id desc")}
has_one :recent_ban, lambda {order("bans.id desc")}, :class_name => "Ban"
has_one :api_key
has_one :dmail_filter
has_one :super_voter
@@ -109,7 +110,10 @@ class User < ActiveRecord::Base
def unban!
self.is_banned = false
save
ban.destroy
end
def ban_expired?
is_banned? && recent_ban.try(:expired?)
end
end