Class: Shipit::ApiClient

Inherits:
Record
  • Object
show all
Defined in:
app/models/shipit/api_client.rb

Constant Summary collapse

InsufficientPermission =
Class.new(StandardError)
PERMISSIONS =
%w[
  read:stack
  write:stack
  deploy:stack
  lock:stack
  read:hook
  write:hook
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Record

serializer_class

Class Method Details

.authenticate(token) ⇒ Object



24
25
26
27
# File 'app/models/shipit/api_client.rb', line 24

def authenticate(token)
  find_by(id: message_verifier.verify(token).to_i)
rescue Shipit::SimpleMessageVerifier::InvalidSignature
end

.message_verifierObject



29
30
31
# File 'app/models/shipit/api_client.rb', line 29

def message_verifier
  @message_verifier ||= Shipit::SimpleMessageVerifier.new(Shipit.api_clients_secret)
end

Instance Method Details

#authentication_tokenObject



34
35
36
# File 'app/models/shipit/api_client.rb', line 34

def authentication_token
  self.class.message_verifier.generate(id)
end

#check_permissions!(operation, scope) ⇒ Object



38
39
40
41
42
43
44
45
# File 'app/models/shipit/api_client.rb', line 38

def check_permissions!(operation, scope)
  required_permission = "#{operation}:#{scope}"
  unless permissions.include?(required_permission)
    raise InsufficientPermission, "This operation requires the `#{required_permission}` permission"
  end

  true
end