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") && (
-
- }
- variant="default"
- onClick={() => loginOAuthMutation.mutate("google")}
- loading={loginOAuthMutation.isLoading}
- >
- Google
-
-
- )}
- {configuredProviders.includes("github") && (
-
- }
- variant="default"
- onClick={() => loginOAuthMutation.mutate("github")}
- loading={loginOAuthMutation.isLoading}
- >
- Github
-
-
- )}
- {configuredProviders.includes("generic") && (
-
- }
- variant="default"
- onClick={() => loginOAuthMutation.mutate("generic")}
- loading={loginOAuthMutation.isLoading}
- >
- Generic
-
-
- )}
-
-
+ {configuredProviders.length === 0 && (
+
+ Welcome back, please login
+
+ )}
+ {configuredProviders.length > 0 && (
+ <>
+
+ Welcome back, login with
+
+
+ {configuredProviders.includes("google") && (
+
+
+ }
+ variant="default"
+ onClick={() => loginOAuthMutation.mutate("google")}
+ loading={loginOAuthMutation.isLoading}
+ >
+ Google
+
+
+ )}
+ {configuredProviders.includes("github") && (
+
+
+ }
+ variant="default"
+ onClick={() => loginOAuthMutation.mutate("github")}
+ loading={loginOAuthMutation.isLoading}
+ >
+ Github
+
+
+ )}
+ {configuredProviders.includes("generic") && (
+
+
+ }
+ variant="default"
+ onClick={() => loginOAuthMutation.mutate("generic")}
+ loading={loginOAuthMutation.isLoading}
+ >
+ Generic
+
+
+ )}
+
+
+ >
+ )}