шлется на реальный сервер (#2)
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
This commit was merged in pull request #2.
This commit is contained in:
2026-08-24 08:54:41 +00:00
parent 7f6f42a96b
commit dea024f3a9
23 changed files with 660 additions and 73 deletions
+21 -4
View File
@@ -1,3 +1,5 @@
import { join, resolve } from 'node:path';
function requireEnv(name: string): string {
const value = process.env[name];
if (!value) {
@@ -6,11 +8,26 @@ function requireEnv(name: string): string {
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: requireEnv('GRAPH_CERT_PATH'),
keyPath: requireEnv('GRAPH_KEY_PATH'),
scope: process.env.GRAPH_SCOPE ?? 'https://graph.microsoft.com/.default',
port: Number(process.env.PORT ?? 3000)
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: 'Обращения'
};