Module: RubyCms::Permittable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/ruby_cms/permittable.rb
Instance Method Summary collapse
- #bootstrap? ⇒ Boolean
- #bootstrap_allowed?(permission_key) ⇒ Boolean
-
#can?(permission_key, record: nil) ⇒ Boolean
Check if the user has a permission.
-
#cms_permission_keys_cached ⇒ Object
Per-request cache of this user’s permission keys.
Instance Method Details
#bootstrap? ⇒ Boolean
19 20 21 |
# File 'app/models/ruby_cms/permittable.rb', line 19 def bootstrap? RubyCms::Permission.none? end |
#bootstrap_allowed?(permission_key) ⇒ Boolean
23 24 25 26 27 28 |
# File 'app/models/ruby_cms/permittable.rb', line 23 def bootstrap_allowed?() return false unless Rails.application.config.ruby_cms.bootstrap_admin_with_role return false unless respond_to?(:admin?) && admin? .to_s == "manage_admin" end |
#can?(permission_key, record: nil) ⇒ Boolean
Check if the user has a permission. record: reserved for future record-scoped permissions. Default-deny: unknown permission key = forbidden. Permission lookups are cached per-request.
9 10 11 12 13 14 15 16 17 |
# File 'app/models/ruby_cms/permittable.rb', line 9 def can?(, record: nil) return bootstrap_allowed?() if bootstrap? k = .to_s return false unless RubyCms::Permission.exists?(key: k) .include?(k) || record&.can_edit?(self) end |
#cms_permission_keys_cached ⇒ Object
Per-request cache of this user’s permission keys. Never rely on client-side checks.
31 32 33 34 35 |
# File 'app/models/ruby_cms/permittable.rb', line 31 def ||= RubyCms::UserPermission.where(user: self) .joins(:permission).pluck("permissions.key") end |