Class: RubyCms::Permission
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- RubyCms::Permission
- Defined in:
- app/models/ruby_cms/permission.rb
Constant Summary collapse
- DEFAULT_KEYS =
RubyCms::DEFAULT_PERMISSION_KEYS
Class Method Summary collapse
- .all_keys ⇒ Object
- .apply_template!(user, template_name) ⇒ Object
- .ensure_defaults! ⇒ Object
- .matching_templates(user) ⇒ Object
- .register_keys(*keys) ⇒ Object
- .register_template(name, label:, keys:, description: nil) ⇒ Object
- .templates ⇒ Object
Class Method Details
.all_keys ⇒ Object
21 22 23 |
# File 'app/models/ruby_cms/permission.rb', line 21 def all_keys (DEFAULT_KEYS + RubyCms..map(&:to_s)).uniq.freeze end |
.apply_template!(user, template_name) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'app/models/ruby_cms/permission.rb', line 37 def apply_template!(user, template_name) tmpl = templates[template_name.to_sym] raise ArgumentError, "Unknown template: #{template_name}" unless tmpl ensure_defaults! perms = where(key: tmpl[:keys]) perms.each do |perm| RubyCms::UserPermission.find_or_create_by!(user: user, permission: perm) end end |
.ensure_defaults! ⇒ Object
15 16 17 18 19 |
# File 'app/models/ruby_cms/permission.rb', line 15 def ensure_defaults! all_keys.each do |k| find_or_create_by!(key: k) {|p| p.name = k.titleize } end end |
.matching_templates(user) ⇒ Object
48 49 50 51 52 53 54 |
# File 'app/models/ruby_cms/permission.rb', line 48 def matching_templates(user) user_keys = RubyCms::UserPermission.where(user:) .joins(:permission) .pluck("permissions.key") templates.select {|_, tmpl| (tmpl[:keys] - user_keys).empty? } .keys end |
.register_keys(*keys) ⇒ Object
29 30 31 |
# File 'app/models/ruby_cms/permission.rb', line 29 def register_keys(*keys) RubyCms.(*keys) end |
.register_template(name, label:, keys:, description: nil) ⇒ Object
33 34 35 |
# File 'app/models/ruby_cms/permission.rb', line 33 def register_template(name, label:, keys:, description: nil) RubyCms.(name, label:, keys:, description:) end |
.templates ⇒ Object
25 26 27 |
# File 'app/models/ruby_cms/permission.rb', line 25 def templates RubyCms. end |