diff --git a/cmd/root.go b/cmd/root.go
index e08ecb8..2a2ea42 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -41,7 +41,10 @@ var rootCmd = &cobra.Command{
// Users
log.Info().Msg("Parsing users")
users, usersErr := utils.GetUsers(config.Users, config.UsersFile)
- HandleError(usersErr, "Failed to parse users")
+
+ if (len(users) == 0 || usersErr != nil) && !utils.OAuthConfigured(config) {
+ log.Fatal().Err(usersErr).Msg("Failed to parse users")
+ }
// Secrets
log.Info().Msg("Parsing secrets")
diff --git a/internal/api/api.go b/internal/api/api.go
index a7b94c2..b4456c0 100644
--- a/internal/api/api.go
+++ b/internal/api/api.go
@@ -194,6 +194,12 @@ func (api *API) SetupRoutes() {
log.Debug().Msg("Checking status")
userContext := api.Hooks.UseUserContext(c)
+ configuredProviders := api.Providers.GetConfiguredProviders()
+
+ if api.Auth.UserAuthConfigured() {
+ configuredProviders = append(configuredProviders, "username")
+ }
+
if !userContext.IsLoggedIn {
log.Debug().Msg("Unauthenticated")
c.JSON(200, gin.H{
@@ -203,13 +209,13 @@ func (api *API) SetupRoutes() {
"isLoggedIn": false,
"oauth": false,
"provider": "",
- "configuredProviders": api.Providers.GetConfiguredProviders(),
+ "configuredProviders": configuredProviders,
"disableContinue": api.Config.DisableContinue,
})
return
}
- log.Debug().Interface("userContext", userContext).Strs("configuredProviders", api.Providers.GetConfiguredProviders()).Bool("disableContinue", api.Config.DisableContinue).Msg("Authenticated")
+ log.Debug().Interface("userContext", userContext).Strs("configuredProviders", configuredProviders).Bool("disableContinue", api.Config.DisableContinue).Msg("Authenticated")
c.JSON(200, gin.H{
"status": 200,
@@ -218,7 +224,7 @@ func (api *API) SetupRoutes() {
"isLoggedIn": userContext.IsLoggedIn,
"oauth": userContext.OAuth,
"provider": userContext.Provider,
- "configuredProviders": api.Providers.GetConfiguredProviders(),
+ "configuredProviders": configuredProviders,
"disableContinue": api.Config.DisableContinue,
})
})
diff --git a/internal/auth/auth.go b/internal/auth/auth.go
index b466296..d87a7ef 100644
--- a/internal/auth/auth.go
+++ b/internal/auth/auth.go
@@ -88,3 +88,7 @@ func (auth *Auth) GetSessionCookie(c *gin.Context) (types.SessionCookie, error)
Provider: provider,
}, nil
}
+
+func (auth *Auth) UserAuthConfigured() bool {
+ return len(auth.Users) > 0
+}
diff --git a/internal/utils/utils.go b/internal/utils/utils.go
index e951107..f7d7336 100644
--- a/internal/utils/utils.go
+++ b/internal/utils/utils.go
@@ -129,3 +129,7 @@ func GetUsers(env string, file string) (types.Users, error) {
return ParseUsers(users)
}
+
+func OAuthConfigured(config types.Config) bool {
+ return (config.GithubClientId != "" && config.GithubClientSecret != "") || (config.GoogleClientId != "" && config.GoogleClientSecret != "") || (config.GenericClientId != "" && config.GenericClientSecret != "")
+}
diff --git a/site/src/pages/login-page.tsx b/site/src/pages/login-page.tsx
index 312afb6..3918890 100644
--- a/site/src/pages/login-page.tsx
+++ b/site/src/pages/login-page.tsx
@@ -153,40 +153,44 @@ export const LoginPage = () => {
)}
-