github.com/blend/go-sdk@v1.20240719.1/oauth/option.go (about) 1 /* 2 3 Copyright (c) 2024 - Present. Blend Labs, Inc. All rights reserved 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file. 5 6 */ 7 8 package oauth 9 10 import "golang.org/x/oauth2" 11 12 // Option is an option for oauth managers. 13 type Option func(*Manager) error 14 15 // ValidateJWTFunc is a function type for function that validates a JWT token. 16 type ValidateJWTFunc func(m *Manager, jwtClaims *GoogleClaims) error 17 18 // OptConfig sets managers attributes from config values 19 func OptConfig(cfg Config) Option { 20 return func(m *Manager) error { 21 secret, err := cfg.DecodeSecret() 22 if err != nil { 23 return err 24 } 25 m.Secret = secret 26 m.RedirectURL = cfg.RedirectURI 27 m.HostedDomain = cfg.HostedDomain 28 m.AllowedDomains = cfg.AllowedDomains 29 m.Scopes = cfg.ScopesOrDefault() 30 m.ClientID = cfg.ClientID 31 m.ClientSecret = cfg.ClientSecret 32 return nil 33 } 34 } 35 36 // OptClientID sets the manager cliendID. 37 func OptClientID(cliendID string) Option { 38 return func(m *Manager) error { 39 m.ClientID = cliendID 40 return nil 41 } 42 } 43 44 // OptClientSecret sets the manager clientSecret. 45 func OptClientSecret(clientSecret string) Option { 46 return func(m *Manager) error { 47 m.ClientSecret = clientSecret 48 return nil 49 } 50 } 51 52 // OptSecret sets the manager secret. 53 func OptSecret(secret []byte) Option { 54 return func(m *Manager) error { 55 m.Secret = secret 56 return nil 57 } 58 } 59 60 // OptRedirectURI sets the manager redirectURI. 61 func OptRedirectURI(redirectURI string) Option { 62 return func(m *Manager) error { 63 m.RedirectURL = redirectURI 64 return nil 65 } 66 } 67 68 // OptHostedDomain sets the manager hostedDomain. 69 func OptHostedDomain(hostedDomain string) Option { 70 return func(m *Manager) error { 71 m.HostedDomain = hostedDomain 72 return nil 73 } 74 } 75 76 // OptAllowedDomains sets the manager allowedDomains. 77 func OptAllowedDomains(allowedDomains ...string) Option { 78 return func(m *Manager) error { 79 m.AllowedDomains = allowedDomains 80 return nil 81 } 82 } 83 84 // OptScopes sets the manager scopes. 85 func OptScopes(scopes ...string) Option { 86 return func(m *Manager) error { 87 m.Scopes = scopes 88 return nil 89 } 90 } 91 92 // OptTracer sets the manager tracer. 93 func OptTracer(tracer Tracer) Option { 94 return func(m *Manager) error { 95 m.Tracer = tracer 96 return nil 97 } 98 } 99 100 // OptIssuer sets the manager issuer url (for Okta Oauth variant). 101 func OptIssuer(issuer string) Option { 102 return func(m *Manager) error { 103 m.Issuer = issuer 104 return nil 105 } 106 } 107 108 // OptValidateJWT sets the jwt token validator function. 109 func OptValidateJWT(validateJWT ValidateJWTFunc) Option { 110 return func(m *Manager) error { 111 m.ValidateJWT = validateJWT 112 return nil 113 } 114 } 115 116 // OptPublicKeyCache sets the manager public cache. 117 func OptPublicKeyCache(publicCache *PublicKeyCache) Option { 118 return func(m *Manager) error { 119 m.PublicKeyCache = publicCache 120 return nil 121 } 122 } 123 124 // OptEndpoint sets the manager public cache. 125 func OptEndpoint(endpoint *oauth2.Endpoint) Option { 126 return func(m *Manager) error { 127 m.Endpoint = *endpoint 128 return nil 129 } 130 }