summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortkimia <tkimia@purdue.edu>2014-04-03 16:49:15 -0400
committertkimia <tkimia@purdue.edu>2014-04-03 16:49:15 -0400
commit25cfa69883a5c74b2a6e6a5021c53fd95202c234 (patch)
treef4356eab1caa58687997817079d304c32b792ec8
parent6cc7eb9e419c219d82d318ebb1bab8a853f73da5 (diff)
parentd6009eddd6f67a9414ff7d707ae82c053e6653ad (diff)
Merge branch 'master' of https://github.com/LukeShu/leaguer
-rw-r--r--app/helpers/sessions_helper.rb4
-rw-r--r--app/models/user.rb15
2 files changed, 17 insertions, 2 deletions
diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb
index 54e4b0d..89e5ef3 100644
--- a/app/helpers/sessions_helper.rb
+++ b/app/helpers/sessions_helper.rb
@@ -18,7 +18,7 @@ module SessionsHelper
def current_user
@token ||= Session.hash_token(cookies[:remember_token])
@session ||= Session.find_by(token: @token)
- @current_user ||= (@session.nil? ? nil : @session.user)
+ @current_user ||= (@session.nil? ? NilUser.new : @session.user)
end
# checks if someone is currently signed in
@@ -30,7 +30,7 @@ module SessionsHelper
if signed_in?
@session.destroy
end
- @current_user = nil
+ @current_user = NilUser.new
cookies.delete(:remember_token)
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 277d885..016c155 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -91,3 +91,18 @@ class User < ActiveRecord::Base
validates :password, length: { minimum: 6 }
end
+class NilUser
+ def nil?
+ return true
+ end
+ def can?(action)
+ return false
+ end
+ def method_missing(name, *args)
+ # Throw an error if User doesn't have this method
+ super unless User.new.respond_to?(name)
+ # User has this method -- return a blank value
+ # 'false' if the method ends with '?'; 'nil' otherwise.
+ name.ends_with?('?') ? false : nil
+ end
+end