All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 47s
196 lines
5.3 KiB
TypeScript
196 lines
5.3 KiB
TypeScript
import fetch from 'node-fetch';
|
|
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: IDNOT_CLIENT_ID,
|
|
client_secret: IDNOT_CLIENT_SECRET,
|
|
redirect_uri: IDNOT_REDIRECT_URI,
|
|
grant_type: 'authorization_code',
|
|
code
|
|
};
|
|
|
|
const response = await fetch(IDNOT_TOKEN_URL, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
},
|
|
body: new URLSearchParams(params).toString()
|
|
});
|
|
|
|
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: IDNOT_API_KEY,
|
|
deleted: 'false'
|
|
});
|
|
|
|
const url = `${IDNOT_ANNUARY_BASE_URL}/api/pp/v2/personnes/${idNot}/rattachements?${searchParams}`;
|
|
|
|
const response = await fetch(url, { method: 'GET' });
|
|
|
|
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: IDNOT_API_KEY,
|
|
deleted: 'false'
|
|
});
|
|
|
|
const url = `${IDNOT_ANNUARY_BASE_URL}/api/pp/v2/entites/${idNot}/personnes?` + searchParams;
|
|
|
|
const json = await (
|
|
await fetch(url, {
|
|
method: 'GET'
|
|
})
|
|
).json();
|
|
|
|
return json;
|
|
}
|
|
|
|
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: IDNOT_API_KEY
|
|
});
|
|
|
|
const userData = await (
|
|
await fetch(`${IDNOT_API_BASE_URL}/api/pp/v2/rattachements/${profileIdn}?` + searchParams, {
|
|
method: 'GET'
|
|
})
|
|
).json();
|
|
|
|
return userData;
|
|
}
|
|
|
|
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: IDNOT_API_KEY
|
|
});
|
|
|
|
const officeLocationData = await (
|
|
await fetch(`${IDNOT_API_BASE_URL}${locationsUrl}?` + searchParams, {
|
|
method: 'GET'
|
|
})
|
|
).json();
|
|
|
|
return officeLocationData;
|
|
}
|
|
|
|
static getOfficeStatus(statusName: string): EOfficeStatus {
|
|
switch (statusName) {
|
|
case "Pourvu":
|
|
return EOfficeStatus.ACTIVATED;
|
|
case "Pourvu mais décédé":
|
|
return EOfficeStatus.ACTIVATED;
|
|
case "Sans titulaire":
|
|
return EOfficeStatus.ACTIVATED;
|
|
case "Vacance":
|
|
return EOfficeStatus.ACTIVATED;
|
|
case "En activité":
|
|
return EOfficeStatus.ACTIVATED;
|
|
default:
|
|
return EOfficeStatus.DESACTIVATED;
|
|
}
|
|
}
|
|
|
|
static getOfficeRole(roleName: string): { name: string } | null {
|
|
switch (roleName) {
|
|
case EIdnotRole.NOTAIRE_TITULAIRE:
|
|
return { name: 'Notaire' };
|
|
case EIdnotRole.NOTAIRE_ASSOCIE:
|
|
return { name: 'Notaire' };
|
|
case EIdnotRole.NOTAIRE_SALARIE:
|
|
return { name: 'Notaire' };
|
|
case EIdnotRole.COLLABORATEUR:
|
|
return { name: 'Collaborateur' };
|
|
case EIdnotRole.SUPPLEANT:
|
|
return { name: 'Collaborateur' };
|
|
case EIdnotRole.ADMINISTRATEUR:
|
|
return { name: 'Collaborateur' };
|
|
case EIdnotRole.CURATEUR:
|
|
return { name: 'Collaborateur' };
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
static getRole(roleName: string): { name: string } {
|
|
switch (roleName) {
|
|
case EIdnotRole.NOTAIRE_TITULAIRE:
|
|
return { name: 'admin' };
|
|
case EIdnotRole.NOTAIRE_ASSOCIE:
|
|
return { name: 'admin' };
|
|
case EIdnotRole.NOTAIRE_SALARIE:
|
|
return { name: 'notary' };
|
|
case EIdnotRole.COLLABORATEUR:
|
|
return { name: 'notary' };
|
|
case EIdnotRole.SUPPLEANT:
|
|
return { name: 'notary' };
|
|
case EIdnotRole.ADMINISTRATEUR:
|
|
return { name: 'admin' };
|
|
case EIdnotRole.CURATEUR:
|
|
return { name: 'notary' };
|
|
default:
|
|
return { name: 'default' };
|
|
}
|
|
}
|
|
|
|
static getCivility(civility: string): ECivility {
|
|
switch (civility) {
|
|
case 'Monsieur':
|
|
return ECivility.MALE;
|
|
case 'Madame':
|
|
return ECivility.FEMALE;
|
|
default:
|
|
return ECivility.OTHERS;
|
|
}
|
|
}
|
|
}
|