Sha256: 322ace03faad3688bd8be439ec3ad9ff7bd2889b0c4d82d9a7fc4b44110441cf

Contents?: true

Size: 1.85 KB

Versions: 2

Compression:

Stored size: 1.85 KB

Contents

module AuthLh
  def self.configure(args={})
    @endpoint = (args[:endpoint] || 'https://auth.lhconfort.com.ar')
    @return_url = args[:return_url]
    @application_code = args[:application_code]
    @access_token = args[:access_token]
  end

  def self.logged_user(session_token, remote_ip)
    result = get_request '/logged_user', {
      app_code: @application_code,
      session_token: session_token,
      remote_ip: remote_ip
    }

    SessionResponse.new(result)
  end

  def self.login_url
    login_attempt = create_login_attempt
    "#{@endpoint}/login?attempt=#{login_attempt.token}"
  end

  def self.logout_url
    "#{@endpoint}/logout?return=#{CGI::escape(@return_url)}"
  end

  def self.get_user(code_or_login)
    User.new(get_request("/api/users/#{code_or_login}"))
  end

  def self.get_users(filters={})
    results = get_request("/api/users", filters)
    results.map { |r| User.new(r) }
  end

  def self.get_all_users
    results = get_request("/api/users/all")
    results.map { |r| User.new(r) }
  end

  def self.get_external_apps
    results = get_request("/api/external_apps")
    results.map { |r| ExternalApp.new(r) }
  end

  def self.get_external_app(code_or_name)
    ExternalApp.new(get_request("/api/external_apps/#{code_or_name}"))
  end

  protected

  def self.create_login_attempt
    params = { app_code: @application_code }

    if @return_url
      params[:return_url] = @return_url
    end

    LoginAttempt.new(post_request('/login_attempts', params))
  end

  def self.get_request(action, params={})
    response = RestClient.get("#{@endpoint}#{action}", {params: params}.merge(auth_headers))
    JSON.parse(response.body)
  end

  def self.post_request(action, params={})
    JSON.parse(RestClient.post("#{@endpoint}#{action}", params, auth_headers))
  end

  def self.auth_headers
    { authorization: "Token token=\"#{@access_token}\"" }
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
auth-lh-0.1.0 lib/auth_lh.rb
auth-lh-0.0.12 lib/auth_lh.rb