Class: User
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- User
- Defined in:
- app/models/user.rb
Class Method Summary collapse
- .all_super_admin_and_admins ⇒ Object
- .all_super_admin_and_admins_editors ⇒ Object
-
.find_user(id, current_user) ⇒ Object
Find user based on current user role.
-
.search_users(query, current_user, get_order) ⇒ Object
Search users based on current user role.
- .user_roles ⇒ Object
Instance Method Summary collapse
- #_authorize_blog?(object) ⇒ Boolean
- #_authorize_class?(object) ⇒ Boolean
- #_authorize_class_name?(object) ⇒ Boolean
- #_authorize_page?(object) ⇒ Boolean
- #ability ⇒ Object
- #admin? ⇒ Boolean
-
#authorized?(object) ⇒ Boolean
core logic for authorization system.
- #can_view_page(object) ⇒ Object
- #contributor? ⇒ Boolean
- #deliver_password_reset_instructions! ⇒ Object
- #editor? ⇒ Boolean
- #full_name ⇒ Object
- #have_backend_access? ⇒ Boolean
- #super_admin? ⇒ Boolean
- #user_valid_roles(user) ⇒ Object
Class Method Details
.all_super_admin_and_admins ⇒ Object
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_editors ⇒ Object
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_roles ⇒ Object
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
139 140 141 142 143 144 145 146 |
# File 'app/models/user.rb', line 139 def (object) auth = self..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
157 158 159 160 161 162 163 164 |
# File 'app/models/user.rb', line 157 def (object) auth = self..where(:authorizable_type => object.class.name).first unless auth.blank? auth.allow == true else true end end |
#_authorize_class_name?(object) ⇒ Boolean
148 149 150 151 152 153 154 155 |
# File 'app/models/user.rb', line 148 def (object) auth = self..where(:authorizable_type => object).first unless auth.blank? auth.allow == true else false end end |
#_authorize_page?(object) ⇒ Boolean
130 131 132 133 134 135 136 137 |
# File 'app/models/user.rb', line 130 def (object) auth = self..where(:authorizable_type => object.class.name).first unless auth.blank? auth. == object.id || object.grand_child_of?(auth.) else false end end |
#ability ⇒ Object
37 38 39 |
# File 'app/models/user.rb', line 37 def ability @ability ||= Ability.new(self) end |
#admin? ⇒ 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
115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'app/models/user.rb', line 115 def (object) auth = nil status = case object.class.name.to_s when "Gluttonberg::Page" (object) when "Gluttonberg::Blog::Weblog" (object) when "String" (object) else (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..where(:authorizable_type => object.class.name).first unless auth.blank? || auth..blank? object.id == auth..id || object.grand_child_of?(auth.) || object.grand_parent_of?(auth.) else false end else false end else true end end |
#contributor? ⇒ 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
49 50 51 |
# File 'app/models/user.rb', line 49 def editor? self.role == "editor" end |
#full_name ⇒ Object
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
75 76 77 |
# File 'app/models/user.rb', line 75 def have_backend_access? true end |
#super_admin? ⇒ 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 |