Sha256: 5c585e26ff8ce7556708274fc0167c4e7a7db05f69baa8daa4dff15baa83bc91

Contents?: true

Size: 1.76 KB

Versions: 8

Compression:

Stored size: 1.76 KB

Contents

module PaidUp
  module Ability
    include CanCan::Ability

    def initialize_paid_up(user)
      features = PaidUp::Feature.all
      for feature in features
        case feature.setting_type
          when 'table_rows'
            can [:index, :read], feature.feature_model
            if user.table_rows_allowed(feature.slug) > 0 || user.table_rows_unlimited?(feature.slug)
              can :manage, feature.feature_model, :user => user
              can :own, feature.feature_model
              unless user.table_rows_remaining(feature.slug) > 0
                cannot :create, feature.feature_model
              end
            else
              cannot :delete, feature.feature_model
              cannot :update, feature.feature_model
              cannot :own, feature.feature_model
              cannot :create, feature.feature_model
            end
          when 'rolify_rows'
            can [:index, :read], feature.feature_model
            if user.rolify_rows_allowed(feature.slug) > 0 || user.rolify_rows_unlimited?(feature.slug)
              can :manage, feature.feature_model, id: Group.with_role(:owner, user).pluck(:id)
              can :own, feature.feature_model
              unless user.rolify_rows_remaining(feature.slug) > 0
                cannot :create, feature.feature_model
              end
            else
              cannot :delete, feature.feature_model
              cannot :update, feature.feature_model
              cannot :own, feature.feature_model
              cannot :create, feature.feature_model
            end
          when 'boolean'
            if user.plan.feature_setting feature.slug
              can :use, feature.slug.to_sym
            end
          else
            raise(:unknown_feature_type.l)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
paid_up-0.6.5 app/models/paid_up/ability.rb
paid_up-0.6.4 app/models/paid_up/ability.rb
paid_up-0.6.3 app/models/paid_up/ability.rb
paid_up-0.6.2 app/models/paid_up/ability.rb
paid_up-0.6.1 app/models/paid_up/ability.rb
paid_up-0.6.0 app/models/paid_up/ability.rb
paid_up-0.5.3 app/models/paid_up/ability.rb
paid_up-0.5.2 app/models/paid_up/ability.rb