Sha256: 7d6f3d134cc5a95d4d9f819ffb55c6d8eea998a36dddc4c21a0946a6c0000a49

Contents?: true

Size: 1.96 KB

Versions: 2

Compression:

Stored size: 1.96 KB

Contents

module Iqvoc
  class Ability
    include CanCan::Ability

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

    def initialize(user = nil)
      can :read, Iqvoc::Concept.root_class.instance
      can :read, ::Collection::Base
      can :read, [::Concept::Base, ::Collection::Base, ::Label::Base], &@@if_published

      # static pages
      can :read, :help

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

        if user.owns_role?(:editor) || user.owns_role?(:publisher) || user.owns_role?(:administrator) # Editors and above ...
          can :read, [::Concept::Base, ::Collection::Base, ::Label::Base]
          can :create, [::Concept::Base, ::Collection::Base, ::Label::Base]
          can [:update, :destroy, :unlock], [::Concept::Base, ::Collection::Base, ::Label::Base], locked_by: user.id, published_at: nil
          can :lock, [::Concept::Base, ::Collection::Base, ::Label::Base], locked_by: nil, published_at: nil
          can [:check_consistency, :send_to_review], [::Concept::Base, ::Collection::Base, ::Label::Base], published_at: nil
          can :branch, [::Concept::Base, ::Collection::Base, ::Label::Base], &@@if_published
        end

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

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

          can :manage, User
          can :manage, Iqvoc.config

          can :full_export, ::Concept::Base
          can :import, ::Concept::Base
          can :export, ::Concept::Base

          can :update, Iqvoc::Concept.root_class.instance

          can :use, :administration

          can :reset, :thesaurus
        end
      else # no user
        can :create, UserSession
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
iqvoc-4.5.0 lib/iqvoc/ability.rb
iqvoc-4.4.0 lib/iqvoc/ability.rb