-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmodule.go
41 lines (34 loc) · 1.13 KB
/
module.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package csrf
import (
"flamingo.me/csrf/application"
"flamingo.me/csrf/interfaces"
"flamingo.me/csrf/interfaces/templatefunctions"
"flamingo.me/dingo"
"flamingo.me/flamingo/v3/framework/config"
"flamingo.me/flamingo/v3/framework/flamingo"
"flamingo.me/flamingo/v3/framework/web"
"flamingo.me/form/domain"
)
const csrfTTL = 900.0
// Module for core/csrfPreventionFilter
type Module struct {
All bool `inject:"config:csrf.all"`
}
// Configure DI
func (m *Module) Configure(injector *dingo.Injector) {
injector.Bind((*application.Service)(nil)).To(application.ServiceImpl{})
flamingo.BindTemplateFunc(injector, "csrfToken", new(templatefunctions.CsrfTokenFunc))
flamingo.BindTemplateFunc(injector, "csrfInput", new(templatefunctions.CsrfInputFunc))
injector.BindMap((*domain.FormExtension)(nil), "formExtension.csrfToken").To(interfaces.CsrfTokenFormExtension{})
if m.All {
injector.BindMulti((*web.Filter)(nil)).To(interfaces.CsrfFilter{})
}
}
// DefaultConfig for this module
func (m *Module) DefaultConfig() config.Map {
return config.Map{
"csrf.all": false,
"csrf.secret": "somethingSuperSecret",
"csrf.ttl": csrfTTL,
}
}