From f57c6a572f2a560e8e006f6d0b37d2c6247eecbd Mon Sep 17 00:00:00 2001 From: Ellie Date: Fri, 20 Mar 2026 02:07:19 +0000 Subject: [PATCH] Fix using NXAPI_AUTH_CLIENT_ID from .env --- src/app/main/index.ts | 13 ++++++++----- src/cli.ts | 16 +++++++++++----- src/util/nxapi-auth.ts | 22 ++-------------------- 3 files changed, 21 insertions(+), 30 deletions(-) diff --git a/src/app/main/index.ts b/src/app/main/index.ts index 548f7d5..6211d69 100644 --- a/src/app/main/index.ts +++ b/src/app/main/index.ts @@ -19,10 +19,10 @@ import { CREDITS_NOTICE, GITLAB_URL, LICENCE_NOTICE } from '../../common/constan import { checkUpdates, UpdateCacheData } from '../../common/update.js'; import Users, { CoralUser } from '../../common/users.js'; import createDebug from '../../util/debug.js'; -import { dev, dir, git, release, version } from '../../util/product.js'; +import { dev, dir, embedded_nxapi_auth_app_client_id, git, release, version } from '../../util/product.js'; import { addUserAgent } from '../../util/useragent.js'; import { initStorage, paths } from '../../util/storage.js'; -import { ClientAssertionProvider, NXAPI_AUTH_APP_CLIENT_ID, NXAPI_AUTH_APP_SCOPE, setClientAssertionProvider } from '../../util/nxapi-auth.js'; +import { NxapiClientAssertionProvider, setClientAssertionProvider } from '../../util/nxapi-auth.js'; import createI18n, { languages } from '../i18n/index.js'; import { CoralApiInterface } from '../../api/coral.js'; import { StatusUpdateIdentifierSymbol, StatusUpdateMonitor, StatusUpdateNotify, StatusUpdateResult, StatusUpdateSubscriber } from '../../common/status.js'; @@ -175,9 +175,12 @@ export async function init() { initGlobals(); addUserAgent('nxapi-app (Chromium ' + process.versions.chrome + '; Electron ' + process.versions.electron + ')'); - if (NXAPI_AUTH_APP_CLIENT_ID) { - setClientAssertionProvider(new ClientAssertionProvider(NXAPI_AUTH_APP_CLIENT_ID, undefined, - NXAPI_AUTH_APP_SCOPE)); + if (embedded_nxapi_auth_app_client_id) { + setClientAssertionProvider(new NxapiClientAssertionProvider(embedded_nxapi_auth_app_client_id, undefined, + 'ca:gf ca:er ca:dr')); + } else if (process.env.NXAPI_AUTH_CLIENT_ID) { + setClientAssertionProvider(new NxapiClientAssertionProvider(process.env.NXAPI_AUTH_CLIENT_ID, undefined, + process.env.NXAPI_AUTH_SCOPE ?? 'ca:gf ca:er ca:dr')); } setAboutPanelOptions(); diff --git a/src/cli.ts b/src/cli.ts index f13f0e5..1dbf802 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -4,14 +4,14 @@ import { setGlobalDispatcher } from 'undici'; import * as commands from './cli/commands.js'; import { checkUpdates } from './common/update.js'; import createDebug from './util/debug.js'; -import { dev, product } from './util/product.js'; +import { dev, embedded_nxapi_auth_cli_client_id, pkg, product } from './util/product.js'; import { paths } from './util/storage.js'; import { YargsArguments } from './util/yargs.js'; import { addUserAgent } from './util/useragent.js'; import { USER_AGENT_INFO_URL } from './common/constants.js'; import { init as initGlobals } from './common/globals.js'; import { buildEnvironmentProxyAgent } from './util/undici-proxy.js'; -import { ClientAssertionProvider, NXAPI_AUTH_CLI_CLIENT_ID, NXAPI_AUTH_CLI_SCOPE, setClientAssertionProvider } from './util/nxapi-auth.js'; +import { NxapiClientAssertionProvider, setClientAssertionProvider } from './util/nxapi-auth.js'; const debug = createDebug('cli'); @@ -60,9 +60,15 @@ export async function main(argv = process.argv.slice(2)) { addUserAgent('unidentified-script'); } - if (NXAPI_AUTH_CLI_CLIENT_ID) { - setClientAssertionProvider(new ClientAssertionProvider(NXAPI_AUTH_CLI_CLIENT_ID, undefined, - NXAPI_AUTH_CLI_SCOPE)); + if (embedded_nxapi_auth_cli_client_id) { + setClientAssertionProvider(new NxapiClientAssertionProvider(embedded_nxapi_auth_cli_client_id, undefined, + 'ca:gf ca:er ca:dr ca:na')); + } else if (pkg.__nxapi_auth?.cli?.client_id) { + setClientAssertionProvider(new NxapiClientAssertionProvider(pkg.__nxapi_auth.cli.client_id, undefined, + 'ca:gf ca:er ca:dr ca:na')); + } else if (process.env.NXAPI_AUTH_CLIENT_ID) { + setClientAssertionProvider(new NxapiClientAssertionProvider(process.env.NXAPI_AUTH_CLIENT_ID, undefined, + process.env.NXAPI_AUTH_SCOPE ?? 'ca:gf ca:er ca:dr')); } const yargs = createYargs(argv); diff --git a/src/util/nxapi-auth.ts b/src/util/nxapi-auth.ts index 9c18fac..d2bb4ff 100644 --- a/src/util/nxapi-auth.ts +++ b/src/util/nxapi-auth.ts @@ -2,25 +2,6 @@ import { createHash } from 'node:crypto'; import { Jwt, JwtAlgorithm } from './jwt.js'; import { dev, embedded_nxapi_auth_app_client_id, embedded_nxapi_auth_cli_client_id, git, pkg, release } from './product.js'; -export const NXAPI_AUTH_CLI_CLIENT_ID = - embedded_nxapi_auth_cli_client_id ?? - (pkg.__nxapi_auth?.cli?.client_id as string | undefined) ?? - process.env.NXAPI_AUTH_CLIENT_ID ?? - null; -export const NXAPI_AUTH_CLI_SCOPE = - embedded_nxapi_auth_cli_client_id || pkg.__nxapi_auth?.cli?.client_id ? 'ca:gf ca:er ca:dr ca:na' : - process.env.NXAPI_AUTH_SCOPE ?? - 'ca:gf ca:er ca:dr'; - -export const NXAPI_AUTH_APP_CLIENT_ID = - embedded_nxapi_auth_app_client_id ?? - process.env.NXAPI_AUTH_CLIENT_ID ?? - null; -export const NXAPI_AUTH_APP_SCOPE = - embedded_nxapi_auth_app_client_id ? 'ca:gf ca:er ca:dr' : - process.env.NXAPI_AUTH_SCOPE ?? - 'ca:gf ca:er ca:dr'; - export let client_auth_provider: ClientAuthProviderInterface | null = null; export let client_assertion_provider: ClientAssertionProviderInterface | null = null; @@ -50,7 +31,8 @@ export interface ClientCredentialsInterface { scope: string; } -export class ClientAssertionProvider implements ClientAssertionProviderInterface { +/** @internal */ +export class NxapiClientAssertionProvider implements ClientAssertionProviderInterface { constructor( readonly client_id: string, // readonly iss = 'nxapi',