class Auth::Service::Authenticator::Manager

Public Class Methods

authenticate(email, password) click to toggle source

Authenticate user

# File lib/auth/service/authenticator.rb, line 16
def self.authenticate(email, password)
  self.configure
  uri = URI.parse("#{@@auth_url}")
  http = Net::HTTP.new(@@auth_url, @@auth_port)
  request = Net::HTTP::Post.new("/api/v1/authenticate")
  request.add_field('Content-Type', 'application/json')
  request.body = {'email': email, 'password': password}.to_json
  response = http.request(request)

  result = case response
    when Net::HTTPSuccess then
      { user: JSON.parse(response.body), status: response.code, message: '' }
    when Net::HTTPClientError then
      { error: 'usuario ou senha inválidos.', status: response.code, message: response.message }
    when Net::ReadTimeout then
      { error: 'timeout', status: response.code, message: response.message }
    else
      { error: 'erro inesperado. tente novamente mais tarde.', status: '422', message: '' }
    end
  return result
end
logout(token) click to toggle source
# File lib/auth/service/authenticator.rb, line 59
def self.logout(token)
  uri = URI.parse("#{@@auth_url}")
  http = Net::HTTP.new(@@auth_url, @@auth_port)
  request = Net::HTTP::Delete.new("/api/v1/authenticate")
  request.add_field('Content-Type', 'application/json')
  request.add_field('Authorization', token)
  response = http.request(request)

  result = case response
    when Net::HTTPNoContent then
      { status: response.code, message: 'success', success: true }
    when Net::HTTPClientError then
      { error: 'Token invalido.', status: response.code, message: response.message }
    when Net::ReadTimeout then
      { error: 'timeout', status: response.code, message: response.message }
    else
      { error: 'erro inesperado. tente novamente mais tarde.', status: '422', message: '' }
    end
  return result
end
validate_token(token) click to toggle source
# File lib/auth/service/authenticator.rb, line 38
def self.validate_token(token)
  uri = URI.parse("#{@@auth_url}")
  http = Net::HTTP.new(@@auth_url, @@auth_port)
  request = Net::HTTP::Post.new("/api/v1/validate")
  request.add_field('Content-Type', 'application/json')
  request.add_field('Authorization', token)
  response = http.request(request)

  result = case response
    when Net::HTTPSuccess then
      { user: JSON.parse(response.body), status: response.code, message: '' }
    when Net::HTTPClientError then
      { error: 'token invalido.', status: response.code, message: response.message }
    when Net::ReadTimeout then
      { error: 'timeout', status: response.code, message: response.message }
    else
      { error: 'erro inesperado. tente novamente mais tarde.', status: '422', message: '' }
    end
  return result
end

Private Class Methods

configure() click to toggle source

Setup auth server configuration

# File lib/auth/service/authenticator.rb, line 82
def self.configure
  if @@auth_url == ''
    begin
      # Load app configuration for server URI in you rails app
      config = YAML.load_file('config/authenticator_config.yml')
      @@auth_url = config['url']
      @@auth_port = config['port']
    rescue
      # default configuration
      @@auth_url = 'localhost'
      @@auth_port = '4000'
    end
  end
end