Ensure environment variables are validated as strings for fetch calls
All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 47s

This commit is contained in:
Sadrinho27 2025-09-16 10:54:23 +02:00
parent 7d102772d9
commit e6fd9192b1

View File

@ -3,51 +3,76 @@ import { IdNotUser, ECivility, EOfficeStatus, EIdnotRole } from '../../types';
export class IdNotService {
static async exchangeCodeForTokens(code: string) {
const {
IDNOT_CLIENT_ID,
IDNOT_CLIENT_SECRET,
IDNOT_REDIRECT_URI,
IDNOT_TOKEN_URL
} = process.env;
if (!IDNOT_CLIENT_ID || !IDNOT_CLIENT_SECRET || !IDNOT_REDIRECT_URI || !IDNOT_TOKEN_URL) {
throw new Error('Missing IDnot environment variables');
}
const params = {
client_id: process.env.IDNOT_CLIENT_ID,
client_secret: process.env.IDNOT_CLIENT_SECRET,
redirect_uri: process.env.IDNOT_REDIRECT_URI,
client_id: IDNOT_CLIENT_ID,
client_secret: IDNOT_CLIENT_SECRET,
redirect_uri: IDNOT_REDIRECT_URI,
grant_type: 'authorization_code',
code: code
code
};
const tokens = await (
await fetch(process.env.IDNOT_TOKEN_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams(params).toString()
})
).json();
const response = await fetch(IDNOT_TOKEN_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams(params).toString()
});
return tokens;
if (!response.ok) {
throw new Error(`Token exchange failed: ${response.status} ${response.statusText}`);
}
return response.json();
}
static async getUserRattachements(idNot: string) {
const { IDNOT_API_KEY, IDNOT_ANNUARY_BASE_URL } = process.env;
if (!IDNOT_API_KEY || !IDNOT_ANNUARY_BASE_URL) {
throw new Error('Missing IDnot API key or annuary base URL');
}
const searchParams = new URLSearchParams({
key: process.env.IDNOT_API_KEY || '',
key: IDNOT_API_KEY,
deleted: 'false'
});
const url = `${process.env.IDNOT_ANNUARY_BASE_URL}/api/pp/v2/personnes/${idNot}/rattachements?` + searchParams;
const url = `${IDNOT_ANNUARY_BASE_URL}/api/pp/v2/personnes/${idNot}/rattachements?${searchParams}`;
const json = await (
await fetch(url, {
method: 'GET'
})
).json();
const response = await fetch(url, { method: 'GET' });
return json;
if (!response.ok) {
throw new Error(`Failed to fetch rattachements: ${response.status} ${response.statusText}`);
}
return response.json();
}
static async getOfficeRattachements(idNot: string) {
const { IDNOT_API_KEY, IDNOT_ANNUARY_BASE_URL } = process.env;
if (!IDNOT_API_KEY || !IDNOT_ANNUARY_BASE_URL) {
throw new Error('Missing IDnot API key or annuary base URL');
}
const searchParams = new URLSearchParams({
key: process.env.IDNOT_API_KEY || '',
key: IDNOT_API_KEY,
deleted: 'false'
});
const url = `${process.env.IDNOT_ANNUARY_BASE_URL}/api/pp/v2/entites/${idNot}/personnes?` + searchParams;
const url = `${IDNOT_ANNUARY_BASE_URL}/api/pp/v2/entites/${idNot}/personnes?` + searchParams;
const json = await (
await fetch(url, {
@ -59,12 +84,18 @@ export class IdNotService {
}
static async getUserData(profileIdn: string) {
const { IDNOT_API_KEY, IDNOT_API_BASE_URL } = process.env;
if (!IDNOT_API_KEY || !IDNOT_API_BASE_URL) {
throw new Error('Missing IDnot API key or base URL');
}
const searchParams = new URLSearchParams({
key: process.env.IDNOT_API_KEY || ''
key: IDNOT_API_KEY
});
const userData = await (
await fetch(`${process.env.API_BASE_URL}/api/pp/v2/rattachements/${profileIdn}?` + searchParams, {
await fetch(`${IDNOT_API_BASE_URL}/api/pp/v2/rattachements/${profileIdn}?` + searchParams, {
method: 'GET'
})
).json();
@ -73,12 +104,18 @@ export class IdNotService {
}
static async getOfficeLocationData(locationsUrl: string) {
const { IDNOT_API_KEY, IDNOT_API_BASE_URL } = process.env;
if (!IDNOT_API_KEY || !IDNOT_API_BASE_URL) {
throw new Error('Missing IDnot API key or base URL');
}
const searchParams = new URLSearchParams({
key: process.env.IDNOT_API_KEY || ''
key: IDNOT_API_KEY
});
const officeLocationData = await (
await fetch(`${process.env.API_BASE_URL}${locationsUrl}?` + searchParams, {
await fetch(`${IDNOT_API_BASE_URL}${locationsUrl}?` + searchParams, {
method: 'GET'
})
).json();