Run initial test for Climate Resilience Verification Suite
Add first part of Alert Quality Analytics
This commit is contained in:
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
# Mint a dev JWT for the ward gateway API (issuer vigilcare-gateway).
|
||||
# Usage: mint-gateway-jwt.sh [username] [clinical_role]
|
||||
# Prints the token to stdout.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
USERNAME="${1:-nurse.demo}"
|
||||
ROLE="${2:-NURSE}"
|
||||
|
||||
python3 - "$USERNAME" "$ROLE" <<'PY'
|
||||
import json, hmac, hashlib, base64, datetime, os, sys
|
||||
|
||||
def b64url(data: bytes) -> str:
|
||||
return base64.urlsafe_b64encode(data).decode().rstrip("=")
|
||||
|
||||
username = sys.argv[1]
|
||||
role = sys.argv[2].upper()
|
||||
secret = os.environ.get(
|
||||
"GATEWAY_JWT_SECRET", "dev-signing-key-minimum-32-bytes-long!!").encode()
|
||||
user_id = os.environ.get(
|
||||
"GATEWAY_JWT_USER_ID", "11111111-1111-1111-1111-111111111111")
|
||||
display = os.environ.get("GATEWAY_JWT_DISPLAY_NAME", "Demo Nurse")
|
||||
|
||||
header = b64url(json.dumps({"alg": "HS256", "typ": "JWT"}, separators=(",", ":")).encode())
|
||||
now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
|
||||
payload = {
|
||||
"iss": "vigilcare-gateway",
|
||||
"aud": "vigilcare-dashboard",
|
||||
"exp": now + 86400,
|
||||
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": user_id,
|
||||
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": username,
|
||||
"display_name": display,
|
||||
"clinical_role": role,
|
||||
}
|
||||
payload_b64 = b64url(json.dumps(payload, separators=(",", ":")).encode())
|
||||
signing_input = f"{header}.{payload_b64}".encode()
|
||||
sig = b64url(hmac.new(secret, signing_input, hashlib.sha256).digest())
|
||||
print(f"{header}.{payload_b64}.{sig}", end="")
|
||||
PY
|
||||
Reference in New Issue
Block a user