hanami 1.3.5 → 2.0.0.alpha1

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 (147) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +51 -41
  3. data/FEATURES.md +2 -12
  4. data/LICENSE.md +1 -1
  5. data/README.md +5 -8
  6. data/bin/hanami +6 -4
  7. data/hanami.gemspec +24 -28
  8. data/lib/hanami/application.rb +44 -176
  9. data/lib/hanami/boot.rb +6 -0
  10. data/lib/hanami/cli/commands/command.rb +21 -29
  11. data/lib/hanami/cli/commands/server.rb +63 -14
  12. data/lib/hanami/cli/commands.rb +5 -42
  13. data/lib/hanami/configuration/cookies.rb +24 -0
  14. data/lib/hanami/configuration/middleware.rb +8 -28
  15. data/lib/hanami/configuration/security.rb +141 -0
  16. data/lib/hanami/configuration/sessions.rb +50 -0
  17. data/lib/hanami/configuration.rb +181 -191
  18. data/lib/hanami/container.rb +107 -0
  19. data/lib/hanami/frameworks.rb +24 -18
  20. data/lib/hanami/routes.rb +17 -205
  21. data/lib/hanami/server.rb +5 -69
  22. data/lib/hanami/version.rb +3 -1
  23. data/lib/hanami.rb +39 -243
  24. metadata +36 -233
  25. data/lib/hanami/action/csrf_protection.rb +0 -211
  26. data/lib/hanami/action/routing_helpers.rb +0 -40
  27. data/lib/hanami/app.rb +0 -96
  28. data/lib/hanami/application_configuration.rb +0 -1495
  29. data/lib/hanami/application_name.rb +0 -108
  30. data/lib/hanami/application_namespace.rb +0 -14
  31. data/lib/hanami/assets/asset.rb +0 -72
  32. data/lib/hanami/assets/static.rb +0 -102
  33. data/lib/hanami/cli/commands/assets/precompile.rb +0 -42
  34. data/lib/hanami/cli/commands/assets.rb +0 -16
  35. data/lib/hanami/cli/commands/console.rb +0 -95
  36. data/lib/hanami/cli/commands/db/apply.rb +0 -32
  37. data/lib/hanami/cli/commands/db/console.rb +0 -44
  38. data/lib/hanami/cli/commands/db/create.rb +0 -32
  39. data/lib/hanami/cli/commands/db/drop.rb +0 -32
  40. data/lib/hanami/cli/commands/db/migrate.rb +0 -39
  41. data/lib/hanami/cli/commands/db/prepare.rb +0 -32
  42. data/lib/hanami/cli/commands/db/rollback.rb +0 -59
  43. data/lib/hanami/cli/commands/db/version.rb +0 -32
  44. data/lib/hanami/cli/commands/db.rb +0 -32
  45. data/lib/hanami/cli/commands/destroy/action.rb +0 -137
  46. data/lib/hanami/cli/commands/destroy/app.rb +0 -159
  47. data/lib/hanami/cli/commands/destroy/mailer.rb +0 -74
  48. data/lib/hanami/cli/commands/destroy/migration.rb +0 -51
  49. data/lib/hanami/cli/commands/destroy/model.rb +0 -84
  50. data/lib/hanami/cli/commands/destroy.rb +0 -26
  51. data/lib/hanami/cli/commands/generate/action/action.erb +0 -7
  52. data/lib/hanami/cli/commands/generate/action/action_spec.minitest.erb +0 -11
  53. data/lib/hanami/cli/commands/generate/action/action_spec.rspec.erb +0 -9
  54. data/lib/hanami/cli/commands/generate/action/action_without_view.erb +0 -7
  55. data/lib/hanami/cli/commands/generate/action/view.erb +0 -7
  56. data/lib/hanami/cli/commands/generate/action/view_spec.minitest.erb +0 -12
  57. data/lib/hanami/cli/commands/generate/action/view_spec.rspec.erb +0 -10
  58. data/lib/hanami/cli/commands/generate/action.rb +0 -321
  59. data/lib/hanami/cli/commands/generate/app/application.erb +0 -313
  60. data/lib/hanami/cli/commands/generate/app/favicon.ico +0 -0
  61. data/lib/hanami/cli/commands/generate/app/gitkeep.erb +0 -0
  62. data/lib/hanami/cli/commands/generate/app/layout.erb +0 -7
  63. data/lib/hanami/cli/commands/generate/app/layout_spec.minitest.erb +0 -10
  64. data/lib/hanami/cli/commands/generate/app/layout_spec.rspec.erb +0 -10
  65. data/lib/hanami/cli/commands/generate/app/routes.erb +0 -5
  66. data/lib/hanami/cli/commands/generate/app/template.erb.erb +0 -10
  67. data/lib/hanami/cli/commands/generate/app/template.haml.erb +0 -7
  68. data/lib/hanami/cli/commands/generate/app/template.slim.erb +0 -8
  69. data/lib/hanami/cli/commands/generate/app.rb +0 -243
  70. data/lib/hanami/cli/commands/generate/mailer/mailer.erb +0 -9
  71. data/lib/hanami/cli/commands/generate/mailer/mailer_spec.minitest.erb +0 -7
  72. data/lib/hanami/cli/commands/generate/mailer/mailer_spec.rspec.erb +0 -5
  73. data/lib/hanami/cli/commands/generate/mailer.rb +0 -104
  74. data/lib/hanami/cli/commands/generate/migration/migration.erb +0 -4
  75. data/lib/hanami/cli/commands/generate/migration.rb +0 -41
  76. data/lib/hanami/cli/commands/generate/model/entity.erb +0 -2
  77. data/lib/hanami/cli/commands/generate/model/entity_spec.minitest.erb +0 -5
  78. data/lib/hanami/cli/commands/generate/model/entity_spec.rspec.erb +0 -3
  79. data/lib/hanami/cli/commands/generate/model/migration.erb +0 -10
  80. data/lib/hanami/cli/commands/generate/model/repository.erb +0 -5
  81. data/lib/hanami/cli/commands/generate/model/repository_spec.minitest.erb +0 -5
  82. data/lib/hanami/cli/commands/generate/model/repository_spec.rspec.erb +0 -3
  83. data/lib/hanami/cli/commands/generate/model.rb +0 -125
  84. data/lib/hanami/cli/commands/generate/secret.rb +0 -48
  85. data/lib/hanami/cli/commands/generate.rb +0 -28
  86. data/lib/hanami/cli/commands/new/.env.development.erb +0 -3
  87. data/lib/hanami/cli/commands/new/.env.test.erb +0 -3
  88. data/lib/hanami/cli/commands/new/.gitkeep.erb +0 -0
  89. data/lib/hanami/cli/commands/new/Gemfile.erb +0 -57
  90. data/lib/hanami/cli/commands/new/README.md.erb +0 -33
  91. data/lib/hanami/cli/commands/new/config/boot.erb +0 -2
  92. data/lib/hanami/cli/commands/new/config/environment.erb +0 -49
  93. data/lib/hanami/cli/commands/new/config.ru.erb +0 -3
  94. data/lib/hanami/cli/commands/new/gitignore.erb +0 -4
  95. data/lib/hanami/cli/commands/new/gitignore_with_sqlite.erb +0 -5
  96. data/lib/hanami/cli/commands/new/hanamirc.erb +0 -3
  97. data/lib/hanami/cli/commands/new/lib/project.erb +0 -2
  98. data/lib/hanami/cli/commands/new/minitest/Rakefile.erb +0 -12
  99. data/lib/hanami/cli/commands/new/minitest/features_helper.erb +0 -11
  100. data/lib/hanami/cli/commands/new/minitest/spec_helper.erb +0 -7
  101. data/lib/hanami/cli/commands/new/rspec/Rakefile.erb +0 -9
  102. data/lib/hanami/cli/commands/new/rspec/capybara.erb +0 -8
  103. data/lib/hanami/cli/commands/new/rspec/features_helper.erb +0 -12
  104. data/lib/hanami/cli/commands/new/rspec/rspec.erb +0 -2
  105. data/lib/hanami/cli/commands/new/rspec/spec_helper.erb +0 -103
  106. data/lib/hanami/cli/commands/new/schema.sql.erb +0 -0
  107. data/lib/hanami/cli/commands/new.rb +0 -578
  108. data/lib/hanami/cli/commands/project.rb +0 -421
  109. data/lib/hanami/cli/commands/routes.rb +0 -21
  110. data/lib/hanami/cli/commands/templates.rb +0 -31
  111. data/lib/hanami/cli/commands/version.rb +0 -19
  112. data/lib/hanami/common_logger.rb +0 -109
  113. data/lib/hanami/components/app/assets.rb +0 -59
  114. data/lib/hanami/components/app/controller.rb +0 -74
  115. data/lib/hanami/components/app/routes.rb +0 -59
  116. data/lib/hanami/components/app/view.rb +0 -44
  117. data/lib/hanami/components/component.rb +0 -182
  118. data/lib/hanami/components/components.rb +0 -479
  119. data/lib/hanami/components/routes_inspector.rb +0 -72
  120. data/lib/hanami/components.rb +0 -156
  121. data/lib/hanami/config/cookies.rb +0 -69
  122. data/lib/hanami/config/framework_configuration.rb +0 -43
  123. data/lib/hanami/config/load_paths.rb +0 -46
  124. data/lib/hanami/config/mapper.rb +0 -47
  125. data/lib/hanami/config/routes.rb +0 -20
  126. data/lib/hanami/config/security.rb +0 -110
  127. data/lib/hanami/config/sessions.rb +0 -119
  128. data/lib/hanami/configuration/app.rb +0 -21
  129. data/lib/hanami/early_hints.rb +0 -129
  130. data/lib/hanami/env.rb +0 -69
  131. data/lib/hanami/environment.rb +0 -541
  132. data/lib/hanami/environment_application_configurations.rb +0 -37
  133. data/lib/hanami/hanamirc.rb +0 -169
  134. data/lib/hanami/mailer/glue.rb +0 -27
  135. data/lib/hanami/middleware_stack.rb +0 -172
  136. data/lib/hanami/rake_helper.rb +0 -78
  137. data/lib/hanami/rake_tasks.rb +0 -3
  138. data/lib/hanami/rendering_policy.rb +0 -94
  139. data/lib/hanami/routing/default.rb +0 -32
  140. data/lib/hanami/setup.rb +0 -3
  141. data/lib/hanami/static.rb +0 -63
  142. data/lib/hanami/templates/default.html.erb +0 -30
  143. data/lib/hanami/templates/welcome.html.erb +0 -52
  144. data/lib/hanami/views/default.rb +0 -37
  145. data/lib/hanami/views/default_template_finder.rb +0 -22
  146. data/lib/hanami/views/null_view.rb +0 -15
  147. data/lib/hanami/welcome.rb +0 -41
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.5
4
+ version: 2.0.0.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-18 00:00:00.000000000 Z
11
+ date: 2019-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-utils
@@ -16,159 +16,97 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: 2.0.alpha
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.3'
27
- - !ruby/object:Gem::Dependency
28
- name: hanami-validations
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '1.3'
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '3'
37
- type: :runtime
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: '1.3'
44
- - - "<"
45
- - !ruby/object:Gem::Version
46
- version: '3'
26
+ version: 2.0.alpha
47
27
  - !ruby/object:Gem::Dependency
