Merge pull request #2969 from pR0Ps/feature/oidc-auto-login

Add option to automatically login using OIDC
This commit is contained in:
Georges-Antoine Assi
2026-01-31 23:01:29 -05:00
committed by GitHub
6 changed files with 18 additions and 2 deletions

View File

@@ -129,6 +129,7 @@ DISABLE_SETUP_WIZARD: Final[bool] = safe_str_to_bool(_get_env("DISABLE_SETUP_WIZ
# OIDC
OIDC_ENABLED: Final[bool] = safe_str_to_bool(_get_env("OIDC_ENABLED"))
OIDC_AUTOLOGIN: Final[bool] = safe_str_to_bool(_get_env("OIDC_AUTOLOGIN"))
OIDC_PROVIDER: Final[str] = _get_env("OIDC_PROVIDER", "")
OIDC_CLIENT_ID: Final[str] = _get_env("OIDC_CLIENT_ID", "")
OIDC_CLIENT_SECRET: Final[str] = _get_env("OIDC_CLIENT_SECRET", "")

View File

@@ -12,6 +12,7 @@ from config import (
ENABLE_SCHEDULED_UPDATE_LAUNCHBOX_METADATA,
ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB,
LIBRARY_BASE_PATH,
OIDC_AUTOLOGIN,
OIDC_ENABLED,
OIDC_PROVIDER,
SCHEDULED_CONVERT_IMAGES_TO_WEBP_CRON,
@@ -116,6 +117,7 @@ async def heartbeat() -> HeartbeatResponse:
},
"OIDC": {
"ENABLED": OIDC_ENABLED,
"AUTOLOGIN": OIDC_AUTOLOGIN,
"PROVIDER": OIDC_PROVIDER,
},
"TASKS": {

View File

@@ -38,6 +38,7 @@ class FrontendDict(TypedDict):
class OIDCDict(TypedDict):
ENABLED: bool
AUTOLOGIN: bool
PROVIDER: str

View File

@@ -4,6 +4,7 @@
/* eslint-disable */
export type OIDCDict = {
ENABLED: boolean;
AUTOLOGIN: boolean;
PROVIDER: string;
};

View File

@@ -45,6 +45,7 @@ const defaultHeartbeat: Heartbeat = {
},
OIDC: {
ENABLED: false,
AUTOLOGIN: false,
PROVIDER: "",
},
TASKS: {

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import type { Emitter } from "mitt";
import { inject, ref } from "vue";
import { inject, onMounted, ref } from "vue";
import { useI18n } from "vue-i18n";
import { useRouter } from "vue-router";
import { refetchCSRFToken } from "@/services/api";
@@ -20,7 +20,11 @@ const visiblePassword = ref(false);
const loggingIn = ref(false);
const loggingInOIDC = ref(false);
const {
OIDC: { ENABLED: oidcEnabled, PROVIDER: oidcProvider },
OIDC: {
ENABLED: oidcEnabled,
AUTOLOGIN: oidcAutologin,
PROVIDER: oidcProvider,
},
FRONTEND: { DISABLE_USERPASS_LOGIN: loginDisabled },
} = heartbeatStore.value;
const forgotMode = ref(false);
@@ -91,6 +95,12 @@ async function loginOIDC() {
loggingInOIDC.value = true;
window.open("/api/login/openid", "_self");
}
onMounted(async () => {
if (oidcEnabled && oidcAutologin) {
loginOIDC();
}
});
</script>
<template>