refactor: сертификат и ключ в каталоге secrets/, один параметр на каталог
Tests / frontend-test (pull_request) Successful in 3m14s

Локально путь к сертификату вёл в ~/Downloads у каждого свой, а в контейнере
задавался двумя отдельными переменными. Теперь каталог один и подменяется
целиком через SECRETS_DIR: по умолчанию secrets/ в корне репозитория, в
контейнере /certs (смонтированный каталог с хоста, GRAPH_CERT_DIR не меняется).

Имена файлов внутри фиксированы, поэтому GRAPH_CERT_PATH и GRAPH_KEY_PATH
больше не нужны. Содержимое secrets/ в .gitignore, кроме README.

Отсутствие файлов теперь даёт понятную ошибку вместо ENOENT — на свежем
клоне это основной сценарий отказа.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 13:34:37 +05:00
parent b4a10510e1
commit f1caa62f28
8 changed files with 88 additions and 19 deletions
+34
View File
@@ -0,0 +1,34 @@
# secrets
Сертификат и приватный ключ приложения Azure AD, под которым сервис
`hr-appeals-auth` получает app-only токен. **В git не попадают** — всё
содержимое каталога, кроме этого файла, в `.gitignore`.
Положите сюда два файла (взять у администратора):
```
secrets/
SPFxDeploy_cert.pem
SPFxDeploy_key.pem
```
Имена фиксированные — их ждёт [server/src/config.ts](../server/src/config.ts).
## Подменить каталог целиком
Путь задаётся одной переменной `SECRETS_DIR`, поэтому каталог можно заменить
не трогая код:
```bash
SECRETS_DIR=/path/to/other/secrets npm run dev --prefix server
```
По умолчанию — этот каталог. В продовом контейнере `SECRETS_DIR=/certs`, куда
смонтирован каталог с хоста: путь на хосте задаёт `GRAPH_CERT_DIR` в `.env`
рядом с `docker-compose.yml` на сервере.
## Если ключ утёк
Сертификат перевыпускается в Azure AD (App registrations → нужное приложение →
Certificates & secrets), старый оттуда удаляется. Замена файлов здесь без этого
ничего не даёт: Azure AD продолжит принимать подпись старым ключом.