48
28
  name: hanami-router
49
29
  requirement: !ruby/object:Gem::Requirement
50
30
  requirements:
51
31
  - - "~>"
52
32
  - !ruby/object:Gem::Version
53
- version: '1.3'
33
+ version: 2.0.alpha
54
34
  type: :runtime
55
35
  prerelease: false
56
36
  version_requirements: !ruby/object:Gem::Requirement
57
37
  requirements:
58
38
  - - "~>"
59
39
  - !ruby/object:Gem::Version
60
- version: '1.3'
40
+ version: 2.0.alpha
61
41
  - !ruby/object:Gem::Dependency
62
42
  name: hanami-controller
63
43
  requirement: !ruby/object:Gem::Requirement
64
44
  requirements:
65
45
  - - "~>"
66
46
  - !ruby/object:Gem::Version
67
- version: '1.3'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 1.3.3
47
+ version: 2.0.alpha
71
48
  type: :runtime
72
49
  prerelease: false
73
50
  version_requirements: !ruby/object:Gem::Requirement
74
51
  requirements:
75
52
  - - "~>"
76
53
  - !ruby/object:Gem::Version
77
- version: '1.3'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 1.3.3
54
+ version: 2.0.alpha
81
55
  - !ruby/object:Gem::Dependency
82
- name: hanami-view
56
+ name: hanami-cli
83
57
  requirement: !ruby/object:Gem::Requirement
