From c59aaa56004080b8d35e9fb75cf81c82617e3c13 Mon Sep 17 00:00:00 2001 From: Stavros Date: Fri, 24 Jan 2025 18:16:23 +0200 Subject: [PATCH] feat: add option to disable continue screen --- cmd/root.go | 13 +-- internal/api/api.go | 2 + internal/types/types.go | 12 +-- site/src/pages/continue-page.tsx | 6 +- site/src/pages/login-page.tsx | 113 ++++++++++++++---------- site/src/schemas/user-context-schema.ts | 1 + 6 files changed, 87 insertions(+), 60 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index c0ba144..81b0d59 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -87,11 +87,12 @@ var rootCmd = &cobra.Command{ // Create API api := api.NewAPI(types.APIConfig{ - Port: config.Port, - Address: config.Address, - Secret: config.Secret, - AppURL: config.AppURL, - CookieSecure: config.CookieSecure, + Port: config.Port, + Address: config.Address, + Secret: config.Secret, + AppURL: config.AppURL, + CookieSecure: config.CookieSecure, + DisableContinue: config.DisableContinue, }, hooks, auth, providers) // Setup routes @@ -138,6 +139,7 @@ func init() { rootCmd.Flags().String("generic-auth-url", "", "Generic OAuth auth URL.") rootCmd.Flags().String("generic-token-url", "", "Generic OAuth token URL.") rootCmd.Flags().String("generic-user-info-url", "", "Generic OAuth user info URL.") + rootCmd.Flags().Bool("disable-continue", false, "Disable continue screen and redirect to app directly.") viper.BindEnv("port", "PORT") viper.BindEnv("address", "ADDRESS") viper.BindEnv("secret", "SECRET") @@ -155,5 +157,6 @@ func init() { viper.BindEnv("generic-auth-url", "GENERIC_AUTH_URL") viper.BindEnv("generic-token-url", "GENERIC_TOKEN_URL") viper.BindEnv("generic-user-info-url", "GENERIC_USER_INFO_URL") + viper.BindEnv("disable-continue", "DISABLE_CONTINUE") viper.BindPFlags(rootCmd.Flags()) } diff --git a/internal/api/api.go b/internal/api/api.go index 86f77c1..c764d73 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -208,6 +208,7 @@ func (api *API) SetupRoutes() { "oauth": false, "provider": "", "configuredProviders": api.Providers.GetConfiguredProviders(), + "disableContinue": api.Config.DisableContinue, }) return } @@ -220,6 +221,7 @@ func (api *API) SetupRoutes() { "oauth": userContext.OAuth, "provider": userContext.Provider, "configuredProviders": api.Providers.GetConfiguredProviders(), + "disableContinue": api.Config.DisableContinue, }) }) diff --git a/internal/types/types.go b/internal/types/types.go index f6a3adb..00e65e0 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -36,6 +36,7 @@ type Config struct { GenericAuthURL string `mapstructure:"generic-auth-url"` GenericTokenURL string `mapstructure:"generic-token-url"` GenericUserInfoURL string `mapstructure:"generic-user-info-url"` + DisableContinue bool `mapstructure:"disable-continue"` } type UserContext struct { @@ -46,11 +47,12 @@ type UserContext struct { } type APIConfig struct { - Port int - Address string - Secret string - AppURL string - CookieSecure bool + Port int + Address string + Secret string + AppURL string + CookieSecure bool + DisableContinue bool } type OAuthConfig struct { diff --git a/site/src/pages/continue-page.tsx b/site/src/pages/continue-page.tsx index 1101b9b..e07cae3 100644 --- a/site/src/pages/continue-page.tsx +++ b/site/src/pages/continue-page.tsx @@ -9,12 +9,16 @@ export const ContinuePage = () => { const params = new URLSearchParams(queryString); const redirectUri = params.get("redirect_uri"); - const { isLoggedIn } = useUserContext(); + const { isLoggedIn, disableContinue } = useUserContext(); if (!isLoggedIn) { return ; } + if (disableContinue && redirectUri !== "null") { + window.location.replace(redirectUri!); + } + const redirect = () => { notifications.show({ title: "Redirecting", diff --git a/site/src/pages/login-page.tsx b/site/src/pages/login-page.tsx index 6000d4e..a84bdee 100644 --- a/site/src/pages/login-page.tsx +++ b/site/src/pages/login-page.tsx @@ -96,55 +96,70 @@ export const LoginPage = () => { Tinyauth - - Welcome back, login with - - - {configuredProviders.includes("google") && ( - - - - )} - {configuredProviders.includes("github") && ( - - - - )} - {configuredProviders.includes("generic") && ( - - - - )} - - + {configuredProviders.length === 0 && ( + + Welcome back, please login + + )} + {configuredProviders.length > 0 && ( + <> + + Welcome back, login with + + + {configuredProviders.includes("google") && ( + + + + )} + {configuredProviders.includes("github") && ( + + + + )} + {configuredProviders.includes("generic") && ( + + + + )} + + + + )}
;