Files
net/grant_permissions.sh

93 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# Grant admin permissions to all custom collections
API_URL="https://spark.jumpstartscaling.com"
TOKEN="JtJMJV9I4MM9r4tUuDuaa2aoXbDlBrSM"
echo "🔐 Granting Admin Permissions to All Collections..."
echo "=================================================="
# Get the admin policy ID
ADMIN_POLICY_ID=$(curl -s "$API_URL/policies" \
-H "Authorization: Bearer $TOKEN" | jq -r '.data[] | select(.admin_access == true) | .id')
echo "Admin Policy ID: $ADMIN_POLICY_ID"
echo ""
# Get all custom collections (non-directus)
COLLECTIONS=$(curl -s "$API_URL/collections" \
-H "Authorization: Bearer $TOKEN" | \
jq -r '.data[] | select(.collection | startswith("directus_") | not) | .collection')
# Grant full CRUD permissions for each collection
for COLLECTION in $COLLECTIONS; do
echo "📝 Granting permissions for: $COLLECTION"
# Create permission for this collection
RESPONSE=$(curl -s -X POST "$API_URL/permissions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"policy\": \"$ADMIN_POLICY_ID\",
\"collection\": \"$COLLECTION\",
\"action\": \"create\",
\"permissions\": {},
\"fields\": [\"*\"]
}")
# Check response
if echo "$RESPONSE" | jq -e '.data' > /dev/null 2>&1; then
echo " ✅ CREATE permission granted"
else
echo " ⚠️ $(echo "$RESPONSE" | jq -r '.errors[0].message // "Already exists or error"')"
fi
# Read permission
curl -s -X POST "$API_URL/permissions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"policy\": \"$ADMIN_POLICY_ID\",
\"collection\": \"$COLLECTION\",
\"action\": \"read\",
\"permissions\": {},
\"fields\": [\"*\"]
}" > /dev/null
echo " ✅ READ permission granted"
# Update permission
curl -s -X POST "$API_URL/permissions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"policy\": \"$ADMIN_POLICY_ID\",
\"collection\": \"$COLLECTION\",
\"action\": \"update\",
\"permissions\": {},
\"fields\": [\"*\"]
}" > /dev/null
echo " ✅ UPDATE permission granted"
# Delete permission
curl -s -X POST "$API_URL/permissions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"policy\": \"$ADMIN_POLICY_ID\",
\"collection\": \"$COLLECTION\",
\"action\": \"delete\",
\"permissions\": {},
\"fields\": [\"*\"]
}" > /dev/null
echo " ✅ DELETE permission granted"
echo ""
done
echo "=================================================="
echo "✅ All permissions granted!"
echo ""
echo "Testing access to 'sites' collection..."
curl -s "$API_URL/items/sites" \
-H "Authorization: Bearer $TOKEN" | jq '.data // .errors'