84
58
  requirements:
85
59
  - - "~>"
86
60
  - !ruby/object:Gem::Version
87
- version: '1.3'
61
+ version: 1.0.alpha
88
62
  type: :runtime
89
63
  prerelease: false
90
64
  version_requirements: !ruby/object:Gem::Requirement
91
65
  requirements:
92
66
  - - "~>"
93
67
  - !ruby/object:Gem::Version
94
- version: '1.3'
68
+ version: 1.0.alpha
95
69
  - !ruby/object:Gem::Dependency
96
- name: hanami-helpers
70
+ name: dry-system
97
71
  requirement: !ruby/object:Gem::Requirement
98
72
  requirements:
99
73
  - - "~>"
100
74
  - !ruby/object:Gem::Version
101
- version: '1.3'
75
+ version: '0.10'
102
76
  type: :runtime
103
77
  prerelease: false
104
78
  version_requirements: !ruby/object:Gem::Requirement
105
79
  requirements:
106
80
  - - "~>"
107
81
  - !ruby/object:Gem::Version
108
- version: '1.3'
82
+ version: '0.10'
109
83
  - !ruby/object:Gem::Dependency
110
- name: hanami-mailer
84
+ name: dry-inflector
111
85
  requirement: !ruby/object:Gem::Requirement
