arkaan 2.7.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/lib/arkaan.rb +18 -16
  3. data/lib/arkaan/account.rb +22 -19
  4. data/lib/arkaan/authentication.rb +3 -1
  5. data/lib/arkaan/authentication/session.rb +10 -7
  6. data/lib/arkaan/campaign.rb +21 -19
  7. data/lib/arkaan/campaigns.rb +4 -2
  8. data/lib/arkaan/campaigns/invitation.rb +2 -2
  9. data/lib/arkaan/chatrooms.rb +7 -5
  10. data/lib/arkaan/chatrooms/base.rb +3 -1
  11. data/lib/arkaan/chatrooms/campaign.rb +3 -1
  12. data/lib/arkaan/chatrooms/conversation.rb +5 -1
  13. data/lib/arkaan/chatrooms/membership.rb +6 -2
  14. data/lib/arkaan/chatrooms/message.rb +5 -3
  15. data/lib/arkaan/concerns.rb +10 -8
  16. data/lib/arkaan/concerns/activable.rb +6 -4
  17. data/lib/arkaan/concerns/diagnosticable.rb +7 -5
  18. data/lib/arkaan/concerns/enumerable.rb +21 -9
  19. data/lib/arkaan/concerns/historizable.rb +7 -5
  20. data/lib/arkaan/concerns/mime_typable.rb +18 -10
  21. data/lib/arkaan/concerns/premiumable.rb +3 -1
  22. data/lib/arkaan/concerns/sluggable.rb +9 -8
  23. data/lib/arkaan/concerns/typable.rb +5 -3
  24. data/lib/arkaan/factories.rb +4 -2
  25. data/lib/arkaan/files.rb +6 -2
  26. data/lib/arkaan/files/document.rb +5 -3
  27. data/lib/arkaan/files/permission.rb +4 -2
  28. data/lib/arkaan/monitoring.rb +4 -2
  29. data/lib/arkaan/monitoring/route.rb +6 -3
  30. data/lib/arkaan/monitoring/service.rb +5 -3
  31. data/lib/arkaan/notification.rb +5 -2
  32. data/lib/arkaan/oauth.rb +6 -4
  33. data/lib/arkaan/oauth/access_token.rb +10 -8
  34. data/lib/arkaan/oauth/application.rb +18 -12
  35. data/lib/arkaan/oauth/authorization.rb +8 -6
  36. data/lib/arkaan/oauth/refresh_token.rb +7 -4
  37. data/lib/arkaan/permissions.rb +5 -3
  38. data/lib/arkaan/permissions/category.rb +4 -2
  39. data/lib/arkaan/permissions/group.rb +4 -2
  40. data/lib/arkaan/permissions/right.rb +8 -4
  41. data/lib/arkaan/ruleset.rb +6 -4
  42. metadata +104 -54
  43. data/lib/arkaan/decorators/errors.rb +0 -9
  44. data/lib/arkaan/decorators/errors/env_variable_missing.rb +0 -14
  45. data/lib/arkaan/decorators/gateway.rb +0 -109
  46. data/lib/arkaan/factories/errors.rb +0 -9
  47. data/lib/arkaan/factories/errors/gateway_not_found.rb +0 -14
  48. data/lib/arkaan/version.rb +0 -3
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  module OAuth
3
5
  # An OAuth authorization is granted by a user to an application to access its personal data.
@@ -10,8 +12,8 @@ module Arkaan
10
12
  include Mongoid::Timestamps
11
13
 
12
14
  # @!attribute [rw] code
13
- # @return [String] the value corresponding to the authentication code in the RFC of OAuth2.0, kep for historic purpose.
14
- field :code, type: String, default: ->{ SecureRandom.hex }
15
+ # @return [String] the value corresponding to the authentication code in the RFC of OAuth2.0.
16
+ field :code, type: String, default: -> { SecureRandom.hex }
15
17
 
16
18
  # @!attribute [rw] account
17
19
  # @return [Arkaaan::Account] the account granting the authorization to access its data to the application.
@@ -20,12 +22,12 @@ module Arkaan
20
22
  # @return [Arkaan::OAuth::Application] the application asking to access account's data.
21
23
  belongs_to :application, class_name: 'Arkaan::OAuth::Application', inverse_of: :authorizations
22
24
  # @!attribute [rw] token
