Module: Agreements

Defined in:
lib/agreements.rb,
lib/agreements/engine.rb,
lib/agreements/errors.rb,
lib/agreements/version.rb,
lib/agreements/identity.rb,
lib/agreements/recorder.rb,
lib/agreements/enforcement.rb,
app/models/agreements/version.rb,
app/models/agreements/acceptance.rb,
app/models/agreements/application_record.rb,
lib/generators/agreements/migration_helpers.rb,
lib/generators/agreements/install/install_generator.rb

Defined Under Namespace

Modules: Enforcement, Generators, Identity Classes: Acceptance, ApplicationRecord, Engine, Error, InvalidIdentity, Version, VersionNotCurrent

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.accept!(agreement_key, version_id:, subject:, actor:, authority:, acceptance_statement:, locale:) ⇒ Object

Explicit keywords keep this evidence boundary distinct from browser params. rubocop:disable-next Metrics/ParameterLists

Raises:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/agreements.rb', line 28

def accept!(agreement_key, version_id:, subject:, actor:, authority:, acceptance_statement:, locale:)
  version = current_version(agreement_key)
  raise VersionNotCurrent, version unless version&.id.to_s == version_id.to_s

  Recorder.call(
    agreement_version: version,
    evidence: {
      subject: subject,
      actor: actor,
      authority: authority,
      acceptance_statement: acceptance_statement,
      locale: locale
    }
  )
end

.current_version(agreement_key) ⇒ Object



16
17
18
# File 'lib/agreements.rb', line 16

def current_version(agreement_key)
  Version.current_for(agreement_key)
end

.identity_key(identity) ⇒ Object



44
45
46
# File 'lib/agreements.rb', line 44

def identity_key(identity)
  Identity.key(identity)
end

.pending_version(agreement_key, subject:) ⇒ Object



20
21
22
23
24
# File 'lib/agreements.rb', line 20

def pending_version(agreement_key, subject:)
  current_version(agreement_key).then do |version|
    version unless version.nil? || version.accepted_by?(subject)
  end
end

.table_name_prefixObject



11
12
13
# File 'lib/agreements.rb', line 11

def self.table_name_prefix
  "agreements_"
end