Sha256: eb1ef4351f02765dc817c6ed50197c95bbd749869ddbff5a5d93f6398575bf62

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

class Fastly
  # A representation of a User in Fastly
  class User < Base
    attr_accessor :id, :name, :login, :customer_id, :role, :password
    ##
    # :attr: id
    #
    # The id of this user
    #

    ##
    # :attr: name
    #
    # The name of this user
    #

    ##
    # :attr: customer_id
    #
    # The id of the customer this user belongs to
    #

    ##
    # :attr: role
    #
    # The role this user has (one of admin, owner, superuser, user, engineer, billing)


    # Get the Customer object this user belongs to
    def customer
      @customer ||= fetcher.get(Customer, self.customer_id)
    end

    # Whether or not this User is the owner of the Customer they belong to
    def owner?
      customer.owner_id == id
    end

    # :nodoc:
    PRIORITIES = {
      :admin      => 1,
      :owner      => 10,
      :superuser  => 10,
      :user       => 20,
      :engineer   => 30,
      :billing    => 30,
    }

    # Does this User have sufficient permissions to perform the given role
    def can_do?(test_role)
      test_priority = PRIORITIES[test_role.to_sym] || 1000
      my_priority = PRIORITIES[self.role.to_sym] || 1000

      if test_priority == my_priority
        test_role.to_s == :owner ? owner? : test_role.to_sym == self.role.to_sym
      else
        my_priority < test_priority
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fastly-1.1.4 lib/fastly/user.rb
fastly-1.1.3 lib/fastly/user.rb