mirror of
https://github.com/rommapp/romm.git
synced 2026-03-03 02:27:00 +00:00
Merge pull request #2969 from pR0Ps/feature/oidc-auto-login
Add option to automatically login using OIDC
This commit is contained in:
@@ -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", "")
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -38,6 +38,7 @@ class FrontendDict(TypedDict):
|
||||
|
||||
class OIDCDict(TypedDict):
|
||||
ENABLED: bool
|
||||
AUTOLOGIN: bool
|
||||
PROVIDER: str
|
||||
|
||||
|
||||
|
||||
1
frontend/src/__generated__/models/OIDCDict.ts
generated
1
frontend/src/__generated__/models/OIDCDict.ts
generated
@@ -4,6 +4,7 @@
|
||||
/* eslint-disable */
|
||||
export type OIDCDict = {
|
||||
ENABLED: boolean;
|
||||
AUTOLOGIN: boolean;
|
||||
PROVIDER: string;
|
||||
};
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ const defaultHeartbeat: Heartbeat = {
|
||||
},
|
||||
OIDC: {
|
||||
ENABLED: false,
|
||||
AUTOLOGIN: false,
|
||||
PROVIDER: "",
|
||||
},
|
||||
TASKS: {
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user