feat(jellyfin): move auth to env and stored session

This commit is contained in:
2026-02-20 20:37:21 -08:00
parent d6676f7132
commit 8ac3d517fe
26 changed files with 336 additions and 132 deletions

View File

@@ -1,24 +1,37 @@
export function createGetResolvedJellyfinConfigHandler(deps: {
getResolvedConfig: () => { jellyfin: unknown };
loadStoredToken: () => string | null | undefined;
loadStoredSession: () => { accessToken: string; userId: string } | null | undefined;
getEnv: (name: string) => string | undefined;
}) {
return () => {
const jellyfin = deps.getResolvedConfig().jellyfin as {
accessToken?: string;
userId?: string;
[key: string]: unknown;
};
const configToken = jellyfin.accessToken?.trim() ?? '';
if (configToken.length > 0) {
return jellyfin as never;
const envToken = deps.getEnv('SUBMINER_JELLYFIN_ACCESS_TOKEN')?.trim() ?? '';
const envUserId = deps.getEnv('SUBMINER_JELLYFIN_USER_ID')?.trim() ?? '';
const stored = deps.loadStoredSession();
const storedToken = stored?.accessToken?.trim() ?? '';
const storedUserId = stored?.userId?.trim() ?? '';
if (envToken.length > 0) {
return {
...jellyfin,
accessToken: envToken,
userId: envUserId || storedUserId || '',
} as never;
}
const storedToken = deps.loadStoredToken()?.trim() ?? '';
if (storedToken.length === 0) {
return jellyfin as never;
if (storedToken.length > 0 && storedUserId.length > 0) {
return {
...jellyfin,
accessToken: storedToken,
userId: storedUserId,
} as never;
}
return {
...jellyfin,
accessToken: storedToken,
} as never;
return jellyfin as never;
};
}