diff --git a/Network Share Mounter/helper/ActivityController.swift b/Network Share Mounter/helper/ActivityController.swift index 1d256efe45bb6f6ea8cf52d99b62ede8c6e1bfc0..978c28781c7ddfadef19817dcf515582ba497cbe 100644 --- a/Network Share Mounter/helper/ActivityController.swift +++ b/Network Share Mounter/helper/ActivityController.swift @@ -306,7 +306,7 @@ class ActivityController { } } - // MARK: - Helpers for utilizing the cliTaskAsync method + // MARK: - Helpers for utilizing the cliTask method /// Executes a CLI command asynchronously with error handling /// @@ -315,7 +315,7 @@ class ActivityController { /// - Throws: Any errors that occur during command execution private func executeCommand(_ command: String) async throws -> String { do { - return try await cliTaskAsync(command) + return try await cliTask(command) } catch { Logger.activityController.error("Command execution failed: \(command), error: \(error.localizedDescription)") throw error diff --git a/Network Share Mounter/helper/AutomaticSignIn.swift b/Network Share Mounter/helper/AutomaticSignIn.swift index 0b393ef94947362a00b1680323f44cf75df2561a..3c9efe5a3f921a4ac99aecb04f85ec49e17a9560 100644 --- a/Network Share Mounter/helper/AutomaticSignIn.swift +++ b/Network Share Mounter/helper/AutomaticSignIn.swift @@ -98,7 +98,7 @@ actor AutomaticSignIn { // Standard-Principal wiederherstellen if let defPrinc = defaultPrinc { do { - let output = try await cliTaskAsync("kswitch -p \(defPrinc)") + let output = try await cliTask("kswitch -p \(defPrinc)") Logger.automaticSignIn.debug("kswitch Ausgabe: \(output)") } catch { Logger.automaticSignIn.error("Fehler beim Umschalten auf Standard-Principal: \(error.localizedDescription)") @@ -229,7 +229,7 @@ actor AutomaticSignInWorker: dogeADUserSessionDelegate { func getUserInfo() async { do { // Zum Benutzer-Principal wechseln - let output = try await cliTaskAsync("kswitch -p \(session.userPrincipal)") + let output = try await cliTask("kswitch -p \(session.userPrincipal)") Logger.automaticSignIn.debug("kswitch Ausgabe: \(output)") // Benutzerdaten abrufen @@ -248,7 +248,7 @@ actor AutomaticSignInWorker: dogeADUserSessionDelegate { do { // Zum authentifizierten Benutzer wechseln - let output = try await cliTaskAsync("kswitch -p \(session.userPrincipal)") + let output = try await cliTask("kswitch -p \(session.userPrincipal)") Logger.automaticSignIn.debug("kswitch Ausgabe: \(output)") // Erfolg mitteilen diff --git a/Network Share Mounter/helper/Logger.swift b/Network Share Mounter/helper/Logger.swift index f6d0b5270ff252008accf5e7c7d659ed0c1b8452..a21b7b16fb612532168d8253b20104fc2f1cfc0f 100644 --- a/Network Share Mounter/helper/Logger.swift +++ b/Network Share Mounter/helper/Logger.swift @@ -29,4 +29,5 @@ extension Logger { static let authUI = Logger(subsystem: subsystem, category: "authUI") static let FAU = Logger(subsystem: subsystem, category: "FAU") static let preferences = Logger(subsystem: subsystem, category: "preferences") + static let login = Logger(subsystem: subsystem, category: "login") } diff --git a/Network Share Mounter/helper/NSTaskWrapper.swift b/Network Share Mounter/helper/NSTaskWrapper.swift index 0d46b0a7431321167e67890bc78dcbd8b07ce40d..80a907faadc2b357e5f27d1b2dcf497ba406712d 100644 --- a/Network Share Mounter/helper/NSTaskWrapper.swift +++ b/Network Share Mounter/helper/NSTaskWrapper.swift @@ -23,7 +23,7 @@ private actor ShellCommandQueue { /// - Throws: Any error that occurs during execution func execute<T>(_ operation: () async throws -> T) async throws -> T { while isExecuting { - try await Task.sleep(for: .milliseconds(100)) + try await Task.sleep(nanoseconds: 100_000_000) // 100ms in Nanosekunden } isExecuting = true defer { isExecuting = false } diff --git a/Network Share Mounter/preferences/FAU.swift b/Network Share Mounter/preferences/FAU.swift index d945262661d54bdbc994ffb0a2a622270c7a9254..0cad25aec53500cbb01a9bd61416ead3baa340fe 100644 --- a/Network Share Mounter/preferences/FAU.swift +++ b/Network Share Mounter/preferences/FAU.swift @@ -61,10 +61,10 @@ class Migrator: dogeADUserSessionDelegate { } do { - let result = try await cliTaskAsync("kswitch -p \(principal)") - Logger.FAU.debug("Successfully switched Kerberos principal: \(result)") + let result = try await cliTask("kswitch -p \(principal)") + Logger.login.debug("Principal switch result: \(result)") } catch { - Logger.FAU.error("kswitch -p failed: \(error.localizedDescription)") + Logger.login.error("Failed to switch principal: \(error.localizedDescription)") // Continue despite error, as authentication still succeeded } diff --git a/Network Share Mounter/view/KrbAuthViewController.swift b/Network Share Mounter/view/KrbAuthViewController.swift index 1aa4c156c859e656a27e1a069b5c1afa90aa586f..be85ea0b8e5caaefd5b18326f86d75f75e3eb144 100644 --- a/Network Share Mounter/view/KrbAuthViewController.swift +++ b/Network Share Mounter/view/KrbAuthViewController.swift @@ -358,10 +358,20 @@ class KrbAuthViewController: NSViewController, AccountUpdate, NSTextFieldDelegat extension KrbAuthViewController: dogeADUserSessionDelegate { func dogeADAuthenticationSucceded() async { Logger.authUI.debug("Auth succeeded") - _ = await cliTask("kswitch -p \(self.session?.userPrincipal ?? "")") - await session?.userInfo() - await handleSuccessfulAuthentication() + do { + // Wechsel zum Benutzer-Principal + let output = try await cliTask("kswitch -p \(self.session?.userPrincipal ?? "")") + Logger.authUI.debug("kswitch Ausgabe: \(output)") + + await session?.userInfo() + await handleSuccessfulAuthentication() + } catch { + Logger.authUI.warning("Fehler beim Wechseln des Kerberos-Principal: \(error.localizedDescription)") + // Trotzdem mit Authentifizierung fortfahren, da der primäre Auth-Prozess erfolgreich war + await session?.userInfo() + await handleSuccessfulAuthentication() + } } func dogeADAuthenticationFailed(error: dogeADSessionError, description: String) async { diff --git a/networkShareMounter.xcodeproj/project.pbxproj b/networkShareMounter.xcodeproj/project.pbxproj index 9b4fa5fe6e4f488f74c0b844248fad1dce2296e7..ec3f74dd47fa698d123eadfe2e0f9a339a8f89b8 100644 --- a/networkShareMounter.xcodeproj/project.pbxproj +++ b/networkShareMounter.xcodeproj/project.pbxproj @@ -647,7 +647,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 200; + CURRENT_PROJECT_VERSION = 201; DEVELOPMENT_TEAM = C8F68RFW4L; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -677,7 +677,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 200; + CURRENT_PROJECT_VERSION = 201; DEVELOPMENT_TEAM = C8F68RFW4L; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17;