23
- # @return [Arkaan::OAuth::AccessToken] the access token used further in the application process to access private data of the account.
25
+ # @return [Arkaan::OAuth::AccessToken] the access token used further in the application process to access data.
24
26
  has_many :tokens, class_name: 'Arkaan::OAuth::AccessToken', inverse_of: :authorization
25
27
 
26
28
  validates :code,
27
- presence: {message: 'required'},
28
- uniqueness: {message: 'uniq'}
29
+ presence: { message: 'required' },
30
+ uniqueness: { message: 'uniq' }
29
31
  end
30
32
  end
31
- end
33
+ end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  module OAuth
3
- # A refresh token is used when an access token is expired, to get a new one. It is then recreated for the next expiration.
5
+ # A refresh token is used when an access token is expired, to get a new one.
6
+ # It is then recreated for the next expiration.
4
7
  # @author Vincent Courtois <courtois.vincent@outlook.com>
5
8
  class RefreshToken
6
9
  include Mongoid::Document
@@ -8,11 +11,11 @@ module Arkaan
8
11
 
9
12
  # @!attribute [rw] value
10
13
  # @return [String] the value of the token, returned to the application when built.
11
- field :value, type: String, default: ->{ SecureRandom.hex }
14
+ field :value, type: String, default: -> { SecureRandom.hex }
12
15
 
13
16
  # @!attribute [rw] authorization
14
- # @return [Arkaan::OAuth::Authorization] the authorization code that issued this token to the application for this user.
17
+ # @return [Arkaan::OAuth::Authorization] the authorization code that issued this token to the application.
15
18
  belongs_to :authorization, class_name: 'Arkaan::OAuth::Authorization', inverse_of: :refresh_token
16
19
  end
17
20
  end
18
- end
21
+ end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  # This module holds the logic for all the classes concerning the permissions abd rights for the user.
3
5
  # A permission is restricting the access to one or several features to the users having it.
4
6
  # @author Vincent Courtois <courtois.vincent@outlook.com>
5
7
  module Permissions
6
- autoload :Right , 'arkaan/permissions/right'
7
- autoload :Group , 'arkaan/permissions/group'
8
+ autoload :Right, 'arkaan/permissions/right'
9
+ autoload :Group, 'arkaan/permissions/group'
8
10
  autoload :Category, 'arkaan/permissions/category'
9
11
  end
10
- end
12
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  module Permissions
3
5
  # A category of rights regroups one or several rights for convenience purposes.
@@ -9,7 +11,7 @@ module Arkaan
9
11
 
10
12
  has_many :rights, class_name: 'Arkaan::Permissions::Right', inverse_of: :category
11
13
 
12
- make_sluggable 'category'
14
+ make_sluggable
13
15
  end
14
16
  end
15
- end
17
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  module Permissions
3
5
  # A group gathers one or several users to give them the same rights for conviniency purposes.
@@ -24,7 +26,7 @@ module Arkaan
24
26
  # @return [Array<Arkaan::Monitoring::Route>] the routes this group can access in the API.
25
27
  has_and_belongs_to_many :routes, class_name: 'Arkaan::Monitoring::Route', inverse_of: :groups
26
28
 
27
- make_sluggable 'group'
29
+ make_sluggable
28
30
  end
29
31
  end
30
- end
32
+ end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  module Permissions
3
- # A right is the access to one or several features in the application. It's applied to a group, and transitively to an account.
5
+ # A right is the access to one or several features in the application.
6
+ # It's applied to a group, and transitively to an account.
4
7
  # @author Vincent Courtois <courtois;vincent@outlook.com>
5
8
  class Right
6
9
  include Mongoid::Document
@@ -8,12 +11,13 @@ module Arkaan
8
11
  include Arkaan::Concerns::Sluggable
9
12
 
10
13
  # @!attribute [rw] groups
11
- # @return [Array<Arkaan::Permissions::Group>] the groups granted with the permission to access features opened by this right.
14
+ # @return [Array<Arkaan::Permissions::Group>] the groups granted with the permission to
15
+ # access features opened by this right.
12
16
  has_and_belongs_to_many :groups, class_name: 'Arkaan::Permissions::Group', inverse_of: :rights
13
17
 
14
18
  belongs_to :category, class_name: 'Arkaan::Permissions::Category', inverse_of: :rights
15
19
 
16
- make_sluggable 'right'
20
+ make_sluggable
17
21
  end
18
22
  end
