Wird geladen...
;
+ if (!config) return null;
+
+ return (
+
+
+ Status
+
+ {config.enabled
+ ? 'Auf der Anmeldemaske erscheint der Knopf „Mit Microsoft anmelden“.'
+ : 'Die Anmeldung über Microsoft ist aus. Die Anmeldemaske zeigt nur Benutzername und Passwort.'}
+
+
+
+
+
+
+
+
+ {config.missing.length > 0 && (
+
+ Fehlt in server/.env: {config.missing.join(', ')}
+
+ Die Werte werden beim Start gelesen - nach einer Änderung das Backend neu starten.
+
+
+ )}
+
+
+
+ Wie es funktioniert
+
+ -
+ Kein automatisches Anlegen. Wer sich per
+ Microsoft anmeldet, braucht ein Konto in der Nutzerverwaltung mit derselben
+ E-Mail-Adresse. Fehlt es, wird die Anmeldung abgewiesen.
+
+ -
+ Erste Anmeldung verknüpft. Danach hängt
+ das Konto an der Objekt-ID des Microsoft-Kontos und überlebt einen Adresswechsel.
+
+ -
+ Profilfoto. Wer im CRM noch kein Foto
+ hat, bekommt bei der ersten Anmeldung das aus Microsoft 365 übernommen. Ein selbst
+ gesetztes Foto bleibt unangetastet.
+
+ -
+ Passwort bleibt. Die Anmeldung mit
+ Benutzername und Passwort funktioniert unverändert weiter - auch als Notzugang, falls
+ Entra einmal nicht erreichbar ist.
+
+
+
+
+ );
+};
diff --git a/src/lib/api.ts b/src/lib/api.ts
index 42b0a87..ca6b3c5 100644
--- a/src/lib/api.ts
+++ b/src/lib/api.ts
@@ -110,6 +110,34 @@ export const authApi = {
}),
};
+// ---------- Anmeldung über Microsoft (SSO) ----------
+
+/**
+ * Ziel des Microsoft-Knopfes. Bewusst eine echte Umleitung des Browsers und
+ * kein fetch: die Anmeldung findet bei Microsoft statt, und Tenant- sowie
+ * Client-ID bleiben dabei im Backend.
+ */
+export const SSO_START_URL = '/api/auth/sso/start';
+
+export interface SsoConfig {
+ enabled: boolean;
+ missing: string[];
+ redirect_uri: string | null;
+ allowed_domains: string[];
+}
+
+export const ssoApi = {
+ status: () => request<{ enabled: boolean }>('/auth/sso/status'),
+ /** Adminsicht fuer die Einstellungen. */
+ config: () => request