112
86
  requirements:
113
87
  - - "~>"
114
88
  - !ruby/object:Gem::Version
115
- version: '1.3'
116
- type: :runtime
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '1.3'
123
- - !ruby/object:Gem::Dependency
124
- name: hanami-assets
125
- requirement: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '1.3'
130
- type: :runtime
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '1.3'
137
- - !ruby/object:Gem::Dependency
138
- name: dry-cli
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
89
+ version: '0.1'
90
+ - - ">="
142
91
  - !ruby/object:Gem::Version
143
- version: '0.5'
92
+ version: 0.1.2
144
93
  type: :runtime
145
94
  prerelease: false
146
95
  version_requirements: !ruby/object:Gem::Requirement
147
96
  requirements:
148
97
  - - "~>"
149
98
  - !ruby/object:Gem::Version
150
- version: '0.5'
151
- - !ruby/object:Gem::Dependency
152
- name: concurrent-ruby
153
- requirement: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: '1.0'
158
- type: :runtime
159
- prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
99
+ version: '0.1'
100
+ - - ">="
163
101
  - !ruby/object:Gem::Version
164
- version: '1.0'
102
+ version: 0.1.2
165
103
  - !ruby/object:Gem::Dependency
166
104
  name: bundler
167
105
  requirement: !ruby/object:Gem::Requirement
168
106
  requirements:
169
107
  - - ">="
170
108
  - !ruby/object:Gem::Version
171
- version: '1.6'
109
+ version: '1.16'
172
110
  - - "<"
173
111
  - !ruby/object:Gem::Version
174
112
  version: '3'
@@ -178,7 +116,7 @@ dependencies:
178
116
  requirements:
179
117
  - - ">="
180
118
  - !ruby/object:Gem::Version
181
- version: '1.6'
119
+ version: '1.16'
182
120
  - - "<"
183
121
  - !ruby/object:Gem::Version
184
122
  version: '3'
@@ -188,14 +126,14 @@ dependencies:
188
126
  requirements:
189
127
  - - "~>"
190
128
  - !ruby/object:Gem::Version
191
- version: '3.7'
129
+ version: '3.8'
192
130
  type: :development
193
131
  prerelease: false
194
132
  version_requirements: !ruby/object:Gem::Requirement
195
133
  requirements:
196
134
  - - "~>"
197
135
  - !ruby/object:Gem::Version
198
- version: '3.7'
136
+ version: '3.8'
199
137
  - !ruby/object:Gem::Dependency
200
138
  name: rack-test
201
139
  requirement: !ruby/object:Gem::Requirement
@@ -210,34 +148,20 @@ dependencies:
210
148
  - - "~>"
211
149
  - !ruby/object:Gem::Version
212
150
  version: '1.1'
213
- - !ruby/object:Gem::Dependency
214
- name: aruba
215
- requirement: !ruby/object:Gem::Requirement
216
- requirements:
217
- - - "~>"
218
- - !ruby/object:Gem::Version
219
- version: '0.14'
220
- type: :development
221
- prerelease: false
222
- version_requirements: !ruby/object:Gem::Requirement
223
- requirements:
224
- - - "~>"
225
- - !ruby/object:Gem::Version
226
- version: '0.14'
227
151
  - !ruby/object:Gem::Dependency
228
152
  name: rake
229
153
  requirement: !ruby/object:Gem::Requirement
230
154
  requirements:
231
155
  - - "~>"
