QA User Setup — S60Auth
Vytvoření dedikovaného QA/test usera v S60Auth pro testování authenticated endpointů.
Kdy použít
- QA potřebuje testovat authenticated endpointy jakékoli služby (Pulse, BadWolf, BillIt...)
- Potřeba M2M přístupu pro automatizované testy
Prerekvizity
- SSH přístup na cílový server (hub-alfa / prod-alfa)
- doadmin přístup k DO PG (pro grant systémového přístupu)
Postup
1. Registrace usera přes S60Auth API
# Na cílovém serveru (např. hub-alfa)
ssh root@<server> "curl -s -X POST http://127.0.0.1:3002/api/auth/register \
-H 'Content-Type: application/json' \
-d '{\"email\":\"<email>\",\"password\":\"<heslo>\",\"firstName\":\"<jméno>\",\"lastName\":\"<příjmení>\"}'"
- Email konvence:
qa-<služba>@s60dev.cz(např.qa-pulse@s60dev.cz) - Heslo:
openssl rand -base64 16 | tr -d '/+=' | head -c 20 - Response vrátí
accessToken,refreshTokenauser.id
2. Grant přístupu k systému
Najdi system_id cílové služby:
Přidej přístup:
INSERT INTO user_system_access (id, user_id, system_id, granted_at)
VALUES (gen_random_uuid(), '<user_id>', '<system_id>', NOW());
3. Přiřazení rolí v systému
DŮLEŽITÉ: Bez tohoto kroku bude JWT obsahovat rolesBySystem: {} a authenticated endpointy vrátí 401!
-- v s60_auth_<env>
INSERT INTO user_system_roles (user_id, system_id, role_name)
VALUES ('<user_id>', '<system_id>', 'client');
Dostupné role: client (běžný uživatel), admin (plný přístup).
Po přidání role se uživatel musí znovu přihlásit — starý JWT nemá role.
4. Nastavení tieru a credits (Pulse-specific)
Pokud služba používá tier/credit systém (Pulse):
-- v s60_pulse_<env>
UPDATE clients
SET tier = 'triple', "creditsRemaining" = 100
WHERE "authUserId" = '<user_id>';
Dostupné tiery: single, double, triple.
5. Uložení credentials
mkdir -p /root/secrets/qa
cat > /root/secrets/qa/<služba>-<env>.env << EOF
QA_EMAIL=<email>
QA_PASSWORD=<heslo>
QA_USER_ID=<user_id>
AUTH_URL=https://auth.<domain>/api/auth/login
<SLUŽBA>_URL=https://<služba_url>
EOF
chmod 600 /root/secrets/qa/<služba>-<env>.env
6. Ověření (E2E)
# Login
TOKEN=$(curl -s -X POST http://127.0.0.1:3002/api/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"<email>","password":"<heslo>"}' | python3 -c 'import sys,json;print(json.load(sys.stdin)["accessToken"])')
# Test authenticated endpoint
curl -s http://127.0.0.1:<port>/<endpoint> -H "Authorization: Bearer $TOKEN"
Poznámky
user_system_access= přístup k systému (login allowed)user_system_roles= role v systému (permissions pro JWT)- Bez role v
user_system_rolesauth guard odmítne — roles v JWT prázdné - Pulse system_id je stejný na hub i prod:
15912518-c5f1-4926-bf6e-b16948d4c585 - API key auth (X-Api-Key) je jiný flow — validace přes
/api/api-keys/validate, vyžadujesystem_idvapi_keystabulce
Bezpečnost
- Credentials NIKDY přes Relay API (plaintext archiv)
- Hesla pouze v
/root/secrets/qa/(chmod 600) - Na produ: pouze GET endpointy (read-only)
- Notifikace přes Relay bez hesla — odkaz na secrets soubor
Existující QA uživatelé
| Služba | Env | User ID | Secrets | |
|---|---|---|---|---|
| Pulse | hub | qa-pulse@s60dev.cz | d6195555-bee4-4c70-8c5f-af3b6e438b3b | /root/secrets/qa/pulse-hub.env |