feat(19-02): add RegisterApp/RemoveApp commands, DI wiring, EN/FR localization

- ProfileManagementViewModel: IAppRegistrationService injected, RegisterAppCommand/RemoveAppCommand added
- IsRegistering, ShowFallbackInstructions, RegistrationStatus observable properties
- HasRegisteredApp computed property, CanRegisterApp/CanRemoveApp guards
- RegisterAppAsync: admin check, fallback panel, AppId persistence
- RemoveAppAsync: removal + MSAL clear + AppId null + persistence
- App.xaml.cs: IAppRegistrationService singleton registered
- Strings.resx/fr.resx: 16 new localization keys for register/remove/fallback flow
This commit is contained in:
Dev
2026-04-09 15:17:53 +02:00
parent 69c9d77be3
commit 42b5eda460
4 changed files with 139 additions and 1 deletions

View File

@@ -412,6 +412,23 @@
<!-- Phase 16: Report Consolidation Toggle -->
<data name="audit.grp.export" xml:space="preserve"><value>Options d'exportation</value></data>
<data name="chk.merge.permissions" xml:space="preserve"><value>Fusionner les permissions en double</value></data>
<!-- Phase 19: App Registration & Removal -->
<data name="profile.register" xml:space="preserve"><value>Enregistrer l'app</value></data>
<data name="profile.remove" xml:space="preserve"><value>Supprimer l'app</value></data>
<data name="profile.register.checking" xml:space="preserve"><value>Vérification des permissions...</value></data>
<data name="profile.register.registering" xml:space="preserve"><value>Enregistrement de l'application...</value></data>
<data name="profile.register.success" xml:space="preserve"><value>Application enregistrée avec succès</value></data>
<data name="profile.register.failed" xml:space="preserve"><value>L'enregistrement a échoué</value></data>
<data name="profile.register.noperm" xml:space="preserve"><value>Permissions insuffisantes pour l'enregistrement automatique</value></data>
<data name="profile.remove.removing" xml:space="preserve"><value>Suppression de l'application...</value></data>
<data name="profile.remove.success" xml:space="preserve"><value>Application supprimée avec succès</value></data>
<data name="profile.fallback.title" xml:space="preserve"><value>Enregistrement manuel requis</value></data>
<data name="profile.fallback.step1" xml:space="preserve"><value>1. Allez dans le portail Azure &gt; Inscriptions d'applications &gt; Nouvelle inscription</value></data>
<data name="profile.fallback.step2" xml:space="preserve"><value>2. Nom : 'SharePoint Toolbox - {0}', Types de comptes : Locataire unique</value></data>
<data name="profile.fallback.step3" xml:space="preserve"><value>3. URI de redirection : Client public, https://login.microsoftonline.com/common/oauth2/nativeclient</value></data>
<data name="profile.fallback.step4" xml:space="preserve"><value>4. Sous Permissions API, ajouter : Microsoft Graph (User.Read, User.Read.All, Group.Read.All, Directory.Read.All) et SharePoint (AllSites.FullControl)</value></data>
<data name="profile.fallback.step5" xml:space="preserve"><value>5. Accorder le consentement administrateur pour toutes les permissions</value></data>
<data name="profile.fallback.step6" xml:space="preserve"><value>6. Copier l'ID d'application (client) et le coller dans le champ ID Client ci-dessus</value></data>
<!-- Phase 18: Auto-Take Ownership -->
<data name="settings.ownership.title" xml:space="preserve"><value>Propri&#233;t&#233; du site</value></data>
<data name="settings.ownership.auto" xml:space="preserve"><value>Prendre automatiquement la propri&#233;t&#233; d'administrateur de collection de sites en cas de refus d'acc&#232;s</value></data>