@@ -63,7 +63,7 @@ public class AuthsignalPasskey {
6363 )
6464 }
6565
66- UserDefaults . standard . set ( credential. rawId, forKey : passkeyLocalKey )
66+ storeCredentialId ( credentialId : credential. rawId, username : optsResponse . data ? . options . user . name )
6767
6868 cache. token = responseToken
6969
@@ -136,7 +136,7 @@ public class AuthsignalPasskey {
136136 )
137137
138138 if ( data. isVerified) {
139- UserDefaults . standard . set ( credential. rawId, forKey : passkeyLocalKey )
139+ storeCredentialId ( credentialId : credential. rawId, username : data . username )
140140 }
141141
142142 if let responseToken = data. accessToken {
@@ -158,8 +158,8 @@ public class AuthsignalPasskey {
158158 }
159159 }
160160
161- public func shouldPromptToCreatePasskey( ) async -> AuthsignalResponse < Bool > {
162- guard let credentialId = UserDefaults . standard . string ( forKey : passkeyLocalKey ) else {
161+ public func shouldPromptToCreatePasskey( username : String ? = nil ) async -> AuthsignalResponse < Bool > {
162+ guard let credentialId = getStoredCredentialId ( username : username ) else {
163163 return AuthsignalResponse ( data: true )
164164 }
165165
@@ -178,7 +178,7 @@ public class AuthsignalPasskey {
178178
179179 @available ( * , deprecated, message: " Use 'preferImmediatelyAvailableCredentials' to control what happens when a passkey isn't available. " )
180180 public func isAvailableOnDevice( ) async -> AuthsignalResponse < Bool > {
181- guard let credentialId = UserDefaults . standard . string ( forKey : passkeyLocalKey ) else {
181+ guard let credentialId = getStoredCredentialId ( username : nil ) else {
182182 return AuthsignalResponse ( data: false )
183183 }
184184
@@ -194,4 +194,18 @@ public class AuthsignalPasskey {
194194 return AuthsignalResponse ( data: true )
195195 }
196196 }
197+
198+ private func storeCredentialId( credentialId: String , username: String ? ) {
199+ UserDefaults . standard. set ( credentialId, forKey: passkeyLocalKey)
200+
201+ if let username = username {
202+ UserDefaults . standard. set ( credentialId, forKey: " \( passkeyLocalKey) _ \( username) " )
203+ }
204+ }
205+
206+ private func getStoredCredentialId( username: String ? ) -> String ? {
207+ let key = username. map { " \( passkeyLocalKey) _ \( $0) " } ?? passkeyLocalKey
208+
209+ return UserDefaults . standard. string ( forKey: key)
210+ }
197211}
0 commit comments