Sha256: 67baadbcb26ccaa78a4bddafdb4260bbff4239671e901afac7783203f1f33863

Contents?: true

Size: 1.95 KB

Versions: 30

Compression:

Stored size: 1.95 KB

Contents

module CFoundry::V1
  # Class for representing a user on a given target (via Client).
  #
  # Does not guarantee that the user exists; used for both user creation and
  # retrieval, as the attributes are all lazily retrieved. Setting attributes
  # does not perform any requests; use #update! to commit your changes.
  class User
    # User email.
    attr_reader :email


    # Create a User object.
    #
    # You'll usually call Client#user instead
    def initialize(email, client, manifest = nil)
      @email = email
      @client = client
      @manifest = manifest
    end

    # Show string representing the user.
    def inspect
      "#<User '#@email'>"
    end

    # Basic equality test by email.
    def eql?(other)
      other.is_a?(self.class) && other.email == @email
    end
    alias :== :eql?

    # Delete the user from the target.
    def delete!
      @client.base.delete_user(@email)
    end

    # Create the user on the target.
    #
    # Call this after setting the various attributes.
    def create!
      @client.base.create_user(@manifest.merge(:email => @email))
    end

    # Update user attributes.
    def update!(what = {})
      @client.base.update_user(@email, manifest.merge(what))
      @manifest = nil
    end

    # Check if the user exists on the target.
    def exists?
      @client.base.user(@email)
      true
    rescue CFoundry::Denied
      false
    end

    # Check if the user is an administrator.
    def admin?
      manifest[:admin]
    end

    # Set the user's password.
    #
    # Call #update! after using this.
    def password=(str)
      manifest[:password] = str
    end

    def guid
      @guid ||= @client.base.token_data[:user_id]
    end

    def change_password!(new, old)
      if @client.base.uaa
        @client.base.uaa.change_password(guid, new, old)
      else
        self.password = new
        update!
      end
    end

    private

    def manifest
      @manifest ||= @client.base.user(@email)
    end
  end
end

Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
cfoundry-0.3.57 lib/cfoundry/v1/user.rb
cfoundry-0.3.56 lib/cfoundry/v1/user.rb
cfoundry-0.3.55 lib/cfoundry/v1/user.rb
cfoundry-0.3.54 lib/cfoundry/v1/user.rb
cfoundry-0.3.53 lib/cfoundry/v1/user.rb
cfoundry-0.3.52 lib/cfoundry/v1/user.rb
cfoundry-0.3.51 lib/cfoundry/v1/user.rb
cfoundry-0.3.50 lib/cfoundry/v1/user.rb
cfoundry-0.3.49 lib/cfoundry/v1/user.rb
cfoundry-0.3.48 lib/cfoundry/v1/user.rb
cfoundry-0.3.47 lib/cfoundry/v1/user.rb
cfoundry-0.3.46 lib/cfoundry/v1/user.rb
cfoundry-0.3.45 lib/cfoundry/v1/user.rb
cfoundry-0.3.44 lib/cfoundry/v1/user.rb
cfoundry-0.3.43 lib/cfoundry/v1/user.rb
cfoundry-0.3.42 lib/cfoundry/v1/user.rb
cfoundry-0.3.41 lib/cfoundry/v1/user.rb
cfoundry-IronFoundry-0.3.40 lib/cfoundry/v1/user.rb
cfoundry-0.3.40 lib/cfoundry/v1/user.rb
cfoundry-IronFoundry-0.3.39 lib/cfoundry/v1/user.rb