Class: Subledger::Domain::Identity

Direct Known Subclasses

ActiveIdentity, ArchivedIdentity

Defined Under Namespace

Classes: Entity

Instance Attribute Summary collapse

Attributes included from Roles::Versionable

#version

Attributes included from Roles::Storable

#client, #store

Attributes included from Roles::Identifiable

#id

Attributes included from Roles::Describable

#description, #reference

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Roles::Restable

#patch_hash, #post_hash, #serializable_hash, #to_json

Methods included from Roles::Archivable

#archive

Methods included from Roles::Activatable

#activate

Methods included from Roles::Updatable

included, #update

Methods included from Roles::Readable

included, #read

Methods included from Roles::Creatable

included

Methods included from Roles::Versionable

included

Methods included from Roles::Attributable

#attributes

Methods included from Subledger::Domain

#==, #collection_name, #entity_name, included, #to_s

Constructor Details

#initialize(args) ⇒ Identity

Returns a new instance of Identity.



69
70
71
72
73
74
75
76
# File 'lib/subledger/domain/identity.rb', line 69

def initialize args
  describable args
  identifiable args
  storable args
  versionable args

  @email = args[:email]
end

Instance Attribute Details

#emailObject

Returns the value of attribute email.



27
28
29
# File 'lib/subledger/domain/identity.rb', line 27

def email
  @email
end

Class Method Details

.active_klassObject



49
50
51
# File 'lib/subledger/domain/identity.rb', line 49

def self.active_klass
  ActiveIdentity
end

.archived_klassObject



45
46
47
# File 'lib/subledger/domain/identity.rb', line 45

def self.archived_klass
  ArchivedIdentity
end

.create(args) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/subledger/domain/identity.rb', line 53

def self.create args
  validate_creatability args

  identity = args[:client].send active_klass.collection_name, args

  args[:store].create_identity identity
end

.patch_keysObject



33
34
35
# File 'lib/subledger/domain/identity.rb', line 33

def self.patch_keys
  [ :id, :email, :description, :reference, :version ]
end

.post_keysObject



29
30
31
# File 'lib/subledger/domain/identity.rb', line 29

def self.post_keys
  [ :id, :email, :description, :reference ]
end

.root_klassObject



37
38
39
# File 'lib/subledger/domain/identity.rb', line 37

def self.root_klass
  Identity
end

.sub_klassesObject



41
42
43
# File 'lib/subledger/domain/identity.rb', line 41

def self.sub_klasses
  [ archived_klass, active_klass ]
end

Instance Method Details

#authorize(verb, url) ⇒ Object

def by_org org

# TODO look in OrgIdentities table

end

Raises:



86
87
88
89
90
91
92
93
94
# File 'lib/subledger/domain/identity.rb', line 86

def authorize verb, url
  raise KeyError if @retired

  controls.each do |control|
    return true if control.match(verb, url) unless control.revoked?
  end

  false
end

#createObject



61
62
63
64
65
66
67
# File 'lib/subledger/domain/identity.rb', line 61

def create
  identity, key = self.class.create self.attributes

  initialize identity.attributes

  return self, key
end