19
- end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  # A set of rules is describing how a specific game system works (eg. Dungeons and Dragons 5th Edition, or Fate)
3
5
  # @author Vincent Courtois <courtois.vincent@outlook.com>
@@ -23,8 +25,8 @@ module Arkaan
23
25
  has_many :campaigns, class_name: 'Arkaan::Campaign', inverse_of: :ruleset
24
26
 
25
27
  validates :name,
26
- presence: {message: 'required'},
27
- length: {minimum: 4, message: 'minlength', if: :name?},
28
- uniqueness: {message: 'uniq', if: :name?}
28
+ presence: { message: 'required' },
29
+ length: { minimum: 4, message: 'minlength', if: :name? },
30
+ uniqueness: { message: 'uniq', if: :name? }
29
31
  end
30
- end
32
+ end
metadata CHANGED
@@ -1,253 +1,309 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arkaan
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Courtois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-05 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: database_cleaner
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.6.0
19
+ version: 1.6.1
20
20
  type: :development
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: 3.6.0
26
+ version: 1.6.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec-json_expectations
28
+ name: factory_bot
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.1.0
33
+ version: 6.1.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.1.0
40
+ version: 6.1.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: rack-test
42
+ name: factory_girl
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.7.0
47
+ version: 4.8.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.7.0
54
+ version: 4.8.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: factory_girl
56
+ name: faker
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 4.8.1
61
+ version: 2.13.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 4.8.1
68
+ version: 2.13.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: factory_bot
70
+ name: gems
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 5.1.1
75
+ version: 1.2.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 5.1.1
82
+ version: 1.2.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: database_cleaner
84
+ name: gitlab
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 1.6.1
89
+ version: 4.16.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 1.6.1
96
+ version: 4.16.1
97
97
  - !ruby/object:Gem::Dependency
98
- name: simplecov
98
+ name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.15.1
103
+ version: 0.13.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.15.1
110
+ version: 0.13.1
111
111
  - !ruby/object:Gem::Dependency
112
- name: yard
112
+ name: rack
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 0.9.20
117
+ version: 2.2.3
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: 0.9.20
124
+ version: 2.2.3
125
125
  - !ruby/object:Gem::Dependency
126
- name: pry
126
+ name: rack-test
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 0.11.1
131
+ version: 1.1.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 0.11.1
138
+ version: 1.1.0
139
139
  - !ruby/object:Gem::Dependency
140
- name: rack
140
+ name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 2.0.8
145
+ version: 3.9.0
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - '='
151
151
  - !ruby/object:Gem::Version
152
- version: 2.0.8
152
+ version: 3.9.0
153
153
  - !ruby/object:Gem::Dependency
154
- name: faker
154
+ name: rspec-json_expectations
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '='
158
+ - !ruby/object:Gem::Version
159
+ version: 2.1.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '='
165
+ - !ruby/object:Gem::Version
166
+ version: 2.1.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: rspec_junit_formatter
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - '='
158
172
  - !ruby/object:Gem::Version
159
- version: 2.10.0
173
+ version: 0.4.1
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - '='
165
179
  - !ruby/object:Gem::Version
166
- version: 2.10.0
180
+ version: 0.4.1
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rubocop
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - '='
172
186
  - !ruby/object:Gem::Version
173
- version: 0.85.1
187
+ version: 0.90.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 0.90.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: semantic
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '='
200
+ - !ruby/object:Gem::Version
201
+ version: 1.6.1
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '='
207
+ - !ruby/object:Gem::Version
208
+ version: 1.6.1
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '='
214
+ - !ruby/object:Gem::Version
215
+ version: 0.19.0
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '='
221
+ - !ruby/object:Gem::Version
222
+ version: 0.19.0
223
+ - !ruby/object:Gem::Dependency
224
+ name: yard
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - '='
228
+ - !ruby/object:Gem::Version
229
+ version: 0.9.25
174
230
  type: :development
175
231
  prerelease: false
176
232
  version_requirements: !ruby/object:Gem::Requirement
177
233
  requirements:
178
234
  - - '='
179
235
  - !ruby/object:Gem::Version
180
- version: 0.85.1
236
+ version: 0.9.25
181
237
  - !ruby/object:Gem::Dependency
182
238
  name: mongoid
183
239
  requirement: !ruby/object:Gem::Requirement
184
240
  requirements:
185
241
  - - '='
186
242
  - !ruby/object:Gem::Version
187
- version: 7.0.1
243
+ version: 7.1.0
188
244
  type: :runtime
