Files
VITEC-website/fix-asset-perms.sh
Oliver Rasche c90649fc1e Drop headless-mixed set; widen asset permissions to all of fileadmin
The headless-mixed set was active although the site runs full headless. On
any request whose Accept header equals exactly 'application/json' it
re-imported the headless page configuration, and 'page < lib.headlessPage'
replaced the whole page object - dropping every field later sets had added:
mainNavigation, footerMenu, metaMenu, megaMenu, jsonLd. The header is not
part of the page cache key, so whichever request rendered first decided what
everyone got, which made it look like a concurrency race. Removing the set
restores the full 15-key payload for every Accept variant.

fix-asset-perms.sh only covered _assets, fileadmin/icons and the extension's
Resources/Public, so anything an importer wrote under public/fileadmin kept
the mount's permissions and returned 403 - most visibly the success-story
images in the megamenu. It now covers public/fileadmin as a whole.
2026-09-11 13:24:28 +02:00

37 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# VITEC — fix backend asset permissions after a deploy via the Windows sshfs mount
# -----------------------------------------------------------------------------
# sshfs-win (WinFsp) writes newly deployed files with mode 770 (no other-read).
# The webserver runs as "other" (suexec) -> assets under Resources/Public and
# public/_assets return HTTP 403 (backend icons / CSS / JS missing).
#
# chmod OVER the Windows mount does NOT change the real server mode, so this
# has to run ON THE SERVER, via real SSH, as the site owner (vitecevo).
#
# Usage (from the live/ project root on the server):
# bash fix-asset-perms.sh
# =============================================================================
set -u
cd "$(dirname "$0")" || exit 1
echo "[perms] Project root: $(pwd)"
# public/fileadmin as a whole, not just icons: every editorial upload and every
# importer output lands there (success_stories_import, blog-import, downloads,
# user_upload/products ...) and hits the same 403 otherwise. Found 2026-09-11,
# when the imported success-story images stayed invisible in the megamenu.
TARGETS="public/_assets public/fileadmin packages/vitec/Resources/Public"
echo "[perms] Setting files 644 / directories 755 under $TARGETS ..."
find $TARGETS -type f -exec chmod 644 {} \; 2>/dev/null
find $TARGETS -type d -exec chmod 755 {} \; 2>/dev/null
echo "[perms] Flushing TYPO3 caches ..."
if [ -x vendor/bin/typo3 ]; then
vendor/bin/typo3 cache:flush
else
echo "[perms] (vendor/bin/typo3 not found — skip cache flush)"
fi
echo "[perms] Done."