Summary
Move each login provider into its own package under pkg/kiosk/login/ to isolate them and provide a clear template for adding new providers.
Motivation
With the browser.Browser interface in place (#257), login providers now have clean dependency boundaries:
- Each depends on
browser.Browser (interface)
- Each depends on shared config types
- No provider depends on another
This makes a package-per-provider layout natural and useful.
Proposed Structure
pkg/kiosk/login/
anonymous/
anonymous.go
anonymous_test.go
local/
local.go
local_test.go
gcom/
gcom.go
goauth/
goauth.go
idtoken/
idtoken.go
apikey/
apikey.go
aws/
aws.go
azuread/
azuread.go
Shared utilities (GenerateURL, generateExecutorOptions, cycleWindowState, etc.) stay in pkg/kiosk/.
Benefits
- Each provider is isolated and testable independently
- New providers can be created by duplicating an existing directory as a template
- Clear ownership boundaries per login method
- Easier to review and maintain individual providers
Context
Summary
Move each login provider into its own package under
pkg/kiosk/login/to isolate them and provide a clear template for adding new providers.Motivation
With the
browser.Browserinterface in place (#257), login providers now have clean dependency boundaries:browser.Browser(interface)This makes a package-per-provider layout natural and useful.
Proposed Structure
Shared utilities (
GenerateURL,generateExecutorOptions,cycleWindowState, etc.) stay inpkg/kiosk/.Benefits
Context
browser.Browserpkg/kiosk/config/package to avoid circular imports