mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix Passport request handling if no callbackUrl provided
This commit is contained in:
parent
5b5e3f22de
commit
91b81eadff
@ -65,7 +65,7 @@ final class SecureIdAuthControllerInteraction {
|
||||
}
|
||||
|
||||
public enum SecureIdAuthControllerMode {
|
||||
case form(peerId: PeerId, scope: String, publicKey: String, callbackUrl: String, opaquePayload: Data, opaqueNonce: Data)
|
||||
case form(peerId: PeerId, scope: String, publicKey: String, callbackUrl: String?, opaquePayload: Data, opaqueNonce: Data)
|
||||
case list
|
||||
}
|
||||
|
||||
@ -423,8 +423,8 @@ public final class SecureIdAuthController: ViewController, StandalonePresentable
|
||||
@objc private func cancelPressed() {
|
||||
self.dismiss()
|
||||
|
||||
if case let .form(reqForm) = self.mode {
|
||||
self.openUrl(secureIdCallbackUrl(with: reqForm.callbackUrl, peerId: reqForm.peerId, result: .cancel, parameters: [:]))
|
||||
if case let .form(peerId, _, _, maybeCallbackUrl, _, _) = self.mode, let callbackUrl = maybeCallbackUrl {
|
||||
self.openUrl(secureIdCallbackUrl(with: callbackUrl, peerId: peerId, result: .cancel, parameters: [:]))
|
||||
}
|
||||
}
|
||||
|
||||
@ -639,13 +639,15 @@ public final class SecureIdAuthController: ViewController, StandalonePresentable
|
||||
@objc private func grantAccess() {
|
||||
switch self.state {
|
||||
case let .form(form):
|
||||
if case let .form(reqForm) = self.mode, let encryptedFormData = form.encryptedFormData, let formData = form.formData {
|
||||
if case let .form(peerId, scope, publicKey, callbackUrl, opaquePayload, opaqueNonce) = self.mode, let encryptedFormData = form.encryptedFormData, let formData = form.formData {
|
||||
let values = parseRequestedFormFields(formData.requestedFields, values: formData.values, primaryLanguageByCountry: encryptedFormData.primaryLanguageByCountry).map({ $0.1 }).flatMap({ $0 })
|
||||
|
||||
let _ = (grantSecureIdAccess(network: self.context.account.network, peerId: encryptedFormData.servicePeer.id, publicKey: reqForm.publicKey, scope: reqForm.scope, opaquePayload: reqForm.opaquePayload, opaqueNonce: reqForm.opaqueNonce, values: values, requestedFields: formData.requestedFields)
|
||||
let _ = (grantSecureIdAccess(network: self.context.account.network, peerId: encryptedFormData.servicePeer.id, publicKey: publicKey, scope: scope, opaquePayload: opaquePayload, opaqueNonce: opaqueNonce, values: values, requestedFields: formData.requestedFields)
|
||||
|> deliverOnMainQueue).start(completed: { [weak self] in
|
||||
self?.dismiss()
|
||||
self?.openUrl(secureIdCallbackUrl(with: reqForm.callbackUrl, peerId: reqForm.peerId, result: .success, parameters: [:]))
|
||||
if let callbackUrl = callbackUrl {
|
||||
self?.openUrl(secureIdCallbackUrl(with: callbackUrl, peerId: peerId, result: .success, parameters: [:]))
|
||||
}
|
||||
})
|
||||
}
|
||||
case .list:
|
||||
|
@ -439,7 +439,7 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur
|
||||
}
|
||||
|
||||
if valid {
|
||||
if let botId = botId, let scope = scope, let publicKey = publicKey, let callbackUrl = callbackUrl {
|
||||
if let botId = botId, let scope = scope, let publicKey = publicKey {
|
||||
if scope.hasPrefix("{") && scope.hasSuffix("}") {
|
||||
opaquePayload = Data()
|
||||
if opaqueNonce.isEmpty {
|
||||
|
Loading…
x
Reference in New Issue
Block a user