189
245
  prerelease: false
190
246
  version_requirements: !ruby/object:Gem::Requirement
191
247
  requirements:
192
248
  - - '='
193
249
  - !ruby/object:Gem::Version
194
- version: 7.0.1
250
+ version: 7.1.0
195
251
  - !ruby/object:Gem::Dependency
196
252
  name: activemodel
197
253
  requirement: !ruby/object:Gem::Requirement
198
254
  requirements:
199
255
  - - '='
200
256
  - !ruby/object:Gem::Version
201
- version: 5.2.3
257
+ version: 6.0.3.2
202
258
  type: :runtime
203
259
  prerelease: false
204
260
  version_requirements: !ruby/object:Gem::Requirement
205
261
  requirements:
206
262
  - - '='
207
263
  - !ruby/object:Gem::Version
208
- version: 5.2.3
264
+ version: 6.0.3.2
209
265
  - !ruby/object:Gem::Dependency
210
266
  name: activesupport
211
267
  requirement: !ruby/object:Gem::Requirement
212
268
  requirements:
213
269
  - - '='
214
270
  - !ruby/object:Gem::Version
215
- version: 5.2.3
271
+ version: 6.0.3.2
216
272
  type: :runtime
217
273
  prerelease: false
218
274
  version_requirements: !ruby/object:Gem::Requirement
219
275
  requirements:
220
276
  - - '='
221
277
  - !ruby/object:Gem::Version
222
- version: 5.2.3
278
+ version: 6.0.3.2
223
279
  - !ruby/object:Gem::Dependency
224
280
  name: bcrypt
225
281
  requirement: !ruby/object:Gem::Requirement
226
282
  requirements:
227
283
  - - '='
228
284
  - !ruby/object:Gem::Version
229
- version: 3.1.11
285
+ version: 3.1.13
230
286
  type: :runtime
231
287
  prerelease: false
232
288
  version_requirements: !ruby/object:Gem::Requirement
233
289
  requirements:
234
290
  - - '='
235
291
  - !ruby/object:Gem::Version
236
- version: 3.1.11
292
+ version: 3.1.13
237
293
  - !ruby/object:Gem::Dependency
238
294
  name: dotenv
239
295
  requirement: !ruby/object:Gem::Requirement
240
296
  requirements:
241
297
  - - '='
242
298
  - !ruby/object:Gem::Version
243
- version: 2.7.2
299
+ version: 2.7.6
244
300
  type: :runtime
245
301
  prerelease: false
246
302
  version_requirements: !ruby/object:Gem::Requirement
247
303
  requirements:
248
304
  - - '='
249
305
  - !ruby/object:Gem::Version
250
- version: 2.7.2
306
+ version: 2.7.6
251
307
  description: This gem holds the model layer for my table-top RPG games application.
252
308
  email: courtois.vincent@outlook.com
253
309
  executables: []
@@ -277,13 +333,8 @@ files:
277
333
  - lib/arkaan/concerns/premiumable.rb
278
334
  - lib/arkaan/concerns/sluggable.rb
279
335
  - lib/arkaan/concerns/typable.rb
280
- - lib/arkaan/decorators/errors.rb
281
- - lib/arkaan/decorators/errors/env_variable_missing.rb
282
- - lib/arkaan/decorators/gateway.rb
283
336
  - lib/arkaan/event.rb
284
337
  - lib/arkaan/factories.rb
285
- - lib/arkaan/factories/errors.rb
286
- - lib/arkaan/factories/errors/gateway_not_found.rb
287
338
  - lib/arkaan/files.rb
288
339
  - lib/arkaan/files/document.rb
289
340
  - lib/arkaan/files/permission.rb
@@ -301,7 +352,6 @@ files:
301
352
  - lib/arkaan/permissions/group.rb
302
353
  - lib/arkaan/permissions/right.rb
303
354
  - lib/arkaan/ruleset.rb
304
- - lib/arkaan/version.rb
305
355
  homepage: https://rubygems.org/gems/arkaan
306
356
  licenses:
307
357
  - MIT
@@ -321,7 +371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
371
  - !ruby/object:Gem::Version
322
372
  version: '0'
323
373
  requirements: []
324
- rubygems_version: 3.1.2
374
+ rubygems_version: 3.1.4
325
375
  signing_key:
326
376
  specification_version: 4
327
377
  summary: The model layer for my table-RPG application