232
156
  - !ruby/object:Gem::Version
233
- version: '13.0'
157
+ version: '12.0'
234
158
  type: :development
235
159
  prerelease: false
236
160
  version_requirements: !ruby/object:Gem::Requirement
237
161
  requirements:
238
162
  - - "~>"
239
163
  - !ruby/object:Gem::Version
240
- version: '13.0'
164
+ version: '12.0'
241
165
  description: Hanami is a web framework for Ruby
242
166
  email:
243
167
  - me@lucaguidi.com
@@ -254,139 +178,21 @@ files:
254
178
  - bin/hanami
255
179
  - hanami.gemspec
256
180
  - lib/hanami.rb
257
- - lib/hanami/action/csrf_protection.rb
258
- - lib/hanami/action/routing_helpers.rb
259
- - lib/hanami/app.rb
260
181
  - lib/hanami/application.rb
261
- - lib/hanami/application_configuration.rb
262
- - lib/hanami/application_name.rb
263
- - lib/hanami/application_namespace.rb
264
- - lib/hanami/assets/asset.rb
265
- - lib/hanami/assets/static.rb
182
+ - lib/hanami/boot.rb
266
183
  - lib/hanami/cli/commands.rb
267
- - lib/hanami/cli/commands/assets.rb
268
- - lib/hanami/cli/commands/assets/precompile.rb
269
184
  - lib/hanami/cli/commands/command.rb
270
- - lib/hanami/cli/commands/console.rb
271
- - lib/hanami/cli/commands/db.rb
272
- - lib/hanami/cli/commands/db/apply.rb
273
- - lib/hanami/cli/commands/db/console.rb
274
- - lib/hanami/cli/commands/db/create.rb
275
- - lib/hanami/cli/commands/db/drop.rb
276
- - lib/hanami/cli/commands/db/migrate.rb
277
- - lib/hanami/cli/commands/db/prepare.rb
278
- - lib/hanami/cli/commands/db/rollback.rb
279
- - lib/hanami/cli/commands/db/version.rb
280
- - lib/hanami/cli/commands/destroy.rb
281
- - lib/hanami/cli/commands/destroy/action.rb
282
- - lib/hanami/cli/commands/destroy/app.rb
283
- - lib/hanami/cli/commands/destroy/mailer.rb
284
- - lib/hanami/cli/commands/destroy/migration.rb
285
- - lib/hanami/cli/commands/destroy/model.rb
286
- - lib/hanami/cli/commands/generate.rb
287
- - lib/hanami/cli/commands/generate/action.rb
288
- - lib/hanami/cli/commands/generate/action/action.erb
289
- - lib/hanami/cli/commands/generate/action/action_spec.minitest.erb
290
- - lib/hanami/cli/commands/generate/action/action_spec.rspec.erb
291
- - lib/hanami/cli/commands/generate/action/action_without_view.erb
292
- - lib/hanami/cli/commands/generate/action/view.erb
293
- - lib/hanami/cli/commands/generate/action/view_spec.minitest.erb
294
- - lib/hanami/cli/commands/generate/action/view_spec.rspec.erb
295
- - lib/hanami/cli/commands/generate/app.rb
296
- - lib/hanami/cli/commands/generate/app/application.erb
297
- - lib/hanami/cli/commands/generate/app/favicon.ico
298
- - lib/hanami/cli/commands/generate/app/gitkeep.erb
299
- - lib/hanami/cli/commands/generate/app/layout.erb
300
- - lib/hanami/cli/commands/generate/app/layout_spec.minitest.erb
301
- - lib/hanami/cli/commands/generate/app/layout_spec.rspec.erb
302
- - lib/hanami/cli/commands/generate/app/routes.erb
303
- - lib/hanami/cli/commands/generate/app/template.erb.erb
304
- - lib/hanami/cli/commands/generate/app/template.haml.erb
305
- - lib/hanami/cli/commands/generate/app/template.slim.erb
306
- - lib/hanami/cli/commands/generate/mailer.rb
307
- - lib/hanami/cli/commands/generate/mailer/mailer.erb
308
- - lib/hanami/cli/commands/generate/mailer/mailer_spec.minitest.erb
309
- - lib/hanami/cli/commands/generate/mailer/mailer_spec.rspec.erb
310
- - lib/hanami/cli/commands/generate/migration.rb
311
- - lib/hanami/cli/commands/generate/migration/migration.erb
312
- - lib/hanami/cli/commands/generate/model.rb
313
- - lib/hanami/cli/commands/generate/model/entity.erb
314
- - lib/hanami/cli/commands/generate/model/entity_spec.minitest.erb
315
- - lib/hanami/cli/commands/generate/model/entity_spec.rspec.erb
316
- - lib/hanami/cli/commands/generate/model/migration.erb
317
- - lib/hanami/cli/commands/generate/model/repository.erb
318
- - lib/hanami/cli/commands/generate/model/repository_spec.minitest.erb
319
- - lib/hanami/cli/commands/generate/model/repository_spec.rspec.erb
320
- - lib/hanami/cli/commands/generate/secret.rb
321
- - lib/hanami/cli/commands/new.rb
322
- - lib/hanami/cli/commands/new/.env.development.erb
323
- - lib/hanami/cli/commands/new/.env.test.erb
324
- - lib/hanami/cli/commands/new/.gitkeep.erb
325
- - lib/hanami/cli/commands/new/Gemfile.erb
326
- - lib/hanami/cli/commands/new/README.md.erb
327
- - lib/hanami/cli/commands/new/config.ru.erb
328
- - lib/hanami/cli/commands/new/config/boot.erb
329
- - lib/hanami/cli/commands/new/config/environment.erb
330
- - lib/hanami/cli/commands/new/gitignore.erb
331
- - lib/hanami/cli/commands/new/gitignore_with_sqlite.erb
332
- - lib/hanami/cli/commands/new/hanamirc.erb
333
- - lib/hanami/cli/commands/new/lib/project.erb
334
- - lib/hanami/cli/commands/new/minitest/Rakefile.erb
335
- - lib/hanami/cli/commands/new/minitest/features_helper.erb
336
- - lib/hanami/cli/commands/new/minitest/spec_helper.erb
337
- - lib/hanami/cli/commands/new/rspec/Rakefile.erb
338
- - lib/hanami/cli/commands/new/rspec/capybara.erb
339
- - lib/hanami/cli/commands/new/rspec/features_helper.erb
340
- - lib/hanami/cli/commands/new/rspec/rspec.erb
341
- - lib/hanami/cli/commands/new/rspec/spec_helper.erb
342
- - lib/hanami/cli/commands/new/schema.sql.erb
343
- - lib/hanami/cli/commands/project.rb
344
- - lib/hanami/cli/commands/routes.rb
345
185
  - lib/hanami/cli/commands/server.rb
346
- - lib/hanami/cli/commands/templates.rb
347
- - lib/hanami/cli/commands/version.rb
348
- - lib/hanami/common_logger.rb
349
- - lib/hanami/components.rb
350
- - lib/hanami/components/app/assets.rb
351
- - lib/hanami/components/app/controller.rb
352
- - lib/hanami/components/app/routes.rb
353
- - lib/hanami/components/app/view.rb
354
- - lib/hanami/components/component.rb
355
- - lib/hanami/components/components.rb
356
- - lib/hanami/components/routes_inspector.rb
357
- - lib/hanami/config/cookies.rb
358
- - lib/hanami/config/framework_configuration.rb
359
- - lib/hanami/config/load_paths.rb
360
- - lib/hanami/config/mapper.rb
361
- - lib/hanami/config/routes.rb
362
- - lib/hanami/config/security.rb
363
- - lib/hanami/config/sessions.rb
364
186
  - lib/hanami/configuration.rb
365
- - lib/hanami/configuration/app.rb
187
+ - lib/hanami/configuration/cookies.rb
366
188
  - lib/hanami/configuration/middleware.rb
367
- - lib/hanami/early_hints.rb
368
- - lib/hanami/env.rb
369
- - lib/hanami/environment.rb
370
- - lib/hanami/environment_application_configurations.rb
189
+ - lib/hanami/configuration/security.rb
190
+ - lib/hanami/configuration/sessions.rb
191
+ - lib/hanami/container.rb
371
192
  - lib/hanami/frameworks.rb
372
- - lib/hanami/hanamirc.rb
373
- - lib/hanami/mailer/glue.rb
374
- - lib/hanami/middleware_stack.rb
375
- - lib/hanami/rake_helper.rb
376
- - lib/hanami/rake_tasks.rb
377
- - lib/hanami/rendering_policy.rb
378
193
  - lib/hanami/routes.rb
379
- - lib/hanami/routing/default.rb
380
194
  - lib/hanami/server.rb
