...
1
21
22 package fosite
23
24 import (
25 "context"
26 "net/http"
27 "net/url"
28
29 "github.com/ory/x/errorsx"
30 )
31
32 func (f *Fosite) NewAuthorizeResponse(ctx context.Context, ar AuthorizeRequester, session Session) (AuthorizeResponder, error) {
33 var resp = &AuthorizeResponse{
34 Header: http.Header{},
35 Parameters: url.Values{},
36 }
37
38 ctx = context.WithValue(ctx, AuthorizeRequestContextKey, ar)
39 ctx = context.WithValue(ctx, AuthorizeResponseContextKey, resp)
40
41 ar.SetSession(session)
42 for _, h := range f.AuthorizeEndpointHandlers {
43 if err := h.HandleAuthorizeEndpointRequest(ctx, ar, resp); err != nil {
44 return nil, err
45 }
46 }
47
48 if !ar.DidHandleAllResponseTypes() {
49 return nil, errorsx.WithStack(ErrUnsupportedResponseType)
50 }
51
52 if ar.GetDefaultResponseMode() == ResponseModeFragment && ar.GetResponseMode() == ResponseModeQuery {
53 return nil, ErrUnsupportedResponseMode.WithHintf("Insecure response_mode '%s' for the response_type '%s'.", ar.GetResponseMode(), ar.GetResponseTypes())
54 }
55
56 return resp, nil
57 }
58
View as plain text