import Foundation /// Kanonische Cross-App-Keychain-Group für alle nativen mana-e.V.-Apps. /// /// Apps, die diese Group im `keychain-access-groups` Entitlement haben /// und denselben String als `ManaAppConfig.keychainAccessGroup` /// liefern, teilen ihre Auth-Tokens auf demselben Device. Ein Login in /// einer App bedeutet damit: alle anderen mana-Apps starten direkt im /// `.signedIn`-Status. /// /// Wird der Wert geändert, müssen ALLE Apps in dieser Liste: /// - `project.yml` `keychain-access-groups` Entitlement aktualisieren /// - `AppConfig.keychainAccessGroup` aktualisieren /// - **plus** Apple-Dev-Portal-Capability "Keychain Sharing" mit /// dem neuen Group-Namen aktivieren (sonst OSStatus -34018 /// errSecMissingEntitlement beim ersten Token-Write) /// /// Apps, die Cross-App-SSO **nicht** wollen (z.B. wenn der Login /// bewusst getrennt bleiben soll), setzen `keychainAccessGroup: nil` /// und tragen kein `keychain-access-groups` Entitlement. public let ManaSharedKeychainGroup = "ev.mana.session" /// Convenience-Hilfe für SwiftUI-Apps: liefert den Wert, den /// `ManaAppConfig.keychainAccessGroup` bekommen muss, damit Cross-App- /// SSO greift. iOS resolved den String automatisch über die /// Team-ID des installierten Profiles — `$(AppIdentifierPrefix)` muss /// im Entitlement-File stehen, im Code reicht der bloße Name. /// /// Pendant zum entitlement-Eintrag: /// ``` /// keychain-access-groups: /// - $(AppIdentifierPrefix)ev.mana.session /// ``` public func manaSharedKeychainAccessGroup() -> String { ManaSharedKeychainGroup }