deploy: accept FieldLens desktop device-auth client
Some checks failed
CI / verify (push) Has been cancelled
CI / print-rust (push) Has been cancelled

This commit is contained in:
Admin 2026-09-24 18:37:59 +00:00
parent 984f54e3c1
commit f3d8db52d2
2 changed files with 15 additions and 3 deletions

View File

@ -33,7 +33,7 @@ export function rolesFromPayload(payload: JWTPayload) {
return [...new Set([
...strings(resourceAccess?.[config.audience]?.roles),
...strings(resourceAccess?.[config.browserClientId]?.roles),
...strings(resourceAccess?.[config.desktopClientId]?.roles),
...config.desktopClientIds.flatMap((clientId) => strings(resourceAccess?.[clientId]?.roles)),
...strings(resourceAccess?.[config.machineClientId]?.roles),
])]
}
@ -48,7 +48,7 @@ function intendedForFieldLens(payload: JWTPayload) {
const azp = typeof payload.azp === 'string' ? payload.azp : ''
return audience.includes(config.audience)
|| azp === config.browserClientId
|| azp === config.desktopClientId
|| config.desktopClientIds.includes(azp)
|| azp === config.machineClientId
}

View File

@ -4,6 +4,14 @@ function required(name: string) {
return value
}
function list(name: string, fallback: string[]) {
const raw = process.env[name]?.trim()
if (!raw) return fallback
return [...new Set(raw.split(',').map((value) => value.trim()).filter(Boolean))]
}
const desktopClientId = process.env.KEYCLOAK_DESKTOP_CLIENT_ID?.trim() || 'fieldlens-print'
export const config = {
port: Number(process.env.PORT ?? '3000'),
databaseUrl: required('DATABASE_URL'),
@ -11,7 +19,11 @@ export const config = {
jwksUri: (process.env.KEYCLOAK_JWKS_URI ?? '').trim(),
audience: process.env.KEYCLOAK_AUDIENCE?.trim() || 'fieldlens-api',
browserClientId: process.env.KEYCLOAK_BROWSER_CLIENT_ID?.trim() || 'fieldlens',
desktopClientId: process.env.KEYCLOAK_DESKTOP_CLIENT_ID?.trim() || 'fieldlens-print',
desktopClientId,
desktopClientIds: list('KEYCLOAK_DESKTOP_CLIENT_IDS', [
desktopClientId,
'fieldlens-print-desktop',
]),
machineClientId: process.env.KEYCLOAK_MACHINE_CLIENT_ID?.trim() || 'fieldlens-integration',
tenantId: process.env.FIELDLENS_TENANT_ID?.trim() || 'fieldlens-production',
environment: process.env.FIELDLENS_ENV?.trim() || 'development',