381
- - lib/hanami/setup.rb
382
- - lib/hanami/static.rb
383
- - lib/hanami/templates/default.html.erb
384
- - lib/hanami/templates/welcome.html.erb
385
195
  - lib/hanami/version.rb
386
- - lib/hanami/views/default.rb
387
- - lib/hanami/views/default_template_finder.rb
388
- - lib/hanami/views/null_view.rb
389
- - lib/hanami/welcome.rb
390
196
  homepage: http://hanamirb.org
391
197
  licenses:
392
198
  - MIT
@@ -400,17 +206,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
400
206
  requirements:
401
207
  - - ">="
402
208
  - !ruby/object:Gem::Version
403
- version: 2.3.0
404
- - - "<"
405
- - !ruby/object:Gem::Version
406
- version: '3'
209
+ version: 2.5.0
407
210
  required_rubygems_version: !ruby/object:Gem::Requirement
408
211
  requirements:
409
- - - ">="
212
+ - - ">"
410
213
  - !ruby/object:Gem::Version
411
- version: '0'
214
+ version: 1.3.1
412
215
  requirements: []
413
- rubygems_version: 3.2.2
216
+ rubygems_version: 3.0.2
414
217
  signing_key:
415
218
  specification_version: 4
416
219
  summary: The web, with simplicity
