Skip to content

Commit

Permalink
refactor: generate and unification (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
james-d-elliott authored Dec 22, 2023
1 parent 22c6e98 commit cc8d947
Show file tree
Hide file tree
Showing 34 changed files with 89 additions and 61 deletions.
2 changes: 1 addition & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ linters-settings:
godot:
check-all: true
goimports:
local-prefixes: github.com/authelia/oauth2
local-prefixes: authelia.com/provider/oauth2
revive:
confidence: 0.8

Expand Down
20 changes: 10 additions & 10 deletions authorize_response_writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,29 @@ import (
"authelia.com/provider/oauth2/internal/errorsx"
)

func (f *Fosite) NewAuthorizeResponse(ctx context.Context, ar AuthorizeRequester, session Session) (AuthorizeResponder, error) {
var resp = &AuthorizeResponse{
func (f *Fosite) NewAuthorizeResponse(ctx context.Context, requester AuthorizeRequester, session Session) (responder AuthorizeResponder, err error) {
var response = &AuthorizeResponse{
Header: http.Header{},
Parameters: url.Values{},
}

ctx = context.WithValue(ctx, AuthorizeRequestContextKey, ar)
ctx = context.WithValue(ctx, AuthorizeResponseContextKey, resp)
ctx = context.WithValue(ctx, AuthorizeRequestContextKey, requester)
ctx = context.WithValue(ctx, AuthorizeResponseContextKey, response)

ar.SetSession(session)
requester.SetSession(session)
for _, h := range f.Config.GetAuthorizeEndpointHandlers(ctx) {
if err := h.HandleAuthorizeEndpointRequest(ctx, ar, resp); err != nil {
if err = h.HandleAuthorizeEndpointRequest(ctx, requester, response); err != nil {
return nil, err
}
}

if !ar.DidHandleAllResponseTypes() {
if !requester.DidHandleAllResponseTypes() {
return nil, errorsx.WithStack(ErrUnsupportedResponseType)
}

if ar.GetDefaultResponseMode() == ResponseModeFragment && ar.GetResponseMode() == ResponseModeQuery {
return nil, ErrUnsupportedResponseMode.WithHintf("Insecure response_mode '%s' for the response_type '%s'.", ar.GetResponseMode(), ar.GetResponseTypes())
if requester.GetDefaultResponseMode() == ResponseModeFragment && requester.GetResponseMode() == ResponseModeQuery {
return nil, ErrUnsupportedResponseMode.WithHintf("Insecure response_mode '%s' for the response_type '%s'.", requester.GetResponseMode(), requester.GetResponseTypes())
}

return resp, nil
return response, nil
}
56 changes: 28 additions & 28 deletions generate-mocks.sh
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
#!/bin/bash

mockgen -package internal -destination internal/hash.go github.com/authelia/oauth2 Hasher
mockgen -package internal -destination internal/storage.go github.com/authelia/oauth2 Storage
mockgen -package internal -destination internal/transactional.go github.com/authelia/oauth2/storage Transactional
mockgen -package internal -destination internal/oauth2_storage.go github.com/authelia/oauth2/handler/oauth2 CoreStorage
mockgen -package internal -destination internal/oauth2_strategy.go github.com/authelia/oauth2/handler/oauth2 CoreStrategy
mockgen -package internal -destination internal/authorize_code_storage.go github.com/authelia/oauth2/handler/oauth2 AuthorizeCodeStorage
mockgen -package internal -destination internal/oauth2_auth_jwt_storage.go github.com/authelia/oauth2/handler/rfc7523 RFC7523KeyStorage
mockgen -package internal -destination internal/access_token_storage.go github.com/authelia/oauth2/handler/oauth2 AccessTokenStorage
mockgen -package internal -destination internal/refresh_token_strategy.go github.com/authelia/oauth2/handler/oauth2 RefreshTokenStorage
mockgen -package internal -destination internal/oauth2_client_storage.go github.com/authelia/oauth2/handler/oauth2 ClientCredentialsGrantStorage
mockgen -package internal -destination internal/oauth2_owner_storage.go github.com/authelia/oauth2/handler/oauth2 ResourceOwnerPasswordCredentialsGrantStorage
mockgen -package internal -destination internal/oauth2_revoke_storage.go github.com/authelia/oauth2/handler/oauth2 TokenRevocationStorage
mockgen -package internal -destination internal/openid_id_token_storage.go github.com/authelia/oauth2/handler/openid OpenIDConnectRequestStorage
mockgen -package internal -destination internal/access_token_strategy.go github.com/authelia/oauth2/handler/oauth2 AccessTokenStrategy
mockgen -package internal -destination internal/refresh_token_strategy.go github.com/authelia/oauth2/handler/oauth2 RefreshTokenStrategy
mockgen -package internal -destination internal/authorize_code_strategy.go github.com/authelia/oauth2/handler/oauth2 AuthorizeCodeStrategy
mockgen -package internal -destination internal/id_token_strategy.go github.com/authelia/oauth2/handler/openid OpenIDConnectTokenStrategy
mockgen -package internal -destination internal/pkce_storage_strategy.go github.com/authelia/oauth2/handler/pkce PKCERequestStorage
mockgen -package internal -destination internal/authorize_handler.go github.com/authelia/oauth2 AuthorizeEndpointHandler
mockgen -package internal -destination internal/revoke_handler.go github.com/authelia/oauth2 RevocationHandler
mockgen -package internal -destination internal/token_handler.go github.com/authelia/oauth2 TokenEndpointHandler
mockgen -package internal -destination internal/introspector.go github.com/authelia/oauth2 TokenIntrospector
mockgen -package internal -destination internal/client.go github.com/authelia/oauth2 Client
mockgen -package internal -destination internal/request.go github.com/authelia/oauth2 Requester
mockgen -package internal -destination internal/access_request.go github.com/authelia/oauth2 AccessRequester
mockgen -package internal -destination internal/access_response.go github.com/authelia/oauth2 AccessResponder
mockgen -package internal -destination internal/authorize_request.go github.com/authelia/oauth2 AuthorizeRequester
mockgen -package internal -destination internal/authorize_response.go github.com/authelia/oauth2 AuthorizeResponder
mockgen -package internal -destination internal/hash.go authelia.com/provider/oauth2 Hasher
mockgen -package internal -destination internal/storage.go authelia.com/provider/oauth2 Storage
mockgen -package internal -destination internal/transactional.go authelia.com/provider/oauth2/storage Transactional
mockgen -package internal -destination internal/oauth2_storage.go authelia.com/provider/oauth2/handler/oauth2 CoreStorage
mockgen -package internal -destination internal/oauth2_strategy.go authelia.com/provider/oauth2/handler/oauth2 CoreStrategy
mockgen -package internal -destination internal/authorize_code_storage.go authelia.com/provider/oauth2/handler/oauth2 AuthorizeCodeStorage
mockgen -package internal -destination internal/oauth2_auth_jwt_storage.go authelia.com/provider/oauth2/handler/rfc7523 RFC7523KeyStorage
mockgen -package internal -destination internal/access_token_storage.go authelia.com/provider/oauth2/handler/oauth2 AccessTokenStorage
mockgen -package internal -destination internal/refresh_token_strategy.go authelia.com/provider/oauth2/handler/oauth2 RefreshTokenStorage
mockgen -package internal -destination internal/oauth2_client_storage.go authelia.com/provider/oauth2/handler/oauth2 ClientCredentialsGrantStorage
mockgen -package internal -destination internal/oauth2_owner_storage.go authelia.com/provider/oauth2/handler/oauth2 ResourceOwnerPasswordCredentialsGrantStorage
mockgen -package internal -destination internal/oauth2_revoke_storage.go authelia.com/provider/oauth2/handler/oauth2 TokenRevocationStorage
mockgen -package internal -destination internal/openid_id_token_storage.go authelia.com/provider/oauth2/handler/openid OpenIDConnectRequestStorage
mockgen -package internal -destination internal/access_token_strategy.go authelia.com/provider/oauth2/handler/oauth2 AccessTokenStrategy
mockgen -package internal -destination internal/refresh_token_strategy.go authelia.com/provider/oauth2/handler/oauth2 RefreshTokenStrategy
mockgen -package internal -destination internal/authorize_code_strategy.go authelia.com/provider/oauth2/handler/oauth2 AuthorizeCodeStrategy
mockgen -package internal -destination internal/id_token_strategy.go authelia.com/provider/oauth2/handler/openid OpenIDConnectTokenStrategy
mockgen -package internal -destination internal/pkce_storage_strategy.go authelia.com/provider/oauth2/handler/pkce PKCERequestStorage
mockgen -package internal -destination internal/authorize_handler.go authelia.com/provider/oauth2 AuthorizeEndpointHandler
mockgen -package internal -destination internal/revoke_handler.go authelia.com/provider/oauth2 RevocationHandler
mockgen -package internal -destination internal/token_handler.go authelia.com/provider/oauth2 TokenEndpointHandler
mockgen -package internal -destination internal/introspector.go authelia.com/provider/oauth2 TokenIntrospector
mockgen -package internal -destination internal/client.go authelia.com/provider/oauth2 Client
mockgen -package internal -destination internal/request.go authelia.com/provider/oauth2 Requester
mockgen -package internal -destination internal/access_request.go authelia.com/provider/oauth2 AccessRequester
mockgen -package internal -destination internal/access_response.go authelia.com/provider/oauth2 AccessResponder
mockgen -package internal -destination internal/authorize_request.go authelia.com/provider/oauth2 AuthorizeRequester
mockgen -package internal -destination internal/authorize_response.go authelia.com/provider/oauth2 AuthorizeResponder

goimports -w internal/
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ require (
github.com/pkg/errors v0.9.1
github.com/stretchr/testify v1.8.4
github.com/tidwall/gjson v1.17.0
go.uber.org/mock v0.3.0
go.uber.org/mock v0.4.0
golang.org/x/crypto v0.17.0
golang.org/x/net v0.19.0
golang.org/x/oauth2 v0.15.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JT
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo=
go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
Expand Down
1 change: 1 addition & 0 deletions internal/access_request.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/access_response.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/access_token_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/access_token_strategy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/authorize_code_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/authorize_code_strategy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/authorize_handler.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/authorize_request.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/authorize_response.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/hash.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/id_token_strategy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/introspector.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/oauth2_auth_jwt_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/oauth2_client_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/oauth2_owner_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/oauth2_revoke_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/oauth2_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/oauth2_strategy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/openid_id_token_storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/pkce_storage_strategy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/refresh_token_strategy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/request.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/revoke_handler.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/storage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/token_handler.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/transactional.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions oauth2.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ type Provider interface {
// additional query parameters. The endpoint URI MUST NOT include a
// fragment component.
// * https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2.2 (everything MUST be implemented)
NewAuthorizeRequest(ctx context.Context, req *http.Request) (AuthorizeRequester, error)
NewAuthorizeRequest(ctx context.Context, r *http.Request) (AuthorizeRequester, error)

// NewAuthorizeResponse iterates through all response type handlers and returns their result or
// ErrUnsupportedResponseType if none of the handlers were able to handle it.
Expand Down Expand Up @@ -110,7 +110,7 @@ type Provider interface {
// * https://datatracker.ietf.org/doc/html/rfc6749#section-3.2.1 (everything)
//
// Furthermore the registered handlers should implement their specs accordingly.
NewAccessRequest(ctx context.Context, req *http.Request, session Session) (AccessRequester, error)
NewAccessRequest(ctx context.Context, r *http.Request, session Session) (AccessRequester, error)

// NewAccessResponse creates a new access response and validates that access_token and token_type are set.
//
Expand Down Expand Up @@ -162,13 +162,13 @@ type Provider interface {
NewPushedAuthorizeRequest(ctx context.Context, r *http.Request) (AuthorizeRequester, error)

// NewPushedAuthorizeResponse executes the handlers and builds the response
NewPushedAuthorizeResponse(ctx context.Context, ar AuthorizeRequester, session Session) (PushedAuthorizeResponder, error)
NewPushedAuthorizeResponse(ctx context.Context, requester AuthorizeRequester, session Session) (PushedAuthorizeResponder, error)

// WritePushedAuthorizeResponse writes the PAR response
WritePushedAuthorizeResponse(ctx context.Context, rw http.ResponseWriter, ar AuthorizeRequester, resp PushedAuthorizeResponder)
WritePushedAuthorizeResponse(ctx context.Context, rw http.ResponseWriter, requester AuthorizeRequester, responder PushedAuthorizeResponder)

// WritePushedAuthorizeError writes the PAR error
WritePushedAuthorizeError(ctx context.Context, rw http.ResponseWriter, ar AuthorizeRequester, err error)
WritePushedAuthorizeError(ctx context.Context, rw http.ResponseWriter, requester AuthorizeRequester, err error)
}

// IntrospectionResponder is the response object that will be returned when token introspection was successful,
Expand Down
Loading

0 comments on commit cc8d947

Please sign in to comment.