1
0
mirror of https://github.com/oauth2-proxy/oauth2-proxy.git synced 2025-04-17 12:06:35 +02:00

Setup provider.ErrNotImplemented sentinel error

This commit is contained in:
Nick Meves 2020-09-26 14:06:52 -07:00
parent add45c360c
commit 0bd8eb3191
No known key found for this signature in database
GPG Key ID: 93BA8A3CEDCDD1CF
2 changed files with 12 additions and 6 deletions

View File

@ -364,13 +364,13 @@ func (p *OAuthProxy) enrichSession(ctx context.Context, s *sessionsapi.SessionSt
var err error var err error
if s.Email == "" { if s.Email == "" {
s.Email, err = p.provider.GetEmailAddress(ctx, s) s.Email, err = p.provider.GetEmailAddress(ctx, s)
if err != nil && err.Error() != "not implemented" { if err != nil && !errors.Is(err, providers.ErrNotImplemented) {
return err return err
} }
} }
if s.User == "" { if s.User == "" {
s.User, err = p.provider.GetUserName(ctx, s) s.User, err = p.provider.GetUserName(ctx, s)
if err != nil && err.Error() != "not implemented" { if err != nil && !errors.Is(err, providers.ErrNotImplemented) {
return err return err
} }
} }

View File

@ -14,7 +14,13 @@ import (
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests" "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests"
) )
var _ Provider = (*ProviderData)(nil) var (
// ErrNotImplemented is returned when a provider did not override a default
// implementation method that doesn't have sensible defaults
ErrNotImplemented = errors.New("not implemented")
_ Provider = (*ProviderData)(nil)
)
// Redeem provides a default implementation of the OAuth2 token redemption process // Redeem provides a default implementation of the OAuth2 token redemption process
func (p *ProviderData) Redeem(ctx context.Context, redirectURL, code string) (s *sessions.SessionState, err error) { func (p *ProviderData) Redeem(ctx context.Context, redirectURL, code string) (s *sessions.SessionState, err error) {
@ -82,12 +88,12 @@ func (p *ProviderData) GetLoginURL(redirectURI, state string) string {
// GetEmailAddress returns the Account email address // GetEmailAddress returns the Account email address
func (p *ProviderData) GetEmailAddress(ctx context.Context, s *sessions.SessionState) (string, error) { func (p *ProviderData) GetEmailAddress(ctx context.Context, s *sessions.SessionState) (string, error) {
return "", errors.New("not implemented") return "", ErrNotImplemented
} }
// GetUserName returns the Account username // GetUserName returns the Account username
func (p *ProviderData) GetUserName(ctx context.Context, s *sessions.SessionState) (string, error) { func (p *ProviderData) GetUserName(ctx context.Context, s *sessions.SessionState) (string, error) {
return "", errors.New("not implemented") return "", ErrNotImplemented
} }
// ValidateGroup validates that the provided email exists in the configured provider // ValidateGroup validates that the provided email exists in the configured provider
@ -110,5 +116,5 @@ func (p *ProviderData) RefreshSessionIfNeeded(ctx context.Context, s *sessions.S
// CreateSessionStateFromBearerToken should be implemented to allow providers // CreateSessionStateFromBearerToken should be implemented to allow providers
// to convert ID tokens into sessions // to convert ID tokens into sessions
func (p *ProviderData) CreateSessionStateFromBearerToken(ctx context.Context, rawIDToken string, idToken *oidc.IDToken) (*sessions.SessionState, error) { func (p *ProviderData) CreateSessionStateFromBearerToken(ctx context.Context, rawIDToken string, idToken *oidc.IDToken) (*sessions.SessionState, error) {
return nil, errors.New("not implemented") return nil, ErrNotImplemented
} }