Module: Vert::Authorization::ControllerMethods
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/vert/authorization/controller_methods.rb
Instance Method Summary collapse
- #allowed_fields_for(resource) ⇒ Object
- #authorize_with_context(record, query = nil, context = {}) ⇒ Object
- #can_see_field?(resource, field) ⇒ Boolean
- #current_user_permissions ⇒ Object
- #denied_fields_for(resource) ⇒ Object
- #has_permission?(permission_code, context = {}) ⇒ Boolean
- #policy_with_context(record, context = {}) ⇒ Object
Instance Method Details
#allowed_fields_for(resource) ⇒ Object
41 42 43 |
# File 'lib/vert/authorization/controller_methods.rb', line 41 def allowed_fields_for(resource) PermissionResolver.get_allowed_fields(current_user, "#{resource}.read", ) end |
#authorize_with_context(record, query = nil, context = {}) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/vert/authorization/controller_methods.rb', line 12 def (record, query = nil, context = {}) return record unless Vert.config. && defined?(Pundit) query ||= "#{action_name}?" policy_context = .merge(context) policy = policy_with_context(record, policy_context) unless policy.public_send(query) raise Pundit::NotAuthorizedError, query: query, record: record, policy: policy end record end |
#can_see_field?(resource, field) ⇒ Boolean
33 34 35 36 37 38 39 |
# File 'lib/vert/authorization/controller_methods.rb', line 33 def can_see_field?(resource, field) allowed = PermissionResolver.get_allowed_fields(current_user, "#{resource}.read", ) denied = PermissionResolver.get_denied_fields(current_user, "#{resource}.read", ) return false if denied.include?(field.to_s) return true if allowed.nil? allowed.include?(field.to_s) end |
#current_user_permissions ⇒ Object
49 50 51 |
# File 'lib/vert/authorization/controller_methods.rb', line 49 def PermissionResolver.(current_user, ) end |
#denied_fields_for(resource) ⇒ Object
45 46 47 |
# File 'lib/vert/authorization/controller_methods.rb', line 45 def denied_fields_for(resource) PermissionResolver.get_denied_fields(current_user, "#{resource}.read", ) end |
#has_permission?(permission_code, context = {}) ⇒ Boolean
28 29 30 31 |
# File 'lib/vert/authorization/controller_methods.rb', line 28 def (, context = {}) return false unless Vert.config. PermissionResolver.(current_user, , .merge(context)) end |
#policy_with_context(record, context = {}) ⇒ Object
23 24 25 26 |
# File 'lib/vert/authorization/controller_methods.rb', line 23 def policy_with_context(record, context = {}) policy_class = PolicyFinder.new(record).policy policy_class.new(current_user, record, context) end |