Sha256: cf2f82e2ec5bfcb62782eb7374e968746f0687cc118de7d50e9353925a7e23b6
Contents?: true
Size: 1.12 KB
Versions: 28
Compression:
Stored size: 1.12 KB
Contents
module Shipit class ApiClient < ActiveRecord::Base InsufficientPermission = Class.new(StandardError) belongs_to :creator, class_name: 'User' belongs_to :stack validates :creator, :name, presence: true serialize :permissions, Array PERMISSIONS = %w( read:stack write:stack deploy:stack lock:stack read:hook write:hook ).freeze validates :permissions, subset: {of: PERMISSIONS} class << self def authenticate(token) find_by_id(message_verifier.verify(token).to_i) rescue Shipit::SimpleMessageVerifier::InvalidSignature end def message_verifier @message_verifier ||= Shipit::SimpleMessageVerifier.new(Shipit.api_clients_secret) end end def authentication_token self.class.message_verifier.generate(id) end 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 end end
Version data entries
28 entries across 28 versions & 1 rubygems