feat: add option to disable continue screen

This commit is contained in:
Stavros
2025-01-24 18:16:23 +02:00
parent 085b1492cc
commit c59aaa5600
6 changed files with 87 additions and 60 deletions

View File

@@ -92,6 +92,7 @@ var rootCmd = &cobra.Command{
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())
}

View File

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

View File

@@ -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 {
@@ -51,6 +52,7 @@ type APIConfig struct {
Secret string
AppURL string
CookieSecure bool
DisableContinue bool
}
type OAuthConfig struct {

View File

@@ -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 <Navigate to="/login" />;
}
if (disableContinue && redirectUri !== "null") {
window.location.replace(redirectUri!);
}
const redirect = () => {
notifications.show({
title: "Redirecting",

View File

@@ -96,6 +96,13 @@ export const LoginPage = () => {
<Layout>
<Title ta="center">Tinyauth</Title>
<Paper shadow="md" p="xl" mt={30} radius="md" withBorder>
{configuredProviders.length === 0 && (
<Text size="lg" mb="md" fw={500} ta="center">
Welcome back, please login
</Text>
)}
{configuredProviders.length > 0 && (
<>
<Text size="lg" fw={500} ta="center">
Welcome back, login with
</Text>
@@ -104,7 +111,9 @@ export const LoginPage = () => {
<Grid.Col span="content">
<Button
radius="xl"
leftSection={<GoogleIcon style={{ width: 14, height: 14 }} />}
leftSection={
<GoogleIcon style={{ width: 14, height: 14 }} />
}
variant="default"
onClick={() => loginOAuthMutation.mutate("google")}
loading={loginOAuthMutation.isLoading}
@@ -117,7 +126,9 @@ export const LoginPage = () => {
<Grid.Col span="content">
<Button
radius="xl"
leftSection={<GithubIcon style={{ width: 14, height: 14 }} />}
leftSection={
<GithubIcon style={{ width: 14, height: 14 }} />
}
variant="default"
onClick={() => loginOAuthMutation.mutate("github")}
loading={loginOAuthMutation.isLoading}
@@ -130,7 +141,9 @@ export const LoginPage = () => {
<Grid.Col span="content">
<Button
radius="xl"
leftSection={<OAuthIcon style={{ width: 14, height: 14 }} />}
leftSection={
<OAuthIcon style={{ width: 14, height: 14 }} />
}
variant="default"
onClick={() => loginOAuthMutation.mutate("generic")}
loading={loginOAuthMutation.isLoading}
@@ -145,6 +158,8 @@ export const LoginPage = () => {
labelPosition="center"
my="lg"
/>
</>
)}
<form onSubmit={form.onSubmit(handleSubmit)}>
<TextInput
label="Email"

View File

@@ -6,6 +6,7 @@ export const userContextSchema = z.object({
oauth: z.boolean(),
provider: z.string(),
configuredProviders: z.array(z.string()),
disableContinue: z.boolean(),
});
export type UserContextSchemaType = z.infer<typeof userContextSchema>;