unidom-visitor 1.12.3 → 1.12.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 628b0a826d6227185ecda5880be694b63a74a16e
4
- data.tar.gz: 310f5b1253e666d8914c68c5c5d0f28dd154dcfa
3
+ metadata.gz: 11c45fb8f48e47ced170d411d5340609f6e8e50a
4
+ data.tar.gz: a40ac60d84c5995be8bc47d33a3af648f2753dc6
5
5
  SHA512:
6
- metadata.gz: f88d39b9adff575d947818417d7898b9efbac4e7e6bc0f6e76b85a916851216c394e6ff13212b378f5ce5469d6d9e4230644b182a975bb96aaab3afd96c9bfbc
7
- data.tar.gz: fed8e571b36faef204e43faee5cc729accdd18c2543fb651346cf8560c98311ded435154711ffcbd02589a439893221925fce592f1cfd839e8fdea7475512122
6
+ metadata.gz: f39fef87984dc8d517eb859e9540a0bbd983fe048d463e26f134affb9aacacdfc8d0915c0084293435ace4d2ae8b86def6cea2616b0740511824cca31b27e3e2
7
+ data.tar.gz: b625dce0ac7a1b79651974a57b14f81044984cb0a5521b43d53d556133e737c8bbf0b6eafb5f2db3009f572a231e3fc559d02c727e5095e6be544a5d80052bd6
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Unidom Visitor 访问者领域模型引擎
2
2
 
