Sha256: 18bc16018050ce0357d2f1cb4cf29dc84f3a9074e5aa32a7e2f01ec85daba5ac

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

module WCC::Auth

  ACCESS_LEVELS = [
    { id: nil, name: "None", slug: "none", description: "no access", level: 0 },
    { id: 1, name: "Basic", slug: "basic", description: "read access", level: 1 },
    { id: 2, name: "Contribute", slug: "contribute", description: "read-write of data user owns", level: 2 },
    { id: 3, name: "Manage", slug: "manage", description: "read-write of other's data", level: 3 },
    { id: 4, name: "App Admin", slug: "appadmin", description: "read-write app configuration", level: 4 },
    { id: 5, name: "System Admin", slug: "sysadmin", description: "full access", level: 5 },
  ]

  AccessLevel = Struct.new(:id, :name, :slug, :description, :level) do
    include Comparable

    def <=>(record)
      self.level <=> record.level
    end

    def self.[](index_or_slug, db=ACCESS_LEVELS)
      all(db).select do |al|
        al.level.to_s === index_or_slug.to_s ||
          al.slug === index_or_slug.to_s
      end.last
    end

    def self.all(db=ACCESS_LEVELS)
      db.collect do |row|
        new.tap { |access_level|
          row.each { |field, value|
            access_level[field] = value
          }
        }
      end.sort
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wcc-auth-0.3.2 lib/wcc/auth/access_level.rb
wcc-auth-0.3.1 lib/wcc/auth/access_level.rb
wcc-auth-0.3.0 lib/wcc/auth/access_level.rb