Class: Spree::ProductReviewsAbility

Inherits:
Object
  • Object
show all
Includes:
CanCan::Ability
Defined in:
app/models/spree/product_reviews_ability.rb

Instance Method Summary collapse

Constructor Details

#initialize(user) ⇒ ProductReviewsAbility

Returns a new instance of ProductReviewsAbility.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/spree/product_reviews_ability.rb', line 5

def initialize(user)
  user ||= Spree.user_class.new
  Rails.logger.info "[ProductReviewsAbility] user=#{user.inspect}, roles=#{user.spree_roles.map(&:name).inspect}"
  if user.has_spree_role? "admin"
    can :manage, Spree::ProductReview
  elsif user.persisted?
    can :create, Spree::ProductReview
    can :update, Spree::ProductReview do |review|
      review.user_id == user.id
    end
    can :destroy, Spree::ProductReview do |review|
      review.user_id == user.id
    end
  else
    can :read, Spree::ProductReview, approved: true
    cannot :create, Spree::ProductReview
    cannot %i[update destroy], Spree::ProductReview
  end
end