Module: RulesEngine::ControllerUsers

Defined in:
lib/rules_engine/controller_users.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

USER_ACCESS_LEVEL =

Requires the following paths root_path

[
  ["Administrator",       User::ACCESS_LEVEL_ADMIN],
  ["Account Disabled",    User::ACCESS_LEVEL_DISABLED]
]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

Inclusion hook to make #current_user #logged_in? and #logged_in_as_admin? available as ActionView helper methods.



13
14
15
16
17
18
19
20
# File 'lib/rules_engine/controller_users.rb', line 13

def self.included(base)
  base.send :helper_method, :current_user, :logged_in?, :logged_in_as_admin?, :logged_in_disabled?, :user_access_level, :user_access_levels
  base.send :before_filter, :set_timezone
  
  base.class_eval do
    extend ClassMethods
  end  
end

Instance Method Details

#admin_access_requiredObject



51
52
53
54
55
56
57
58
# File 'lib/rules_engine/controller_users.rb', line 51

def admin_access_required
  
  return unless logged_in?
  unless current_user.access_level ==  User::ACCESS_LEVEL_ADMIN
    flash[:error]="This page requires administrator access"
    user_access_denied
  end
end

#current_userObject

Accesses the current user from the session. Future calls avoid the database because nil is not equal to false.



24
25
26
27
28
# File 'lib/rules_engine/controller_users.rb', line 24

def current_user
  return nil if  @current_user == false
  @current_user || ( ||  || )
  @current_user || nil  
end

#logged_in?Boolean

Returns true or false if the user is logged in. Preloads @current_user with the user model if they’re logged in.

Returns:

  • (Boolean)


32
33
34
# File 'lib/rules_engine/controller_users.rb', line 32

def logged_in?
  !!current_user
end

#logged_in_as_admin?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/rules_engine/controller_users.rb', line 36

def logged_in_as_admin?
  logged_in? && current_user.access_level == User::ACCESS_LEVEL_ADMIN
end

#logged_in_disabled?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/rules_engine/controller_users.rb', line 40

def logged_in_disabled?
  logged_in? && current_user.access_level == User::ACCESS_LEVEL_DISABLED
end

#login_requiredObject



44
45
46
47
48
49
# File 'lib/rules_engine/controller_users.rb', line 44

def 
  unless logged_in?
    flash[:error]="This page requires you to login"
    access_denied
  end
end

#set_timezoneObject



69
70
71
# File 'lib/rules_engine/controller_users.rb', line 69

def set_timezone
  Time.zone = logged_in? ? current_user.time_zone : "Eastern Time (US & Canada)"
end

#user_access_level(user) ⇒ Object



60
61
62
63
# File 'lib/rules_engine/controller_users.rb', line 60

def user_access_level(user)
  match = USER_ACCESS_LEVEL.find {|value| value[1] == user.access_level}
  match.nil? ? "unknown" : match[0]      
end

#user_access_levelsObject



65
66
67
# File 'lib/rules_engine/controller_users.rb', line 65

def user_access_levels
  USER_ACCESS_LEVEL.sort {|a, b| a[1] <=> b[1]}
end