Backoffice - personnalisations
Le template personnalise le backoffice Umbraco sur quatre axes : login dev rapide, styles (login + indication d'environnement), 2FA, et un dashboard "Système".
Login dev rapide (Controllers/DevLoginController.cs)
GET /l, DEBUG uniquement (voir extensibility.md). Auto-connecte le premier utilisateur dont l'email finit par @spektrummedia.com. Double garde (#if DEBUG + IsDevelopment()) a ne jamais retirer. Evite de saisir des identifiants en developpement local.
App_Plugins
Tous declares via umbraco-package.json (manifests Umbraco 17, type backofficeEntryPoint).
CustomBackofficeLoginStyles
Personnalise l'ecran de login backoffice. backoffice.js (entry point) injecte backoffice-login.css. L'image de fond est servie depuis wwwroot/images/custom-backoffice-login/bg.jpg (referencee par Umbraco:CMS:Content:LoginBackgroundImage dans appsettings.json).
CustomEnvironmentBackofficeStyles
Affiche une indication visuelle de l'environnement courant dans le backoffice (pour ne pas confondre local / staging / prod). backoffice.js (onInit) injecte backoffice-env.css ; des variantes backoffice-env.master.css et backoffice-env.staging.css existent par environnement.
TwoFactorProviders
Manifeste (type mfaLoginProvider, alias UmbracoUserAppAuthenticator, label "Google Authenticator") qui declare cote UI le provider 2FA implemente cote serveur.
ButtonPicker
Property editor UI custom (type propertyEditorUi, alias Spektrum.PropertyEditorUi.ButtonPicker, schema Umbraco.TextBox) : groupe de boutons single-select stockant une classe CSS. button-picker.element.js rend les boutons (uui-button-group) ; button-picker-config.element.js (Spektrum.PropertyEditorUi.ButtonPickerConfig) est l'editeur de config du DataType (repeater libelle / classe). 100 % frontend. Detail d'usage dans modules/content-model.md.
SystemDashboard
Dashboard "Système" (onglet dans la section Contenu du backoffice). Manifeste umbraco-package.json (type dashboard, alias Web.Dashboard.System, label "Système", pathname systeme, condition Umb.Condition.SectionAlias = Umb.Section.Content). dashboard.js est un custom element Lit (web-system-dashboard) qui affiche trois boites : Version & build (version source, version Umbraco, environnement, hostname), Support et À propos. Il appelle l'endpoint backoffice GET /umbraco/management/api/v1/system-dashboard/info (Controllers/DashboardInfoController.cs, policy BackOfficeAccess), servi par Services/DashboardInfoService.cs (IDashboardInfoService, enregistre en singleton dans SiteComposer).
La version source est derivee du nombre de commits git (1.{minor}.{build}.{revision}), lue uniquement dans les variables d'env GIT_COMMIT_COUNT|SHA|DATE (injectees au build Docker, voir architecture/build-deploy.md). Absentes (dev local, ou build sans --build-arg) -> fallback 1.0.0.dev. Les coordonnees Support / À propos (email, telephone, adresse Spektrum) sont a personnaliser par projet.
2FA - Google Authenticator (Services/UmbracoUserAppAuthenticator.cs)
ITwoFactorProvider (nom constant UmbracoUserAppAuthenticator), enregistre dans SiteComposer via BackOfficeIdentityBuilder.AddTwoFactorProvider<...>. Utilise le package GoogleAuthenticator :
GetSetupDataAsync: genere le QR-code de setup (TwoFactorAuthInfoModel) ; le nom d'application est en dur ("My application name") - a personnaliser par projet.ValidateTwoFactorPIN/ValidateTwoFactorSetup: valident le code TOTP.
Securite backoffice (appsettings.json)
- Politique mot de passe : >= 15 caracteres, majuscule + minuscule + chiffre + caractere non-alphanumerique.
AllowConcurrentLogins=false.DefaultUILanguage=fr-FR,TimeOut=01:00:00.

