mirror of
https://github.com/vhaudiquet/mymachine.git
synced 2025-12-18 03:56:04 +00:00
50 lines
1.6 KiB
Bash
50 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
BW() {
|
|
sudo -u ${USERNAME} \
|
|
BW_CLIENTID="${BW_CLIENTID}" BW_CLIENTSECRET="${BW_CLIENTSECRET}" \
|
|
BW_PASSWORD="${BW_PASSWORD}" BW_SESSION=${BW_SESSION} BITWARDENCLI_APPDATA_DIR="${BITWARDENCLI_APPDATA_DIR}" \
|
|
bw $@ 2>/dev/null
|
|
}
|
|
|
|
bitwarden_is_authenticated() {
|
|
status=$(BW status |jq -r ".status" 2>/dev/null)
|
|
if [ -z "${status}" ]; then
|
|
false
|
|
else
|
|
[[ ! ${status} == "unauthenticated" ]]
|
|
fi
|
|
}
|
|
bitwarden_is_locked() {
|
|
status=$(BW status 2>/dev/null |jq -r ".status" 2>/dev/null)
|
|
if [ -z "${status}" ]; then
|
|
true
|
|
else
|
|
[[ ${status} == "locked" ]] || ! bitwarden_is_authenticated
|
|
fi
|
|
}
|
|
|
|
bitwarden_login() {
|
|
# Login to Bitwarden
|
|
if ! bitwarden_is_authenticated; then
|
|
if [ ! -z "${BW_CLIENTID}" ] && [ ! -z "${BW_CLIENTSECRET}" ]; then
|
|
echo "Login in to Bitwarden..."
|
|
BW_CLIENTID="${BW_CLIENTID}" BW_CLIENTSECRET="${BW_CLIENTSECRET}" BW login --apikey >/dev/null
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${BRed}Could not login to Bitwarden. Skipping.${NC}"
|
|
fi
|
|
else
|
|
echo "Skipping Bitwarden authentication, no credentials provided."
|
|
fi
|
|
fi
|
|
if bitwarden_is_authenticated && bitwarden_is_locked; then
|
|
if [ ! -z "${BW_PASSWORD}" ]; then
|
|
echo "Unlocking Bitwarden vault..."
|
|
export BW_SESSION=$(BW unlock --raw ${BW_PASSWORD})
|
|
if [ -z "${BW_SESSION}" ]; then
|
|
echo -e "${BRed}Could not unlock Bitwarden vault. Skipping.${NC}"
|
|
fi
|
|
fi
|
|
fi
|
|
}
|