Sha256: dcf9fd0c8055f5bc650a533b0a201316f6d698720ee582e6865057f65afe3f62

Contents?: true

Size: 1.13 KB

Versions: 11

Compression:

Stored size: 1.13 KB

Contents

module EnjuQuestion
  class Ability
    include CanCan::Ability
  
    def initialize(user, ip_address = nil)
      case user.try(:role).try(:name)
      when 'Administrator'
        can :manage, Answer
        can :manage, Question
      when 'Librarian'
        can :manage, Answer
        can :manage, Question
      when 'User'
        can [:index, :create], Answer
        can :show, Answer do |answer|
          if answer.user == user
            true
          elsif answer.question.shared
            true
          end
        end
        can [:update, :destroy, :delete], Answer do |answer|
          answer.user == user
        end
        can [:index, :create], Question
        can [:update, :destroy, :delete], Question do |question|
          question.user == user
        end
        can :show, Question do |question|
          question.user == user or question.shared
        end
      else
        can :index, Answer
        can :show, Answer do |answer|
          answer.question.shared
        end
        can :index, Question
        can :show, Question do |question|
          question.shared
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
enju_question-0.1.1 app/models/enju_question/ability.rb
enju_question-0.1.0 app/models/enju_question/ability.rb
enju_question-0.1.0.pre15 app/models/enju_question/ability.rb
enju_question-0.1.0.pre14 app/models/enju_question/ability.rb
enju_question-0.1.0.pre13 app/models/enju_question/ability.rb
enju_question-0.1.0.pre12 app/models/enju_question/ability.rb
enju_question-0.1.0.pre11 app/models/enju_question/ability.rb
enju_question-0.1.0.pre10 app/models/enju_question/ability.rb
enju_question-0.1.0.pre9 app/models/enju_question/ability.rb
enju_question-0.1.0.pre8 app/models/enju_question/ability.rb
enju_question-0.1.0.pre7 app/models/enju_question/ability.rb