summaryrefslogtreecommitdiff
path: root/lib/solidus_subscriptions/ability.rb
blob: 55b634414d6768265cb63f0a4f4dd5daeb39e27e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# frozen_string_literal: true

module SolidusSubscriptions
  class Ability
    include CanCan::Ability

    def initialize(user)
      if user.has_spree_role?('admin')
        can(:manage, LineItem)
        can(:manage, Subscription)
      else
        can([:index, :show, :create, :update, :destroy, :skip, :cancel], Subscription, user_id: user.id)
        can([:index, :show, :create, :update, :destroy], LineItem) do |line_item, order|
          line_item.order.user == user || line_item.order == order
        end
      end
    end
  end
end