package auth type DefaultAdmin struct { Provider string Email string } type Options struct { Providers []Provider DefaultAdmin *DefaultAdmin SessionName string } type OptionFunc func(opts *Options) func NewOptions(funcs ...OptionFunc) *Options { opts := &Options{ Providers: make([]Provider, 0), SessionName: "rkvst_auth", } for _, fn := range funcs { fn(opts) } return opts } func WithProviders(providers ...Provider) OptionFunc { return func(opts *Options) { opts.Providers = providers } } func WithDefaultAdmin(defaultAdmin DefaultAdmin) OptionFunc { return func(opts *Options) { opts.DefaultAdmin = &defaultAdmin } } func WithSessionName(sessionName string) OptionFunc { return func(opts *Options) { opts.SessionName = sessionName } }