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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +51 -41
- data/FEATURES.md +2 -12
- data/LICENSE.md +1 -1
- data/README.md +5 -8
- data/bin/hanami +6 -4
- data/hanami.gemspec +24 -28
- data/lib/hanami/application.rb +44 -176
- data/lib/hanami/boot.rb +6 -0
- data/lib/hanami/cli/commands/command.rb +21 -29
- data/lib/hanami/cli/commands/server.rb +63 -14
- data/lib/hanami/cli/commands.rb +5 -42
- data/lib/hanami/configuration/cookies.rb +24 -0
- data/lib/hanami/configuration/middleware.rb +8 -28
- data/lib/hanami/configuration/security.rb +141 -0
- data/lib/hanami/configuration/sessions.rb +50 -0
- data/lib/hanami/configuration.rb +181 -191
- data/lib/hanami/container.rb +107 -0
- data/lib/hanami/frameworks.rb +24 -18
- data/lib/hanami/routes.rb +17 -205
- data/lib/hanami/server.rb +5 -69
- data/lib/hanami/version.rb +3 -1
- data/lib/hanami.rb +39 -243
- metadata +36 -233
- data/lib/hanami/action/csrf_protection.rb +0 -211
- data/lib/hanami/action/routing_helpers.rb +0 -40
- data/lib/hanami/app.rb +0 -96
- data/lib/hanami/application_configuration.rb +0 -1495
- data/lib/hanami/application_name.rb +0 -108
- data/lib/hanami/application_namespace.rb +0 -14
- data/lib/hanami/assets/asset.rb +0 -72
- data/lib/hanami/assets/static.rb +0 -102
- data/lib/hanami/cli/commands/assets/precompile.rb +0 -42
- data/lib/hanami/cli/commands/assets.rb +0 -16
- data/lib/hanami/cli/commands/console.rb +0 -95
- data/lib/hanami/cli/commands/db/apply.rb +0 -32
- data/lib/hanami/cli/commands/db/console.rb +0 -44
- data/lib/hanami/cli/commands/db/create.rb +0 -32
- data/lib/hanami/cli/commands/db/drop.rb +0 -32
- data/lib/hanami/cli/commands/db/migrate.rb +0 -39
- data/lib/hanami/cli/commands/db/prepare.rb +0 -32
- data/lib/hanami/cli/commands/db/rollback.rb +0 -59
- data/lib/hanami/cli/commands/db/version.rb +0 -32
- data/lib/hanami/cli/commands/db.rb +0 -32
- data/lib/hanami/cli/commands/destroy/action.rb +0 -137
- data/lib/hanami/cli/commands/destroy/app.rb +0 -159
- data/lib/hanami/cli/commands/destroy/mailer.rb +0 -74
- data/lib/hanami/cli/commands/destroy/migration.rb +0 -51
- data/lib/hanami/cli/commands/destroy/model.rb +0 -84
- data/lib/hanami/cli/commands/destroy.rb +0 -26
- data/lib/hanami/cli/commands/generate/action/action.erb +0 -7
- data/lib/hanami/cli/commands/generate/action/action_spec.minitest.erb +0 -11
- data/lib/hanami/cli/commands/generate/action/action_spec.rspec.erb +0 -9
- data/lib/hanami/cli/commands/generate/action/action_without_view.erb +0 -7
- data/lib/hanami/cli/commands/generate/action/view.erb +0 -7
- data/lib/hanami/cli/commands/generate/action/view_spec.minitest.erb +0 -12
- data/lib/hanami/cli/commands/generate/action/view_spec.rspec.erb +0 -10
- data/lib/hanami/cli/commands/generate/action.rb +0 -321
- data/lib/hanami/cli/commands/generate/app/application.erb +0 -313
- data/lib/hanami/cli/commands/generate/app/favicon.ico +0 -0
- data/lib/hanami/cli/commands/generate/app/gitkeep.erb +0 -0
- data/lib/hanami/cli/commands/generate/app/layout.erb +0 -7
- data/lib/hanami/cli/commands/generate/app/layout_spec.minitest.erb +0 -10
- data/lib/hanami/cli/commands/generate/app/layout_spec.rspec.erb +0 -10
- data/lib/hanami/cli/commands/generate/app/routes.erb +0 -5
- data/lib/hanami/cli/commands/generate/app/template.erb.erb +0 -10
- data/lib/hanami/cli/commands/generate/app/template.haml.erb +0 -7
- data/lib/hanami/cli/commands/generate/app/template.slim.erb +0 -8
- data/lib/hanami/cli/commands/generate/app.rb +0 -243
- data/lib/hanami/cli/commands/generate/mailer/mailer.erb +0 -9
- data/lib/hanami/cli/commands/generate/mailer/mailer_spec.minitest.erb +0 -7
- data/lib/hanami/cli/commands/generate/mailer/mailer_spec.rspec.erb +0 -5
- data/lib/hanami/cli/commands/generate/mailer.rb +0 -104
- data/lib/hanami/cli/commands/generate/migration/migration.erb +0 -4
- data/lib/hanami/cli/commands/generate/migration.rb +0 -41
- data/lib/hanami/cli/commands/generate/model/entity.erb +0 -2
- data/lib/hanami/cli/commands/generate/model/entity_spec.minitest.erb +0 -5
- data/lib/hanami/cli/commands/generate/model/entity_spec.rspec.erb +0 -3
- data/lib/hanami/cli/commands/generate/model/migration.erb +0 -10
- data/lib/hanami/cli/commands/generate/model/repository.erb +0 -5
- data/lib/hanami/cli/commands/generate/model/repository_spec.minitest.erb +0 -5
- data/lib/hanami/cli/commands/generate/model/repository_spec.rspec.erb +0 -3
- data/lib/hanami/cli/commands/generate/model.rb +0 -125
- data/lib/hanami/cli/commands/generate/secret.rb +0 -48
- data/lib/hanami/cli/commands/generate.rb +0 -28
- data/lib/hanami/cli/commands/new/.env.development.erb +0 -3
- data/lib/hanami/cli/commands/new/.env.test.erb +0 -3
- data/lib/hanami/cli/commands/new/.gitkeep.erb +0 -0
- data/lib/hanami/cli/commands/new/Gemfile.erb +0 -57
- data/lib/hanami/cli/commands/new/README.md.erb +0 -33
- data/lib/hanami/cli/commands/new/config/boot.erb +0 -2
- data/lib/hanami/cli/commands/new/config/environment.erb +0 -49
- data/lib/hanami/cli/commands/new/config.ru.erb +0 -3
- data/lib/hanami/cli/commands/new/gitignore.erb +0 -4
- data/lib/hanami/cli/commands/new/gitignore_with_sqlite.erb +0 -5
- data/lib/hanami/cli/commands/new/hanamirc.erb +0 -3
- data/lib/hanami/cli/commands/new/lib/project.erb +0 -2
- data/lib/hanami/cli/commands/new/minitest/Rakefile.erb +0 -12
- data/lib/hanami/cli/commands/new/minitest/features_helper.erb +0 -11
- data/lib/hanami/cli/commands/new/minitest/spec_helper.erb +0 -7
- data/lib/hanami/cli/commands/new/rspec/Rakefile.erb +0 -9
- data/lib/hanami/cli/commands/new/rspec/capybara.erb +0 -8
- data/lib/hanami/cli/commands/new/rspec/features_helper.erb +0 -12
- data/lib/hanami/cli/commands/new/rspec/rspec.erb +0 -2
- data/lib/hanami/cli/commands/new/rspec/spec_helper.erb +0 -103
- data/lib/hanami/cli/commands/new/schema.sql.erb +0 -0
- data/lib/hanami/cli/commands/new.rb +0 -578
- data/lib/hanami/cli/commands/project.rb +0 -421
- data/lib/hanami/cli/commands/routes.rb +0 -21
- data/lib/hanami/cli/commands/templates.rb +0 -31
- data/lib/hanami/cli/commands/version.rb +0 -19
- data/lib/hanami/common_logger.rb +0 -109
- data/lib/hanami/components/app/assets.rb +0 -59
- data/lib/hanami/components/app/controller.rb +0 -74
- data/lib/hanami/components/app/routes.rb +0 -59
- data/lib/hanami/components/app/view.rb +0 -44
- data/lib/hanami/components/component.rb +0 -182
- data/lib/hanami/components/components.rb +0 -479
- data/lib/hanami/components/routes_inspector.rb +0 -72
- data/lib/hanami/components.rb +0 -156
- data/lib/hanami/config/cookies.rb +0 -69
- data/lib/hanami/config/framework_configuration.rb +0 -43
- data/lib/hanami/config/load_paths.rb +0 -46
- data/lib/hanami/config/mapper.rb +0 -47
- data/lib/hanami/config/routes.rb +0 -20
- data/lib/hanami/config/security.rb +0 -110
- data/lib/hanami/config/sessions.rb +0 -119
- data/lib/hanami/configuration/app.rb +0 -21
- data/lib/hanami/early_hints.rb +0 -129
- data/lib/hanami/env.rb +0 -69
- data/lib/hanami/environment.rb +0 -541
- data/lib/hanami/environment_application_configurations.rb +0 -37
- data/lib/hanami/hanamirc.rb +0 -169
- data/lib/hanami/mailer/glue.rb +0 -27
- data/lib/hanami/middleware_stack.rb +0 -172
- data/lib/hanami/rake_helper.rb +0 -78
- data/lib/hanami/rake_tasks.rb +0 -3
- data/lib/hanami/rendering_policy.rb +0 -94
- data/lib/hanami/routing/default.rb +0 -32
- data/lib/hanami/setup.rb +0 -3
- data/lib/hanami/static.rb +0 -63
- data/lib/hanami/templates/default.html.erb +0 -30
- data/lib/hanami/templates/welcome.html.erb +0 -52
- data/lib/hanami/views/default.rb +0 -37
- data/lib/hanami/views/default_template_finder.rb +0 -22
- data/lib/hanami/views/null_view.rb +0 -15
- 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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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-
|
|
56
|
+
name: hanami-cli
|
|
83
57
|
requirement: !ruby/object:Gem::Requirement
|
|
84
58
|
requirements:
|
|
85
59
|
- - "~>"
|
|
86
60
|
- !ruby/object:Gem::Version
|
|
87
|
-
version:
|
|
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:
|
|
68
|
+
version: 1.0.alpha
|
|
95
69
|
- !ruby/object:Gem::Dependency
|
|
96
|
-
name:
|
|
70
|
+
name: dry-system
|
|
97
71
|
requirement: !ruby/object:Gem::Requirement
|
|
98
72
|
requirements:
|
|
99
73
|
- - "~>"
|
|
100
74
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: '
|
|
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: '
|
|
82
|
+
version: '0.10'
|
|
109
83
|
- !ruby/object:Gem::Dependency
|
|
110
|
-
name:
|
|
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
|
|
116
|
-
|
|
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:
|
|
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.
|
|
151
|
-
-
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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: '
|
|
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: '
|
|
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/
|
|
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/
|
|
187
|
+
- lib/hanami/configuration/cookies.rb
|
|
366
188
|
- lib/hanami/configuration/middleware.rb
|
|
367
|
-
- lib/hanami/
|
|
368
|
-
- lib/hanami/
|
|
369
|
-
- lib/hanami/
|
|
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.
|
|
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:
|
|
214
|
+
version: 1.3.1
|
|
412
215
|
requirements: []
|
|
413
|
-
rubygems_version: 3.
|
|
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
|