Sha256: 8828bf3015a669aa4e4fe65c4d44d6449beb1e91a72fe25773cd3258794689f1

Contents?: true

Size: 1017 Bytes

Versions: 11

Compression:

Stored size: 1017 Bytes

Contents

module EnjuBookmark
  class Ability
    include CanCan::Ability

    def initialize(user, ip_address = nil)
      case user.try(:role).try(:name)
      when 'Administrator'
        can :manage, [
          Bookmark,
          BookmarkStat,
          BookmarkStatHasManifestation,
          Tag
        ]
      when 'Librarian'
        can [:read, :create, :update], BookmarkStat
        can :read, BookmarkStatHasManifestation
        can :manage, [
          Bookmark,
          Tag
        ]
      when 'User'
        can [:index, :create], Bookmark
        can :show, Bookmark do |bookmark|
          if bookmark.user == user
            true
          elsif user.share_bookmarks
            true
          else
            false
          end
        end
        can [:update, :destroy, :delete], Bookmark do |bookmark|
          bookmark.user == user
        end
        can :read, BookmarkStat
        can :read, Tag
      else
        can :read, BookmarkStat
        can :read, Tag
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
enju_bookmark-0.1.2.pre19 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre18 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre17 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre16 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre15 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre14 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre13 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre12 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre11 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre10 app/models/enju_bookmark/ability.rb
enju_bookmark-0.1.2.pre9 app/models/enju_bookmark/ability.rb