Class: User

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/user.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all_super_admin_and_adminsObject



79
80
81
# File 'app/models/user.rb', line 79

def self.all_super_admin_and_admins
  self.where(:role => ["super_admin" , "admin"]).all
end

.all_super_admin_and_admins_editorsObject



83
84
85
# File 'app/models/user.rb', line 83

def self.all_super_admin_and_admins_editors
  self.where(:role => ["super_admin" , "admin", 'editor']).all
end

.find_user(id, current_user) ⇒ Object

Find user based on current user role



103
104
105
106
107
108
109
110
111
112
# File 'app/models/user.rb', line 103

def self.find_user(id, current_user)
  user = User.where(:id => id)
  if current_user.super_admin?
  elsif current_user.admin?
    user = user.where("role != ?" , "super_admin")
  else
    user = user.where(:id => current_user.id)
  end
  user.first
end

.search_users(query, current_user, get_order) ⇒ Object

Search users based on current user role



88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'app/models/user.rb', line 88

def self.search_users(query, current_user, get_order)
  users = User.order(get_order)
  unless query.blank?
    users = users.where("first_name LIKE :query OR last_name LIKE :query OR email LIKE :query OR bio LIKE :query ", :query => "%#{query}%")
  end
  if current_user.super_admin?
  elsif current_user.admin?
    users = users.where("role != ?" , "super_admin")
  else
    users = users.where("id = ?" , current_user.id)
  end
  users
end

.user_rolesObject



57
58
59
# File 'app/models/user.rb', line 57

def self.user_roles
  @roles ||= (["super_admin" , "admin", 'editor' , "contributor"] << (Rails.configuration.user_roles) ).flatten
end

Instance Method Details

#_authorize_blog?(object) ⇒ Boolean

Returns:

  • (Boolean)


139
140
141
142
143
144
145
146
# File 'app/models/user.rb', line 139

def _authorize_blog?(object)
  auth = self.authorizations.where(:authorizable_type => object.class.name, :authorizable_id => object.id).first
  unless auth.blank?
    auth.allow == true
  else
    false
  end
end

#_authorize_class?(object) ⇒ Boolean

Returns:

  • (Boolean)


157
158
159
160
161
162
163
164
# File 'app/models/user.rb', line 157

def _authorize_class?(object)
  auth = self.authorizations.where(:authorizable_type => object.class.name).first
  unless auth.blank?
    auth.allow == true
  else
    true
  end
end

#_authorize_class_name?(object) ⇒ Boolean

Returns:

  • (Boolean)


148
149
150
151
152
153
154
155
# File 'app/models/user.rb', line 148

def _authorize_class_name?(object)
  auth = self.authorizations.where(:authorizable_type => object).first
  unless auth.blank?
    auth.allow == true
  else
    false
  end
end

#_authorize_page?(object) ⇒ Boolean

Returns:

  • (Boolean)


130
131
132
133
134
135
136
137
# File 'app/models/user.rb', line 130

def _authorize_page?(object)
  auth = self.authorizations.where(:authorizable_type => object.class.name).first
  unless auth.blank?
    auth.authorizable_id == object.id || object.grand_child_of?(auth.authorizable)
  else
    false
  end
end

#abilityObject



37
38
39
# File 'app/models/user.rb', line 37

def ability
  @ability ||= Ability.new(self)
end

#admin?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'app/models/user.rb', line 45

def admin?
  self.role == "admin"
end

#authorized?(object) ⇒ Boolean

core logic for authorization system

Returns:

  • (Boolean)


115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'app/models/user.rb', line 115

def authorized?(object)
  auth = nil
  status = case object.class.name.to_s
  when "Gluttonberg::Page"
    _authorize_page?(object)
  when "Gluttonberg::Blog::Weblog"
    _authorize_blog?(object)
  when "String"
    _authorize_class_name?(object)
  else
    _authorize_class?(object)
  end
  status
end

#can_view_page(object) ⇒ Object



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'app/models/user.rb', line 166

def can_view_page(object)
  if self.contributor?
    if object.class.name == "Gluttonberg::Page"
      auth = self.authorizations.where(:authorizable_type => object.class.name).first
      unless auth.blank? || auth.authorizable.blank?
        object.id == auth.authorizable.id || object.grand_child_of?(auth.authorizable) || object.grand_parent_of?(auth.authorizable)
      else
        false
      end
    else
      false
    end
  else
    true
  end
end

#contributor?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'app/models/user.rb', line 53

def contributor?
  self.role == "contributor"
end

#deliver_password_reset_instructions!Object



32
33
34
35
# File 'app/models/user.rb', line 32

def deliver_password_reset_instructions!
  reset_perishable_token!
  Notifier.password_reset_instructions(self.id).deliver
end

#editor?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'app/models/user.rb', line 49

def editor?
  self.role == "editor"
end

#full_nameObject



28
29
30
# File 'app/models/user.rb', line 28

def full_name
  "#{self.first_name} #{self.last_name}".strip
end

#have_backend_access?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'app/models/user.rb', line 75

def have_backend_access?
  true
end

#super_admin?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'app/models/user.rb', line 41

def super_admin?
  self.role == "super_admin"
end

#user_valid_roles(user) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/models/user.rb', line 61

def user_valid_roles(user)
  if user.id == self.id
    []
  else
    roles = (["super_admin" , "admin", 'editor' , "contributor"] << (Rails.configuration.user_roles) ).flatten
    roles.delete("super_admin") unless self.super_admin?
    if !self.super_admin? && !self.admin?
      [self.role]
    else
      roles
    end
  end
end