19 Commits

Author SHA1 Message Date
Thomas Fransolet
b87e49d808 Cle d'API sur les routes visiteur, canal VR et contenu immersif
Securite
- RequireAppKey : filtre qui exige une cle d'API valide ou un utilisateur du
  manager. Pose sur les routes de contenu consommees par les apps visiteur
  (Configuration, Section, Resource, SectionMap, SectionEvent, SectionAgenda,
  SectionParcours, SectionQuiz, ApplicationInstance). Un [Authorize] d'action
  ne peut pas assouplir celui de la classe ; seul [AllowAnonymous] le
  court-circuite, et le filtre redevient le controle d'acces. Il ferme
  l'enumeration par identifiant, pas la confidentialite : la cle s'obtient
  par le slug ou le pincode.
- Instance/slug/{slug} rendait le pinCode, l'adresse de facturation, la TVA et
  les quotas a qui lit l'URL du site visiteur. StripCommercialFields est
  desormais applique sur slug et byPin ; isTrialActive reste expose pour le
  filigrane d'essai.
- Device.Create et Device/{id}/detail repondaient 403 a toute tablette depuis
  a452f4a (13/03) : la classe exige InstanceAdmin, une cle ne porte que
  AppRead. Ouverts a la cle, le cloisonnement par instance etait deja ecrit.

Canal VR
- Device.AppType (defaut Tablet, backfill a 1) ; Create resout
  l'ApplicationInstance sur ce type au lieu de Tablet en dur.
- Get filtre optionnellement par appType ; DeviceDetailDTO expose appVersion
  et lastSeen.
- PUT Device/{id}/heartbeat : batterie, version, connexion. Volontairement
  etroit, une app ne peut ni se renommer ni changer d'instance.
- ApiKeyAppType.VrApp en fin d'enum.

Contenu immersif
- ResourceType : Image360 (11), Video360 (12), Model3D (13), en fin d'enum.
- Section Scene3D : un modele GLB et ses points d'interet, en objet manipule
  ou en decor habite. Les points sont des GeoPoint, avec une LocalTransform
  en jsonb (convention glTF) ; CRUD dans SectionScene3DController.
- Instance.HasImmersiveContent : l'add-on ajoute 100 Go au quota de stockage,
  repose apres un changement de plan et retire a la desactivation.
- ImmersiveBackground (owned) sur Configuration et ApplicationInstance, avec
  une image de repli pour les canaux qui ne rendent pas l'immersif.

Export de configuration
- exportVersion (1) et generatedAt : le JSON devient un contrat, lu tel quel
  par l'app Unity.
- Section.ToDTO() n'etant pas virtuelle, l'export ne portait aucun champ
  specifique de sous-type. Passe par SectionFactory.ToDTO, et charge les
  points des Map et des Scene3D.
- Le fond immersif et son repli partent avec les ressources, URL resolues.

Migrations : AddAppTypeToDevice, AddScene3DSectionAndImmersiveAddon,
AddImmersiveBackground.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 16:54:10 +02:00
Thomas Fransolet
19a0157b19 Bento support + upgrade security (filter by instance mandatory) 2026-07-14 17:21:10 +02:00
Thomas Fransolet
a452f4af04 Add migration, need to check if migration with apikey correct.. ! + add roles and security (role and apikey) - need to be tested + visitevent stats + ai etc + all need to be tested ! 2026-03-13 17:45:01 +01:00
Thomas Fransolet
4d755549af Updated code for device creation (create appconfig) + misc 2025-08-14 21:31:26 +02:00
Thomas Fransolet
8b68ebe8c9 Device controller done 2025-03-19 11:57:53 +01:00
Thomas Fransolet
11cfeab210 Updated DB (wip) 2025-03-19 08:57:29 +01:00
Thomas Fransolet
8c18825c5d Wip clean code and pass by postgres ! 2025-03-06 17:39:08 +01:00
Thomas Fransolet
2866c12985 Add MQTT events 2023-12-05 15:40:51 +01:00
499065bdb7 Add instanceId to ToSectionDTO and ToResourceDTO + update device controller for instanceId 2022-10-20 16:37:37 +02:00
3b6c480cc6 Add instance model, dto, controller and service + update other objects and controllers 2022-10-06 17:07:11 +02:00
1725376623 Add title and image to configuration 2022-09-17 22:43:24 +02:00
Thomas Fransolet
62aa7453c0 Update first char for every dto variables + add password utils (hash password) 2021-07-25 00:53:47 +02:00
Thomas Fransolet
ed1e08f443 Add mqtt + changed first char of all DTO (Json deserialization fix) 2021-07-25 00:18:15 +02:00
Thomas Fransolet
0ee024e8ef Add identifier, dateupdate + MapType to MapTypeApp 2021-07-14 20:36:13 +02:00
Thomas Fransolet
7be57deb46 Add allow anonymous device creation + add wlan and eth differenciation for ipaddress 2021-07-08 19:14:05 +02:00
Thomas Fransolet
22c34d90a6 Add configuration label to device DTO 2021-06-23 22:44:41 +02:00
Thomas Fransolet
26253f281e Add update device main infos 2021-06-19 17:29:59 +02:00
Thomas Fransolet
fed416d078 ressource to reSource + fixs + resourceController (upload and show) 2021-05-07 22:57:06 +02:00
Thomas Fransolet
65e7c7f890 Add device controller + DeviceDetailDTO + create section (all in Data as JSON) + delete all section from config 2021-05-04 16:52:39 +02:00