git.iko.soy/typeable/oauth2-proxy
on master help sign in
Setup provider.ErrNotImplemented sentinel error
0bd8eb3Nick Meves
oauthproxy.go+2−2
@@ -364,13 +364,13 @@ func (p *OAuthProxy) enrichSession(ctx context.Context, s *sessionsapi.SessionSt
364 var err error
364 var err error
365 if s.Email == "" {
365 if s.Email == "" {
366 s.Email, err = p.provider.GetEmailAddress(ctx, s)
366 s.Email, err = p.provider.GetEmailAddress(ctx, s)
367− if err != nil && err.Error() != "not implemented" {
367+ if err != nil && !errors.Is(err, providers.ErrNotImplemented) {
368 return err
368 return err
369 }
369 }
370 }
370 }
371 if s.User == "" {
371 if s.User == "" {
372 s.User, err = p.provider.GetUserName(ctx, s)
372 s.User, err = p.provider.GetUserName(ctx, s)
373− if err != nil && err.Error() != "not implemented" {
373+ if err != nil && !errors.Is(err, providers.ErrNotImplemented) {
374 return err
374 return err
375 }
375 }
376 }
376 }
providers/provider_default.go+10−4
@@ -14,7 +14,13 @@ import (
14 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests"
14 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests"
15)
15)
16
16
17+var (
18+ // ErrNotImplemented is returned when a provider did not override a default
19+ // implementation method that doesn't have sensible defaults
20+ ErrNotImplemented = errors.New("not implemented")
21+
17−var _ Provider = (*ProviderData)(nil)
22+ _ Provider = (*ProviderData)(nil)
23+)
18
24
19// Redeem provides a default implementation of the OAuth2 token redemption process
25// Redeem provides a default implementation of the OAuth2 token redemption process
20func (p *ProviderData) Redeem(ctx context.Context, redirectURL, code string) (s *sessions.SessionState, err error) {
26func (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 {
82
88
83// GetEmailAddress returns the Account email address
89// GetEmailAddress returns the Account email address
84func (p *ProviderData) GetEmailAddress(ctx context.Context, s *sessions.SessionState) (string, error) {
90func (p *ProviderData) GetEmailAddress(ctx context.Context, s *sessions.SessionState) (string, error) {
85− return "", errors.New("not implemented")
91+ return "", ErrNotImplemented
86}
92}
87
93
88// GetUserName returns the Account username
94// GetUserName returns the Account username
89func (p *ProviderData) GetUserName(ctx context.Context, s *sessions.SessionState) (string, error) {
95func (p *ProviderData) GetUserName(ctx context.Context, s *sessions.SessionState) (string, error) {
90− return "", errors.New("not implemented")
96+ return "", ErrNotImplemented
91}
97}
92
98
93// ValidateGroup validates that the provided email exists in the configured provider
99// 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
110// CreateSessionStateFromBearerToken should be implemented to allow providers
116// CreateSessionStateFromBearerToken should be implemented to allow providers
111// to convert ID tokens into sessions
117// to convert ID tokens into sessions
112func (p *ProviderData) CreateSessionStateFromBearerToken(ctx context.Context, rawIDToken string, idToken *oidc.IDToken) (*sessions.SessionState, error) {
118func (p *ProviderData) CreateSessionStateFromBearerToken(ctx context.Context, rawIDToken string, idToken *oidc.IDToken) (*sessions.SessionState, error) {
113− return nil, errors.New("not implemented")
119+ return nil, ErrNotImplemented
114}
120}