WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 4f3f136

Browse files
authored
Add username param to shouldPromptToCreatePasskey (#68)
1 parent c0a175d commit 4f3f136

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

Authsignal.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'Authsignal'
3-
s.version = '2.2.4'
3+
s.version = '2.3.0'
44
s.summary = 'The Authsignal SDK for iOS'
55

66
s.homepage = 'https://github.com/authsignal/authsignal-ios'

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Check out our [official iOS documentation](https://docs.authsignal.com/sdks/clie
1111
Add Authsignal to your Podfile:
1212

1313
```rb
14-
pod 'Authsignal', '~> 2.2.4'
14+
pod 'Authsignal', '~> 2.3.0'
1515
```
1616

1717
#### Swift Package Manager
@@ -20,7 +20,7 @@ Add authsignal-ios to the dependencies value of your Package.swift.
2020

2121
```swift
2222
dependencies: [
23-
.package(url: "https://github.com/authsignal/authsignal-ios.git", from: "2.2.4")
23+
.package(url: "https://github.com/authsignal/authsignal-ios.git", from: "2.3.0")
2424
]
2525
```
2626

Sources/Authsignal/API/Models/Passkey/RegistrationOptsResponse.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public struct RegistrationOptsRelyingParty: Codable {
1616

1717
public struct RegistrationOptsUser: Codable {
1818
public let id: String
19+
public let name: String
1920
public let displayName: String
2021
}
2122

Sources/Authsignal/AuthsignalPasskey.swift

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)