Sha256: 894ac0b155e06c8cdf345a327572bf4a67439e33153486769a8396f617d82f64
Contents?: true
Size: 1.2 KB
Versions: 4
Compression:
Stored size: 1.2 KB
Contents
class Avo::ResourceComponent < ViewComponent::Base def can_create? @resource.authorization.authorize_action(:create, raise_exception: false) end def can_delete? @resource.authorization.authorize_action(:destroy, raise_exception: false) end def authorize_association_for(policy_method) association_policy = true if @reflection.present? reflection_resource = ::Avo::App.get_resource_by_model_name(@reflection.active_record.name) if reflection_resource.present? method_name = "#{policy_method}_#{@reflection.name.to_s.underscore}?".to_sym defined_policy_methods = reflection_resource.authorization.defined_methods(reflection_resource.model_class, raise_exception: false) if defined_policy_methods.present? && defined_policy_methods.include?(method_name) association_policy = reflection_resource.authorization.authorize_action(method_name, raise_exception: false) end end end association_policy end private def simple_relation? @reflection.is_a? ::ActiveRecord::Reflection::HasManyReflection end def relation_resource ::Avo::App.get_resource_by_model_name params[:via_resource_class].safe_constantize end end
Version data entries
4 entries across 4 versions & 1 rubygems