@@ -1,211 +0,0 @@
1
- require 'securerandom'
2
-
3
- module Hanami
4
- # @api private
5
- module Action
6
- # Invalid CSRF Token
7
- #
8
- # @since 0.4.0
9
- class InvalidCSRFTokenError < ::StandardError
10
- end
11
-
12
- # CSRF Protection
13
- #
14
- # This security mechanism is enabled automatically if sessions are turned on.
15
- #
16
- # It stores a "challenge" token in session. For each "state changing request"
17
- # (eg. <tt>POST</tt>, <tt>PATCH</tt> etc..), we should send a special param:
18
- # <tt>_csrf_token</tt>.
19
- #
20
- # If the param matches with the challenge token, the flow can continue.
21
- # Otherwise the application detects an attack attempt, it reset the session
22
- # and <tt>Hanami::Action::InvalidCSRFTokenError</tt> is raised.
23
- #
24
- # We can specify a custom handling strategy, by overriding <tt>#handle_invalid_csrf_token</tt>.
25
- #
26
- # Form helper (<tt>#form_for</tt>) automatically sets a hidden field with the
27
- # correct token. A special view method (<tt>#csrf_token</tt>) is available in
28
- # case the form markup is manually crafted.
29
- #
30
- # We can disable this check on action basis, by overriding <tt>#verify_csrf_token?</tt>.
31
- #
32
- # @since 0.4.0
33
- #
34
- # @see https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29
35
- # @see https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
36
- #
37
- # @example Custom Handling
38
- # module Web::Controllers::Books
39
- # class Create
40
- # include Web::Action
41
- #
42
- # def call(params)
43
- # # ...
44
- # end
45
- #
46
- # private
47
- #
48
- # def handle_invalid_csrf_token
49
- # Web::Logger.warn "CSRF attack: expected #{ session[:_csrf_token] }, was #{ params[:_csrf_token] }"
50
- # # manual handling
51
- # end
52
- # end
53
- # end
54
- #
55
- # @example Bypass Security Check
56
- # module Web::Controllers::Books
57
- # class Create
58
- # include Web::Action
59
- #
60
- # def call(params)
61
- # # ...
62
- # end
63
- #
64
- # private
65
- #
66
- # def verify_csrf_token?
67
- # false
68
- # end
69
- # end
70
- # end
71
- module CSRFProtection
72
- # Session and params key for CSRF token.
73
- #
74
- # This key is shared with <tt>hanami-controller</tt> and <tt>hanami-helpers</tt>
75
- #
76
- # @since 0.4.0
77
- # @api private
78
- CSRF_TOKEN = :_csrf_token
79
-
80
- # Idempotent HTTP methods
81
- #
82
- # By default, the check isn't performed if the request method is included
83
- # in this list.
84
- #
85
- # @since 0.4.0
86
- # @api private
87
- IDEMPOTENT_HTTP_METHODS = Hash[
88
- 'GET' => true,
89
- 'HEAD' => true,
90
- 'TRACE' => true,
91
- 'OPTIONS' => true
92
- ].freeze
93
-
94
- # @since 0.4.0
95
- # @api private
96
- def self.included(action)
97
- action.class_eval do
98
- before :set_csrf_token, :verify_csrf_token
99
- end unless Hanami.env?(:test)
100
- end
101
-
102
- private
103
- # Set CSRF Token in session
104
- #
105
- # @since 0.4.0
106
- # @api private
107
- def set_csrf_token
108
- session[CSRF_TOKEN] ||= generate_csrf_token
109
- end
110
-
111
- # Verify if CSRF token from params, matches the one stored in session.
112
- # If not, it raises an error.
113
- #
114
- # Don't override this method.
115
- #
116
- # To bypass the security check, please override <tt>#verify_csrf_token?</tt>.
117
- # For custom handling of an attack, please override <tt>#handle_invalid_csrf_token</tt>.
118
- #
119
- # @since 0.4.0
120
- # @api private
121
- def verify_csrf_token
122
- handle_invalid_csrf_token if invalid_csrf_token?
123
- end
124
-
125
- # Verify if CSRF token from params, matches the one stored in session.
126
- #
127
- # Don't override this method.
128
- #
129
- # @since 0.4.0
130
- # @api private
131
- def invalid_csrf_token?
132
- return false unless verify_csrf_token?
133
-
134
- missing_csrf_token? ||
135
- !::Rack::Utils.secure_compare(session[CSRF_TOKEN], params[CSRF_TOKEN])
136
- end
137
-
138
- # Verify the CSRF token was passed in params.
139
- #
140
- # @api private
141
- def missing_csrf_token?
142
- Hanami::Utils::Blank.blank?(params[CSRF_TOKEN])
143
- end
144
-
145
- # Generates a random CSRF Token
146
- #
147
- # @since 0.4.0
148
- # @api private
149
- def generate_csrf_token
150
- SecureRandom.hex(32)
151
- end
152
-
153
- # Decide if perform the check or not.
154
- #
155
- # Override and return <tt>false</tt> if you want to bypass security check.
156
- #
157
- # @since 0.4.0
158
- #
159
- # @example
160
- # module Web::Controllers::Books
161
- # class Create
162
- # include Web::Action
163
- #
164
- # def call(params)
165
- # # ...
166
- # end
167
- #
168
- # private
169
- #
170
- # def verify_csrf_token?
171
- # false
172
- # end
173
- # end
174
- # end
175
- def verify_csrf_token?
176
- !IDEMPOTENT_HTTP_METHODS[request_method]
177
- end
178
-
179
- # Handle CSRF attack.
180
- #
181
- # The default policy resets the session and raises an exception.
182
- #
183
- # Override this method, for custom handling.
184
- #
185
- # @raise [Hanami::Action::InvalidCSRFTokenError]
186
- #
187
- # @since 0.4.0
188
- #
189
- # @example
190
- # module Web::Controllers::Books
191
- # class Create
192
- # include Web::Action
193
- #
194
- # def call(params)
195
- # # ...
196
- # end
197
- #
198
- # private
199
- #
200
- # def handle_invalid_csrf_token
201
- # # custom invalid CSRF management goes here
202
- # end
203
- # end
204
- # end
205
- def handle_invalid_csrf_token
206
- session.clear
207
- raise InvalidCSRFTokenError.new
208
- end
209
- end
210
- end
211
- end
@@ -1,40 +0,0 @@
1
- require 'hanami/utils/string'
2
-
3
- module Hanami
4
- module Action
5
- # Routing helper for full stack Hanami web applications.
6
- #
7
- # For a given application called <tt>Web::Application</tt>, at runtime
8
- # Hanami creates a routes factory called <tt>Web::Routes</tt>.
9
- #
10
- # Included by default in every controller.
11
- #
12
- # @since 0.3.2
13
- #
14
- # @example Usage in controller
15
- # require 'hanami'
16
- #
17
- # module Web::Controllers::Protected
18
- # class Index
19
- # include Web::Action
20
- #
21
- # def call(params)
22
- # redirect_to routes.root_path
23
- # end
24
- # end
25
- # end
26
- module RoutingHelpers
27
- def self.included(base)
28
- factory = "#{Utils::String.namespace(base)}.routes"
29
-
30
- base.class_eval <<-END_EVAL, __FILE__, __LINE__
31
- private
32
-
33
- def routes
34
- #{factory}
35
- end
36
- END_EVAL
37
- end
38
- end
39
- end
40
- end