1ab2eeccca
Un user avec des permissions sur le rôle RBAC « user » ne voyait rien : le
ROLE_USER legacy n'a aucun lien avec le RBAC et getEffectivePermissions() ne lit
que rbacRoles + permissions directes, alors qu'aucun user n'était rattaché au
rôle « user » (table user_role vide, jamais backfillée).
Backend
- DefaultUserRoleAssigner + UserDefaultRoleListener (prePersist) : tout nouvel
utilisateur est rattaché au rôle « user » sur tous les chemins de persistance.
- Commande app:assign-default-roles (backfill idempotent) + ajout au deploy.sh.
- AppFixtures : seed des rôles système avant la création des users.
Frontend (gating par permission au lieu de ROLE_ADMIN legacy)
- Nouveau middleware « permission » + augmentation PageMeta : definePageMeta
({ permission }) (string = requise, array = any), ROLE_ADMIN bypasse.
- Pages directory/reporting/admin gatées par permission ; SidebarFilter accepte
une liste de permissions (any) ; section admin sans gate de rôle.
- team-absences reste en ROLE_ADMIN (module Absence non RBAC-isé côté backend).
56 lines
1.8 KiB
Bash
Executable File
56 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
TAG="${1:-latest}"
|
|
export LESSTIME_IMAGE_TAG="$TAG"
|
|
|
|
echo "==> Deploying lesstime:${TAG}..."
|
|
|
|
echo "==> Enabling maintenance mode..."
|
|
touch maintenance.on
|
|
|
|
echo "==> Pulling image..."
|
|
sudo docker compose pull
|
|
|
|
echo "==> Starting container..."
|
|
sudo docker compose up -d
|
|
|
|
echo "==> Waiting for container to be ready..."
|
|
sleep 3
|
|
|
|
echo "==> Extracting maintenance page..."
|
|
mkdir -p public
|
|
sudo docker compose cp app:/var/www/html/public/maintenance.html public/maintenance.html
|
|
|
|
echo "==> Running migrations..."
|
|
sudo docker compose exec -T -u www-data app php bin/console doctrine:migrations:migrate --no-interaction
|
|
|
|
echo "==> Seeding RBAC system roles (idempotent)..."
|
|
sudo docker compose exec -T -u www-data app php bin/console app:seed-rbac
|
|
|
|
echo "==> Syncing RBAC permissions catalog..."
|
|
sudo docker compose exec -T -u www-data app php bin/console app:sync-permissions
|
|
|
|
echo "==> Assigning base RBAC role 'user' to users missing it (idempotent)..."
|
|
sudo docker compose exec -T -u www-data app php bin/console app:assign-default-roles
|
|
|
|
echo "==> Clearing cache..."
|
|
sudo docker compose exec -T -u www-data app php bin/console cache:clear --env=prod
|
|
sudo docker compose exec -T -u www-data app php bin/console cache:warmup --env=prod
|
|
|
|
echo "==> Checking error tracking (GlitchTip)..."
|
|
SENTRY_DSN_VALUE="$(sudo docker compose exec -T app printenv SENTRY_DSN 2>/dev/null || true)"
|
|
if [ -n "${SENTRY_DSN_VALUE}" ]; then
|
|
echo " SENTRY_DSN detecte — erreurs backend envoyees a GlitchTip."
|
|
else
|
|
echo " SENTRY_DSN absent/vide — error tracking backend desactive (ajouter SENTRY_DSN dans .env)."
|
|
fi
|
|
|
|
echo "==> Disabling maintenance mode..."
|
|
rm -f maintenance.on
|
|
|
|
VERSION=$(sudo docker compose exec -T app cat config/version.yaml | grep 'app.version' | awk -F"'" '{print $2}')
|
|
echo "==> Deployed v${VERSION}"
|