refactor: users are not a requirement when using oauth

This commit is contained in:
Stavros
2025-01-26 20:45:34 +02:00
parent 08d382c981
commit a243f22ac8
5 changed files with 57 additions and 36 deletions

View File

@@ -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")

View File

@@ -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,
})
})

View File

@@ -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
}

View File

@@ -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 != "")
}

View File

@@ -153,40 +153,44 @@ export const LoginPage = () => {
</Grid.Col>
)}
</Grid>
<Divider
label="Or continue with password"
labelPosition="center"
my="lg"
/>
{configuredProviders.includes("username") && (
<Divider
label="Or continue with password"
labelPosition="center"
my="lg"
/>
)}
</>
)}
<form onSubmit={form.onSubmit(handleSubmit)}>
<TextInput
label="Username"
placeholder="user@example.com"
required
disabled={loginMutation.isLoading}
key={form.key("username")}
{...form.getInputProps("username")}
/>
<PasswordInput
label="Password"
placeholder="password"
required
mt="md"
disabled={loginMutation.isLoading}
key={form.key("password")}
{...form.getInputProps("password")}
/>
<Button
fullWidth
mt="xl"
type="submit"
loading={loginMutation.isLoading}
>
Login
</Button>
</form>
{configuredProviders.includes("username") && (
<form onSubmit={form.onSubmit(handleSubmit)}>
<TextInput
label="Username"
placeholder="user@example.com"
required
disabled={loginMutation.isLoading}
key={form.key("username")}
{...form.getInputProps("username")}
/>
<PasswordInput
label="Password"
placeholder="password"
required
mt="md"
disabled={loginMutation.isLoading}
key={form.key("password")}
{...form.getInputProps("password")}
/>
<Button
fullWidth
mt="xl"
type="submit"
loading={loginMutation.isLoading}
>
Login
</Button>
</form>
)}
</Paper>
</Layout>
);