d137828919
feat(sites) : API CRUD + rattachement User<->Site + admin (ticket 2/4)
...
Exposition de Site via API Platform (5 operations RBAC sites.view/sites.manage),
relation User.sites (M2M user_site EAGER) + User.currentSite (M2O nullable,
ON DELETE SET NULL). Endpoint PATCH /api/me/current-site via ressource
virtuelle + processor (SiteNotAuthorizedException → 403). UserRbacProcessor
etendu avec gardes post-persist : auto-reset si currentSite retire, auto-select
premier site si null + sites non vide.
Page /admin/sites (DataTable + drawer creation/edition + modale suppression).
UserRbacDrawer etendu avec section "Sites autorises". Colonne "Sites" ajoutee
dans la table /admin/users (liste des noms separes par virgule). Sidebar
entree Sites (module: sites, permission: sites.view).
Refactor adresse : split full_address en street + complement (nullable) + getter
computed Site::getFullAddress() multi-lignes. Migration ALTER dediee pour
compat devs ayant deja joue le ticket 1. Fixtures avec vraies adresses
(Chatellerault/Fontenet/Pommevic).
Doctrine : inversedBy synchrone User.sites <-> Site.users pour maintenir la
collection inverse en memoire. User::switchCurrentSite() porte la garde
domaine (throw SiteNotAuthorizedException), aligne sur Role::ensureDeletable.
Helper skipIfSitesModuleDisabled centralise dans AbstractApiTestCase.
Tests : 182/182 (182/182 aussi module desactive, 2 skipped). 29 nouveaux tests
PHPUnit (CRUD API, switch currentSite, cascade DB, /api/me enrichi, extension
/rbac, gardes structurelles fullAddress/currentSite ignores, anti-cycle
Site.users). 11 tests Vitest sur la validation hex couleur.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-20 10:09:05 +02:00
8590e3e850
feat(sites) : brique fondatrice du module Sites (ticket 1/4)
...
Module Sites optionnel et desactivable via config/modules.php.
Entite Site (nom unique, ville, CP FR, couleur hex, adresse),
repository + impl Doctrine, migration racine (namespace DoctrineMigrations
conforme exception CLAUDE.md), fixtures idempotentes (Chatellerault,
Saint-Jean, Pommevic), permissions RBAC sites.view/sites.manage.
Tests unitaires + validation via KernelTestCase (UniqueEntity, regex
hex et CP, NotBlank, Length).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 15:45:33 +02:00
gitea-actions
6b4868b261
chore: bump version to v0.1.31
Auto Tag Develop / tag (push) Successful in 6s
Build & Push Docker Image / build (push) Successful in 58s
2026-04-17 12:34:44 +00:00
e8c2789435
RBAC - Système complet de permissions (Backend + Frontend) ( #7 )
...
Auto Tag Develop / tag (push) Has been cancelled
## Résumé
Implémentation complète du système RBAC (Role-Based Access Control) pour Coltura.
### Backend
- Entités Permission et Role avec API Platform CRUD
- PermissionVoter : vérification des permissions effectives (rôles + directes), admin bypass
- Endpoints `PATCH /users/{id}/rbac` pour assigner rôles, permissions directes et isAdmin
- AdminHeadcountGuard : protection contre la suppression du dernier admin
- Commande `app:sync-permissions` pour synchroniser les permissions déclarées par les modules
- Filtrage sidebar par permission RBAC (`permission` key optionnelle dans sidebar.php)
- 115 tests PHPUnit (fonctionnels + unitaires)
### Frontend
- Composable `usePermissions()` avec `can()`, `canAny()`, `canAll()` et admin bypass
- Page `/admin/roles` : DataTable, création/édition via drawer, suppression avec confirmation
- Page `/admin/users` : DataTable, drawer RBAC avec rôles, permissions directes, résumé effectif
- PermissionGroup : checkboxes groupées par module avec "tout sélectionner"
- EffectivePermissions : résumé lecture seule avec badges source ("via Rôle X" / "Direct")
- Warning auto-édition, toggle isAdmin
- Tests Vitest pour usePermissions
### Permissions déclarées
- `core.users.view` — Voir les utilisateurs
- `core.users.manage` — Gérer les utilisateurs
- `core.roles.view` — Voir les rôles RBAC
- `core.roles.manage` — Gérer les rôles et permissions
- `GET /api/permissions` accessible à tout utilisateur authentifié (catalogue read-only)
## Tickets Lesstime
- ERP-23 (#343 ) — Entités Permission et Role
- ERP-24 (#344 ) — API CRUD Roles & Permissions
- ERP-25 (#345 ) — Voter Symfony + usePermissions
- ERP-26 (#346 ) — Interface Admin : Gestion des Rôles
- ERP-27 (#347 ) — Interface Admin : Permissions Utilisateur
## Test plan
- [ ] `make db-reset` puis vérifier les fixtures (admin/alice/bob, rôles système)
- [ ] Login admin : sidebar affiche Gestion des rôles + Utilisateurs
- [ ] Login alice : sidebar masque ces onglets (pas de permission)
- [ ] Page /admin/roles : CRUD rôles, permissions groupées, protection rôles système
- [ ] Page /admin/users : assignation rôles + permissions directes, résumé effectif
- [ ] Warning auto-édition quand admin modifie ses propres droits
- [ ] `make test` : 115 tests PHPUnit passent
- [ ] `cd frontend && npm run test` : tests Vitest passent
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-authored-by: Matthieu <mtholot19@gmail.com >
Co-authored-by: tristan <tristan@yuno.malio.fr >
Reviewed-on: MALIO-DEV/Coltura#7
Co-authored-by: THOLOT DECHENE Matthieu <matthieu@yuno.malio.fr >
Co-committed-by: THOLOT DECHENE Matthieu <matthieu@yuno.malio.fr >
2026-04-17 12:34:38 +00:00
gitea-actions
b59d0f8a44
chore: bump version to v0.1.29
Build & Push Docker Image / build (push) Failing after 16s
Auto Tag Develop / tag (push) Successful in 5s
2026-04-14 13:12:49 +00:00
Matthieu
5cb8cff4ce
Merge branch 'feature/ERP-7-mise-en-place-du-modular-monolith' into develop
...
Auto Tag Develop / tag (push) Has been cancelled
# Conflicts:
# docker-compose.yml
2026-04-14 15:11:59 +02:00
gitea-actions
c62f054da1
chore: bump version to v0.1.28
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Successful in 53s
2026-04-14 13:07:45 +00:00
68d62c31ec
feat : mise à jour de la structure du projet
2026-04-09 11:02:19 +02:00
gitea-actions
bcfecb2281
chore: bump version to v0.1.27
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Successful in 17s
2026-04-07 13:33:46 +00:00
gitea-actions
4d106e9625
chore: bump version to v0.1.26
Auto Tag Develop / tag (push) Successful in 6s
Build & Push Docker Image / build (push) Successful in 18s
2026-04-07 13:29:50 +00:00
gitea-actions
1904c999ec
chore: bump version to v0.1.25
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Successful in 18s
2026-04-07 13:25:29 +00:00
gitea-actions
c5e2800e4c
chore: bump version to v0.1.24
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Successful in 18s
2026-04-07 13:09:32 +00:00
gitea-actions
7e5080859d
chore: bump version to v0.1.23
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Successful in 2m16s
2026-04-07 12:59:29 +00:00
gitea-actions
70c05946bd
chore: bump version to v0.1.22
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 18s
2026-04-07 12:56:03 +00:00
gitea-actions
c61b24bea3
chore: bump version to v0.1.21
Auto Tag Develop / tag (push) Successful in 6s
Build & Push Docker Image / build (push) Failing after 10s
2026-04-07 12:53:26 +00:00
gitea-actions
34adb01cbb
chore: bump version to v0.1.20
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Successful in 51s
2026-04-07 12:40:39 +00:00
gitea-actions
5cd7fc305f
chore: bump version to v0.1.19
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Successful in 52s
2026-04-07 12:33:31 +00:00
gitea-actions
0d87574ea2
chore: bump version to v0.1.18
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 13s
2026-04-07 12:31:13 +00:00
gitea-actions
e4f00c322d
chore: bump version to v0.1.17
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 12s
2026-04-07 10:09:05 +00:00
gitea-actions
282e2d3381
chore: bump version to v0.1.16
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 12s
2026-04-07 10:06:06 +00:00
gitea-actions
b1487c54d3
chore: bump version to v0.1.15
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 11s
2026-04-07 10:04:22 +00:00
Matthieu
778a0a16e8
fix(auth) : add login_check and logout routes
...
Auto Tag Develop / tag (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 12:04:15 +02:00
gitea-actions
8fce19e3d4
chore: bump version to v0.1.14
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 11s
2026-04-07 10:01:52 +00:00
gitea-actions
4effafe3a1
chore: bump version to v0.1.13
Auto Tag Develop / tag (push) Successful in 6s
Build & Push Docker Image / build (push) Failing after 13s
2026-04-07 10:00:31 +00:00
gitea-actions
3a792c1a56
chore: bump version to v0.1.12
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 12s
2026-04-07 09:56:09 +00:00
gitea-actions
12e9326ccd
chore: bump version to v0.1.11
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 12s
2026-04-07 09:53:46 +00:00
gitea-actions
cd51f3f945
chore: bump version to v0.1.10
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 12s
2026-04-07 09:46:04 +00:00
gitea-actions
d33928b5f0
chore: bump version to v0.1.9
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 11s
2026-04-07 09:43:02 +00:00
gitea-actions
20e8382ae0
chore: bump version to v0.1.8
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 11s
2026-04-07 09:42:14 +00:00
Matthieu
224df3a4b7
chore : add composer.lock and reference.php
...
Auto Tag Develop / tag (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 11:42:07 +02:00
gitea-actions
0282a21298
chore: bump version to v0.1.7
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 16s
2026-04-07 09:41:46 +00:00
gitea-actions
65c680da5b
chore: bump version to v0.1.6
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 17s
2026-04-07 09:37:17 +00:00
gitea-actions
a119950806
chore: bump version to v0.1.5
Auto Tag Develop / tag (push) Successful in 4s
Build & Push Docker Image / build (push) Failing after 16s
2026-04-07 09:32:49 +00:00
gitea-actions
bf6f98d83b
chore: bump version to v0.1.4
Auto Tag Develop / tag (push) Successful in 6s
Build & Push Docker Image / build (push) Failing after 2m36s
2026-04-07 09:29:17 +00:00
gitea-actions
dce22c0ced
chore: bump version to v0.1.3
Auto Tag Develop / tag (push) Successful in 5s
Build & Push Docker Image / build (push) Failing after 6s
2026-04-07 09:27:57 +00:00
gitea-actions
5e446df042
chore: bump version to v0.1.1
2026-04-07 09:21:09 +00:00
Matthieu
4c9040c923
feat : init project Coltura (CRM/ERP)
...
Symfony 8 + API Platform 4 + Nuxt 4 monorepo.
Backend: User entity, JWT auth, fixtures.
Frontend: login, dashboard, auth middleware, i18n, @malio/layer-ui.
Docker: dev (ports 8083/3003/5436) + prod multi-stage.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 10:56:57 +02:00