dea024f3a9
build-and-deploy / prepare (push) Successful in 0s
build-and-deploy / build-and-push (., Dockerfile, hr-appeals-web) (push) Successful in 8s
Tests / frontend-test (push) Successful in 11s
build-and-deploy / build-and-push (server, server/Dockerfile, hr-appeals-auth) (push) Successful in 4s
build-and-deploy / deploy (push) Successful in 15s
Co-authored-by: Mariya Trishina <trishina.mariya@tnsu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/hr-appeals/pulls/2
34 lines
1.7 KiB
TypeScript
34 lines
1.7 KiB
TypeScript
import { join, resolve } from 'node:path';
|
||
|
||
function requireEnv(name: string): string {
|
||
const value = process.env[name];
|
||
if (!value) {
|
||
throw new Error(`Не задана переменная окружения ${name}`);
|
||
}
|
||
return value;
|
||
}
|
||
|
||
/**
|
||
* Каталог с сертификатом и приватным ключом приложения. Одна переменная на весь
|
||
* каталог, а не путь к каждому файлу: так его можно подменить централизованно —
|
||
* локально это `secrets/` в корне репозитория (в git не попадает), в контейнере
|
||
* SECRETS_DIR=/certs, куда смонтирован каталог с хоста (см. docker-compose.yml).
|
||
*
|
||
* __dirname здесь — server/dist, поэтому до корня репозитория два уровня вверх.
|
||
*/
|
||
const secretsDir = process.env.SECRETS_DIR ?? resolve(__dirname, '../../secrets');
|
||
|
||
export const config = {
|
||
tenantId: requireEnv('GRAPH_TENANT_ID'),
|
||
clientId: requireEnv('GRAPH_CLIENT_ID'),
|
||
certPath: join(secretsDir, 'SPFxDeploy_cert.pem'),
|
||
keyPath: join(secretsDir, 'SPFxDeploy_key.pem'),
|
||
// Токен нужен не для Graph напрямую, а для api.tnsu.kz — он сам ходит в
|
||
// SharePoint. Это его App ID URI: с graph.microsoft.com/.default api вернёт
|
||
// 401, потому что проверяет aud во входящем JWT.
|
||
scope: process.env.GRAPH_SCOPE ?? 'api://9232d9e2-9807-4753-808f-07250e5474b0/.default',
|
||
port: Number(process.env.PORT ?? 3000),
|
||
sharepointSiteUrl: 'https://tnsukz.sharepoint.com/sites/hrm',
|
||
sharepointListName: 'Обращения'
|
||
};
|