42 lines
1.4 KiB
Bash
42 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Manage users via authelia-api
|
|
# Usage: ./manage-users.sh list
|
|
# ./manage-users.sh create username displayname email groups...
|
|
# ./manage-users.sh delete username
|
|
|
|
API_BASE="http://127.0.0.1:8080"
|
|
TOKEN=$(grep -oP 'session_secret: \K.*' /opt/nextworkspace/config/authelia/configuration.yml)
|
|
|
|
case "${1:-}" in
|
|
list)
|
|
curl -s -H "Authorization: Bearer $TOKEN" "$API_BASE/api/users" | jq . 2>/dev/null || \
|
|
curl -s -H "Authorization: Bearer $TOKEN" "$API_BASE/api/users"
|
|
;;
|
|
create)
|
|
shift
|
|
if [ $# -lt 3 ]; then
|
|
echo "Usage: $0 create username displayname email [groups...]" >&2
|
|
exit 1
|
|
fi
|
|
USERNAME="$1"; DISPLAY="$2"; EMAIL="$3"; shift 3
|
|
GROUPS='["users"'
|
|
for g in "$@"; do GROUPS="$GROUPS,\"$g\""; done
|
|
GROUPS="$GROUPS]"
|
|
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"users\":[{\"username\":\"$USERNAME\",\"display_name\":\"$DISPLAY\",\"email\":\"$EMAIL\",\"groups\":$GROUPS}]}" \
|
|
"$API_BASE/api/users/bulk"
|
|
;;
|
|
delete)
|
|
if [ -z "${2:-}" ]; then
|
|
echo "Usage: $0 delete username" >&2
|
|
exit 1
|
|
fi
|
|
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
|
|
"$API_BASE/api/users/$2"
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {list|create|delete} ..." >&2
|
|
exit 1
|
|
;;
|
|
esac
|