Allow nil CORS policy to be set to disable CORS middleware
This commit is contained in:
parent
cd3cb17b2c
commit
37e01449e0
2 changed files with 15 additions and 10 deletions
14
pkg/op/op.go
14
pkg/op/op.go
|
@ -98,13 +98,15 @@ type OpenIDProvider interface {
|
||||||
type HttpInterceptor func(http.Handler) http.Handler
|
type HttpInterceptor func(http.Handler) http.Handler
|
||||||
|
|
||||||
type corsOptioner interface {
|
type corsOptioner interface {
|
||||||
CORSOptions() cors.Options
|
CORSOptions() *cors.Options
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateRouter(o OpenIDProvider, interceptors ...HttpInterceptor) chi.Router {
|
func CreateRouter(o OpenIDProvider, interceptors ...HttpInterceptor) chi.Router {
|
||||||
router := chi.NewRouter()
|
router := chi.NewRouter()
|
||||||
if co, ok := o.(corsOptioner); ok {
|
if co, ok := o.(corsOptioner); ok {
|
||||||
router.Use(cors.New(co.CORSOptions()).Handler)
|
if opts := co.CORSOptions(); opts != nil {
|
||||||
|
router.Use(cors.New(*opts).Handler)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
router.Use(cors.New(defaultCORSOptions).Handler)
|
router.Use(cors.New(defaultCORSOptions).Handler)
|
||||||
}
|
}
|
||||||
|
@ -232,7 +234,7 @@ func NewProvider(config *Config, storage Storage, issuer func(insecure bool) (Is
|
||||||
storage: storage,
|
storage: storage,
|
||||||
endpoints: DefaultEndpoints,
|
endpoints: DefaultEndpoints,
|
||||||
timer: make(<-chan time.Time),
|
timer: make(<-chan time.Time),
|
||||||
corsOpts: defaultCORSOptions,
|
corsOpts: &defaultCORSOptions,
|
||||||
logger: slog.Default(),
|
logger: slog.Default(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +279,7 @@ type Provider struct {
|
||||||
timer <-chan time.Time
|
timer <-chan time.Time
|
||||||
accessTokenVerifierOpts []AccessTokenVerifierOpt
|
accessTokenVerifierOpts []AccessTokenVerifierOpt
|
||||||
idTokenHintVerifierOpts []IDTokenHintVerifierOpt
|
idTokenHintVerifierOpts []IDTokenHintVerifierOpt
|
||||||
corsOpts cors.Options
|
corsOpts *cors.Options
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,7 +439,7 @@ func (o *Provider) Probes() []ProbesFn {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Provider) CORSOptions() cors.Options {
|
func (o *Provider) CORSOptions() *cors.Options {
|
||||||
return o.corsOpts
|
return o.corsOpts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,7 +603,7 @@ func WithIDTokenHintVerifierOpts(opts ...IDTokenHintVerifierOpt) Option {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func WithCORSOptions(opts cors.Options) Option {
|
func WithCORSOptions(opts *cors.Options) Option {
|
||||||
return func(o *Provider) error {
|
return func(o *Provider) error {
|
||||||
o.corsOpts = opts
|
o.corsOpts = opts
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -29,7 +29,7 @@ func RegisterServer(server Server, endpoints Endpoints, options ...ServerOption)
|
||||||
server: server,
|
server: server,
|
||||||
endpoints: endpoints,
|
endpoints: endpoints,
|
||||||
decoder: decoder,
|
decoder: decoder,
|
||||||
corsOpts: defaultCORSOptions,
|
corsOpts: &defaultCORSOptions,
|
||||||
logger: slog.Default(),
|
logger: slog.Default(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,10 @@ func RegisterServer(server Server, endpoints Endpoints, options ...ServerOption)
|
||||||
}
|
}
|
||||||
|
|
||||||
ws.createRouter()
|
ws.createRouter()
|
||||||
return cors.New(ws.corsOpts).Handler(ws)
|
if ws.corsOpts != nil {
|
||||||
|
return cors.New(*ws.corsOpts).Handler(ws)
|
||||||
|
}
|
||||||
|
return ws
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServerOption func(s *webServer)
|
type ServerOption func(s *webServer)
|
||||||
|
@ -67,7 +70,7 @@ func WithDecoder(decoder httphelper.Decoder) ServerOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithServerCORSOptions sets the CORS policy for the Server's router.
|
// WithServerCORSOptions sets the CORS policy for the Server's router.
|
||||||
func WithServerCORSOptions(opts cors.Options) ServerOption {
|
func WithServerCORSOptions(opts *cors.Options) ServerOption {
|
||||||
return func(s *webServer) {
|
return func(s *webServer) {
|
||||||
s.corsOpts = opts
|
s.corsOpts = opts
|
||||||
}
|
}
|
||||||
|
@ -87,7 +90,7 @@ type webServer struct {
|
||||||
router *chi.Mux
|
router *chi.Mux
|
||||||
endpoints Endpoints
|
endpoints Endpoints
|
||||||
decoder httphelper.Decoder
|
decoder httphelper.Decoder
|
||||||
corsOpts cors.Options
|
corsOpts *cors.Options
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue