hanami 1.3.5 → 2.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
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