-
Notifications
You must be signed in to change notification settings - Fork 3
/
handler.go
85 lines (71 loc) · 2.84 KB
/
handler.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
package login
import (
"github.com/emicklei/go-restful/v3"
"github.com/gorilla/sessions"
"github.com/nrc-no/core/pkg/server/login/authrequest"
loginstore "github.com/nrc-no/core/pkg/server/login/store"
"github.com/nrc-no/core/pkg/store"
"github.com/ory/hydra-client-go/client/admin"
)
type Handler struct {
loginWs *restful.WebService
}
func NewHandler(
sessionStore sessions.Store,
orgStore store.OrganizationStore,
idpStore store.IdentityProviderStore,
loginStore loginstore.Interface,
hydraAdmin admin.ClientService,
) (*Handler, error) {
h := &Handler{}
requestActionHandler := handleAuthRequestAction(
sessionStore,
idpStore,
orgStore,
loginStore,
hydraAdmin,
)
loginWs := new(restful.WebService).Path("/login")
h.loginWs = loginWs
loginWs.Route(loginWs.GET("/identify").
Operation("login").
To(func(req *restful.Request, res *restful.Response) {
requestActionHandler(authrequest.EventRequestLogin, req.PathParameters(), req.Request.URL.Query())(res.ResponseWriter, req.Request)
}))
loginWs.Route(loginWs.POST("/identify").
Operation("provide_credentials").
To(func(req *restful.Request, res *restful.Response) {
requestActionHandler(authrequest.EventProvideIdentifier, req.PathParameters(), req.Request.URL.Query())(res.ResponseWriter, req.Request)
}))
loginWs.Route(loginWs.POST("/oidc/{identityProviderId}").
Operation("use_identity_provider").
To(func(req *restful.Request, res *restful.Response) {
requestActionHandler(authrequest.EventUseIdentityProvider, req.PathParameters(), req.Request.URL.Query())(res.ResponseWriter, req.Request)
}))
loginWs.Route(loginWs.GET("/oidc/callback").
Operation("call_oidc_callback").
To(func(req *restful.Request, res *restful.Response) {
requestActionHandler(authrequest.EventCallOidcCallback, req.PathParameters(), req.Request.URL.Query())(res.ResponseWriter, req.Request)
}))
loginWs.Route(loginWs.POST("/consent/approve").
Operation("approve_consent_request").
To(func(req *restful.Request, res *restful.Response) {
requestActionHandler(authrequest.EventApproveConsentChallenge, req.PathParameters(), req.Request.URL.Query())(res.ResponseWriter, req.Request)
}))
loginWs.Route(loginWs.POST("/consent/decline").
Operation("decline_consent_request").
To(func(req *restful.Request, res *restful.Response) {
requestActionHandler(authrequest.EventDeclineConsentChallenge, req.PathParameters(), req.Request.URL.Query())(res.ResponseWriter, req.Request)
}))
loginWs.Route(loginWs.GET("/consent").
Operation("receive_consent_request").
To(func(req *restful.Request, res *restful.Response) {
requestActionHandler(authrequest.EventReceiveConsentChallenge, req.PathParameters(), req.Request.URL.Query())(res.ResponseWriter, req.Request)
}))
return h, nil
}
func (h *Handler) WebServices() []*restful.WebService {
return []*restful.WebService{
h.loginWs,
}
}