3
+ [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/gems/unidom-visitor/frames)
3
4
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
5
+
4
6
  [![Gem Version](https://badge.fury.io/rb/unidom-visitor.svg)](https://badge.fury.io/rb/unidom-visitor)
5
7
  [![Dependency Status](https://gemnasium.com/badges/github.com/topbitdu/unidom-visitor.svg)](https://gemnasium.com/github.com/topbitdu/unidom-visitor)
6
8
 
@@ -89,39 +91,39 @@ include Unidom::Visitor::Concerns::AsParty
89
91
 
90
92
  ### As Visitor concern
91
93
 
92
- The As Visitor concern do the following tasks for the includer automatically:
93
- 1. Define the has_many :identificatings macro as: ``has_many :identificatings, class_name: 'Unidom::Visitor::Identificating', as: :visitor``
94
- 2. Define the has_many :authenticatings macro as: ``has_many :authenticatings, class_name: 'Unidom::Visitor::Authenticating', as: :visitor``
95
- 3. Define the has_many :recognizations macro as: ``has_many :recognizations, class_name: 'Unidom::Visitor::Recognization', as: :visitor``
96
- 4. Define the .identified_by scope as: ``scope :identified_by, ->(identity) { joins(:identificatings).merge(Unidom::Visitor::Identificating.identity_is identity) }``
97
- 5. Define the .sign_up method as: ``sign_up(identity, password: nil, opened_at: Time.now)``
98
- 6. Define the #is_identificated! method as: ``is_identificated!(as: nil, at: Time.now)``
99
- 7. Define the #is_identificated? method as: ``is_identificated?(as: nil, at: Time.now)``
100
- 8. Define the #is_authenticated! method as: ``is_authenticated!(through: nil, at: Time.now, flag_code: 'RQRD')``
101
- 9. Define the #is_authenticated? method as: ``is_authenticated?(through: nil, at: Time.now, flag_code: 'RQRD')``
102
- 10. Define the #cognize! method as: ``cognize!(it, at: Time.now, primary: true)``
103
- 11. Define the #cognize? method as: ``cognize?(it, at: Time.now, primary: true)``
94
+ The As Visitor concern do the following tasks for the includer automatically:
95
+ 1. Define the has_many :identificatings macro as: ``has_many :identificatings, class_name: 'Unidom::Visitor::Identificating', as: :visitor``
96
+ 2. Define the has_many :authenticatings macro as: ``has_many :authenticatings, class_name: 'Unidom::Visitor::Authenticating', as: :visitor``
97
+ 3. Define the has_many :recognizations macro as: ``has_many :recognizations, class_name: 'Unidom::Visitor::Recognization', as: :visitor``
98
+ 4. Define the .identified_by scope as: ``scope :identified_by, ->(identity) { joins(:identificatings).merge(Unidom::Visitor::Identificating.identity_is identity) }``
99
+ 5. Define the .sign_up method as: ``sign_up(identity, password: nil, opened_at: Time.now)``
100
+ 6. Define the #is_identificated! method as: ``is_identificated!(as: nil, at: Time.now)``
101
+ 7. Define the #is_identificated? method as: ``is_identificated?(as: nil, at: Time.now)``
102
+ 8. Define the #is_authenticated! method as: ``is_authenticated!(through: nil, at: Time.now, flag_code: 'RQRD')``
103
+ 9. Define the #is_authenticated? method as: ``is_authenticated?(through: nil, at: Time.now, flag_code: 'RQRD')``
104
+ 10. Define the #cognize! method as: ``cognize!(it, at: Time.now, primary: true)``
105
+ 11. Define the #cognize? method as: ``cognize?(it, at: Time.now, primary: true)``
104
106
  12. Define the .sign_up! method as: ``sign_up!(it, as: nil, through: nil, at: Time.now, flag_code: 'RQRD', primary: true)``
105
107
 
106
108
  ### As Identity concern
107
109
 
108
- The As Identity concern do the following tasks for the includer automatically:
109
- 1. Define the has_many :identificatings macro as: ``has_many :identificatings, class_name: 'Unidom::Visitor::Identificating', as: :identity``
110
- 2. Define the #identificate! method as: ``identificate!(it, at: Time.now)``
110
+ The As Identity concern do the following tasks for the includer automatically:
111
+ 1. Define the has_many :identificatings macro as: ``has_many :identificatings, class_name: 'Unidom::Visitor::Identificating', as: :identity``
112
+ 2. Define the #identificate! method as: ``identificate!(it, at: Time.now)``
111
113
  3. Define the #identificate? method as: ``identificate?(it, at: Time.now)``
112
114
 
113
115
  ### As Credential concern
114
116
 
115
- The As Credential concern do the following tasks for the includer automatically:
116
- 1. Define the has_one :authenticatings macro as: ``has_one :authenticating, class_name: 'Unidom::Visitor::Authenticating', as: :credential``
117
- 2. Define the #authenticate! method as: ``authenticate!(it, at: Time.now, flag_code: 'RQRD')``
117
+ The As Credential concern do the following tasks for the includer automatically:
118
+ 1. Define the has_one :authenticatings macro as: ``has_one :authenticating, class_name: 'Unidom::Visitor::Authenticating', as: :credential``
119
+ 2. Define the #authenticate! method as: ``authenticate!(it, at: Time.now, flag_code: 'RQRD')``
118
120
  3. Define the #authenticate? method as: ``authenticate?(it, at: Time.now, flag_code: 'RQRD')``
119
121
 
120
122
  ### As Party concern
121
123
 
122
- The As Party concern do the following tasks for the includer automatically:
123
- 1. Define the has_many :recognizations macro as: ``has_many :recognizations, class_name: 'Unidom::Visitor::Recognization', as: :party``
124
- 2. Define the #is_cognized! method as: ``is_cognized!(via: nil, at: Time.now, primary: true)``
124
+ The As Party concern do the following tasks for the includer automatically:
125
+ 1. Define the has_many :recognizations macro as: ``has_many :recognizations, class_name: 'Unidom::Visitor::Recognization', as: :party``
126
+ 2. Define the #is_cognized! method as: ``is_cognized!(via: nil, at: Time.now, primary: true)``
125
127
  3. Define the #is_cognized? method as: ``is_cognized!(via: nil, at: Time.now, primary: true)``
126
128
 
127
129
 
@@ -137,3 +139,19 @@ Unidom::Visitor::Flag::SUFFICIENT
137
139
  Unidom::Visitor::Flag::REQUISITE
138
140
  Unidom::Visitor::Flag::OPTIONAL
139
141
  ```
142
+
143
+
144
+
145
+ ## Disable the Model & Migration
146
+
147
+ If you only need the app components other than models, the migrations should be neglected, and the models should not be loaded.
148
+ ```ruby
149
+ # config/initializers/unidom.rb
150
+ Unidom::Common.configure do |options|
151
+
152
+ options[:neglected_namespaces] = %w{
153
+ Unidom::Visitor
154
+ }
155
+
156
+ end
157
+ ```
@@ -1,3 +1,6 @@
1
+ ##
2
+ # Application controller 是模块内所有控制器的基类。
3
+
1
4
  class Unidom::Visitor::ApplicationController < ActionController::Base
2
5
  protect_from_forgery with: :exception
3
6
  end
@@ -1,2 +1,5 @@
1
+ ##
2
+ # Application job 是模块内所有异步任务的基类。
3
+
1
4
  class Unidom::Visitor::ApplicationJob < ActiveJob::Base
2
5
  end
@@ -1,3 +1,6 @@
1
+ ##
2
+ # Application mailer 是模块内所有电子邮件发送类的基类。
3
+
1
4
  class Unidom::Visitor::ApplicationMailer < ActionMailer::Base
2
5
  default from: 'from@example.com'
3
6
  layout 'mailer'
@@ -1,3 +1,6 @@
1
+ ##
2
+ # Application record 是模块内所有模型的抽象基类。
3
+
1
4
  class Unidom::Visitor::ApplicationRecord < ActiveRecord::Base
2
5
  self.abstract_class = true
3
6
  end
@@ -19,10 +19,13 @@ class Unidom::Visitor::Authenticating < Unidom::Visitor::ApplicationRecord
19
19
  scope :visitor_type_is, ->(visitor_type) { where visitor_type: visitor_type }
20
20
  scope :credential_type_is, ->(credential_type) { where credential_type: credential_type }
21
21
 
22
+ ##
23
+ # 将访问者 visitor 和信任状 credential 关联起来。关联时间是 opened_at ,缺省是当前时间。如:
24
+ # Unidom::Visitor::Authenticating.authenticate! user, with: password
22
25
  def self.authenticate!(visitor, with: nil, opened_at: Time.now)
23
26
  credential_is(with).visitor_is(visitor).valid_at.alive.first_or_create! opened_at: opened_at
24
27
  end
25
28
 
26
29
  code :flag, Unidom::Visitor::Flag
27
30
 
28
- end
31
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Visitor::Authenticating'
@@ -11,4 +11,4 @@ class Unidom::Visitor::Guest < Unidom::Visitor::ApplicationRecord
11
11
 
12
12
  scope :platform_specific_identification_is, ->(platform_specific_identification) { where platform_specific_identification: platform_specific_identification }
13
13
 
14
- end
14
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Visitor::Guest'
@@ -17,8 +17,11 @@ class Unidom::Visitor::Identificating < Unidom::Visitor::ApplicationRecord
17
17
  visitor_is(visitor).first.try :identity
18
18
  end
19
19
 
20
+ ##
21
+ # 将访问者 visitor 和参与者 party 进行身份关联。关联时间是 at ,缺省为当前时间。如:
22
+ # Unidom::Visitor::Identificating.identificate! user, as: email
20
23
  def self.identificate!(visitor, as: nil, at: Time.now)
21
24
  self.visitor_is(visitor).identity_is(as).valid_at.alive.first_or_create! opened_at: at
22
25
  end
23
26
 
24
- end
27
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Visitor::Identificating'
@@ -35,6 +35,9 @@ class Unidom::Visitor::Password < Unidom::Visitor::ApplicationRecord
35
35
  Digest::SHA512.hexdigest "#{::Rails.application.secrets[:secret_key_base]}#{clear_text}#{self.pepper_content}"
36
36
  end
37
37
 
38
+ ##
39
+ # 将当前密码更换为指定的新密码。如:
40
+ # password.change_to 'newpassword'
38
41
  def change_to(new_password)
39
42
  visitor = authenticating.visitor
40
43
  soft_destroy
@@ -50,4 +53,4 @@ class Unidom::Visitor::Password < Unidom::Visitor::ApplicationRecord
50
53
 
51
54
  private :hash
52
55
 
53
- end
56
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Visitor::Password'
@@ -13,6 +13,9 @@ class Unidom::Visitor::Recognization < Unidom::Visitor::ApplicationRecord
13
13
  scope :visitor_is, ->(visitor) { where visitor: visitor }
14
14
  scope :party_is, ->(party) { where party: party }
15
15
 
16
+ ##
17
+ # 将访问者 visitor 和参与者 party 关联起来。关联时间为 at ,缺省为当前时间。主关联标志为 primary ,缺省为 false 。如:
18
+ # Unidom::Visitor::Recognization.cognize! user, as: selected_person
16
19
  def self.cognize!(visitor, as: nil, at: Time.now, primary: false)
17
20
  query = visitor_is(visitor).party_is(as).valid_at.alive
18
21
  recognization = query.first
@@ -25,4 +28,4 @@ class Unidom::Visitor::Recognization < Unidom::Visitor::ApplicationRecord
25
28
  end
26
29
  end
27
30
 
28
- end
31
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Visitor::Recognization'
@@ -10,6 +10,9 @@ class Unidom::Visitor::User < Unidom::Visitor::ApplicationRecord
10
10
 
11
11
  has_many :passwords, through: :authenticatings, source: :credential, source_type: 'Unidom::Visitor::Password'
12
12
 
13
+ ##
14
+ # 注册用户。用户的登录账号是 identity ,密码是 password ,注册时间是 opened_at ,缺省为当前时间。如:
15
+ # Unidom::Visitor::User.sign_up email, password: 'yourpassword'
13
16
  def self.sign_up(identity, password: nil, opened_at: Time.now)
14
17
 
15
18
  Rails.logger.debug "Signing up user with identity: #{identity.inspect}."
@@ -28,4 +31,4 @@ class Unidom::Visitor::User < Unidom::Visitor::ApplicationRecord
28
31
 
29
32
  end
30
33
 
31
- end
34
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Visitor::User'
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Visitor
3
- VERSION = '1.12.3'.freeze
3
+ VERSION = '1.12.4'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-visitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.3
4
+ version: 1.12.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-03 00:00:00.000000000 Z
11
+ date: 2017-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '1.9'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.8'
26
+ version: '1.9'
27
27
  description: Unidom (UNIfied Domain Object Model) is a series of domain model engines.
28
28
  The Visitor domain model engine includes User, Guest, Administrator, and Password
29
29
  models. Unidom (统一领域对象模型)是一系列的领域模型引擎。访问者领域模型引擎包括用户、游客、管理员和密码的模型。