Sha256: 0125abe1a593956ea6829f773e82a43cd58b93a310f56e917e289c5533d2fb98

Contents?: true

Size: 1.47 KB

Versions: 13

Compression:

Stored size: 1.47 KB

Contents

module Iqvoc
  class Ability
    include CanCan::Ability

    @@if_published = lambda { |o| o.published? }

    def initialize(user = nil)

      can :read, ::Collection::Base

      can :read, [::Concept::Base, ::Label::Base], &@@if_published

      if user # Every logged in user ...
        can :use, :dashboard

        if user.owns_role?(:editor) || user.owns_role?(:publisher) || user.owns_role?(:administrator) # Editors and above ...
          can :manage, ::Collection::Base

          can :read, [::Concept::Base, ::Label::Base]
          can :create, [::Concept::Base, ::Label::Base]
          can [:update, :destroy, :unlock], [::Concept::Base, ::Label::Base], :locked_by => user.id, :published_at => nil
          can :lock, [::Concept::Base, ::Label::Base], :locked_by => nil, :published_at => nil
          can [:check_consistency, :send_to_review], [::Concept::Base, ::Label::Base], :published_at => nil
          can :branch, [::Concept::Base, ::Label::Base], &@@if_published
        end

        if user.owns_role?(:publisher) || user.owns_role?(:administrator) # Publishers and above ...
          can :merge, [::Concept::Base, ::Label::Base], :published_at => nil
        end

        if user.owns_role?(:administrator) # Admins ...
          can [:update, :destroy, :unlock], [::Concept::Base, ::Label::Base], :published_at => nil # Mustn't be locked by myself

          can :manage, User

          can :full_export, ::Concept::Base
        end
      
      end

    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
iqvoc-3.2.11 lib/iqvoc/ability.rb
iqvoc-3.2.10 lib/iqvoc/ability.rb
iqvoc-3.2.9 lib/iqvoc/ability.rb
iqvoc-3.2.8 lib/iqvoc/ability.rb
iqvoc-3.2.7 lib/iqvoc/ability.rb
iqvoc-3.3.3 lib/iqvoc/ability.rb
iqvoc-3.3.2 lib/iqvoc/ability.rb
iqvoc-3.3.1 lib/iqvoc/ability.rb
iqvoc-3.3.0 lib/iqvoc/ability.rb
iqvoc-3.2.6 lib/iqvoc/ability.rb
iqvoc-3.2.5 lib/iqvoc/ability.rb
iqvoc-3.2.4 lib/iqvoc/ability.rb
iqvoc-3.2.3 lib/iqvoc/ability.rb