-
-
Notifications
You must be signed in to change notification settings - Fork 930
/
registry.go
138 lines (103 loc) · 3.1 KB
/
registry.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package driver
import (
"github.com/gorilla/sessions"
"github.com/pkg/errors"
"github.com/ory/x/logrusx"
"github.com/ory/kratos/continuity"
"github.com/ory/kratos/courier"
"github.com/ory/kratos/hash"
"github.com/ory/kratos/schema"
"github.com/ory/kratos/selfservice/flow/recovery"
"github.com/ory/kratos/selfservice/flow/settings"
"github.com/ory/kratos/selfservice/flow/verify"
"github.com/ory/x/healthx"
"github.com/ory/kratos/persistence"
"github.com/ory/kratos/selfservice/flow/login"
"github.com/ory/kratos/selfservice/flow/logout"
"github.com/ory/kratos/selfservice/flow/registration"
"github.com/ory/kratos/x"
"github.com/ory/x/dbal"
"github.com/ory/kratos/driver/configuration"
"github.com/ory/kratos/identity"
"github.com/ory/kratos/selfservice/errorx"
password2 "github.com/ory/kratos/selfservice/strategy/password"
"github.com/ory/kratos/session"
)
type Registry interface {
dbal.Driver
Init() error
WithConfig(c configuration.Provider) Registry
WithLogger(l *logrusx.Logger) Registry
BuildVersion() string
BuildDate() string
BuildHash() string
WithBuildInfo(version, hash, date string) Registry
WithCSRFHandler(c x.CSRFHandler)
WithCSRFTokenGenerator(cg x.CSRFToken)
HealthHandler() *healthx.Handler
CookieManager() sessions.Store
RegisterRoutes(public *x.RouterPublic, admin *x.RouterAdmin)
RegisterPublicRoutes(public *x.RouterPublic)
RegisterAdminRoutes(admin *x.RouterAdmin)
x.CSRFProvider
x.WriterProvider
x.LoggingProvider
continuity.ManagementProvider
continuity.PersistenceProvider
courier.Provider
persistence.Provider
errorx.ManagementProvider
errorx.HandlerProvider
errorx.PersistenceProvider
hash.HashProvider
identity.HandlerProvider
identity.ValidationProvider
identity.PoolProvider
identity.PrivilegedPoolProvider
identity.ManagementProvider
identity.ActiveCredentialsCounterStrategyProvider
schema.HandlerProvider
password2.ValidationProvider
session.HandlerProvider
session.ManagementProvider
session.PersistenceProvider
settings.HandlerProvider
settings.ErrorHandlerProvider
settings.RequestPersistenceProvider
settings.StrategyProvider
login.RequestPersistenceProvider
login.ErrorHandlerProvider
login.HooksProvider
login.HookExecutorProvider
login.HandlerProvider
login.StrategyProvider
logout.HandlerProvider
registration.RequestPersistenceProvider
registration.ErrorHandlerProvider
registration.HooksProvider
registration.HookExecutorProvider
registration.HandlerProvider
registration.StrategyProvider
verify.PersistenceProvider
verify.ErrorHandlerProvider
verify.SenderProvider
verify.HandlerProvider
recovery.RequestPersistenceProvider
recovery.ErrorHandlerProvider
recovery.StrategyProvider
recovery.HandlerProvider
recovery.StrategyProvider
x.CSRFTokenGeneratorProvider
}
func NewRegistry(c configuration.Provider) (Registry, error) {
dsn := c.DSN()
driver, err := dbal.GetDriverFor(dsn)
if err != nil {
return nil, errors.WithStack(err)
}
registry, ok := driver.(Registry)
if !ok {
return nil, errors.Errorf("driver of type %T does not implement interface Registry", driver)
}
return registry, nil
}