Token caching

This commit is contained in:
2026-02-10 16:24:38 +01:00
parent 4fe26a23af
commit 25b2a4478a

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
CACHE_FILE="/tmp/git_bw_token_$USER"
TOKEN_NAME="Token"
get_credentials() {
# 1. Versuch: Cache laden
@@ -9,25 +10,34 @@ get_credentials() {
return
fi
# 2. Versuch: Bitwarden abfragen (nur wenn BW_SESSION da ist)
# 2. Versuch: Bitwarden abfragen
if [ -n "$BW_SESSION" ]; then
# Hier dein bw-Befehl (Beispielhaft)
TOKEN=$(bw get item gitea.iten.pro | jq -r '.login.password')
USER_NAME=$(bw get item gitea.iten.pro | jq -r '.login.username')
ITEM_JSON=$(bw get item gitea.iten.pro 2>/dev/null)
if [ -n "$TOKEN" ]; then
OUT="username=$USER_NAME\npassword=$TOKEN"
echo -e "$OUT" > "$CACHE_FILE"
chmod 600 "$CACHE_FILE"
echo -e "$OUT"
return
if [ -n "$ITEM_JSON" ]; then
# Wir nutzen BW_USER, um die System-Variable $USER nicht zu überschreiben
BW_USER=$(echo "$ITEM_JSON" | jq -r '.login.username')
# Korrekte Übergabe der Variable an jq via --arg
TOKEN=$(echo "$ITEM_JSON" | jq -r --arg TNAME "$TOKEN_NAME" '.fields[] | select(.name==$TNAME) | .value')
if [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ]; then
# Hier die Variablen nutzen, die wir oben gefüllt haben
OUT="username=$BW_USER\npassword=$TOKEN"
echo -e "$OUT" > "$CACHE_FILE"
chmod 600 "$CACHE_FILE"
echo -e "$OUT"
return
fi
fi
fi
printf "\033[1;31mFEHLER:\033[0m Bitwarden ist gesperrt! Bitte '\033[1munlock\033[22m' ausführen.\n" >&2
# Fehlermeldung nur, wenn kein Cache da war und BW Abfrage scheiterte
printf "\033[1;31mFEHLER:\033[0m Bitwarden ist gesperrt oder Token nicht gefunden! Bitte '\033[1munlock\033[22m' ausführen.\n" >&2
exit 1
}
case "$1" in
get) get_credentials ;;
store|erase) ;; # Git verlangt diese Endpunkte, wir ignorieren sie
store|erase) ;;
esac