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 {
|
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
|
case list
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,8 +423,8 @@ public final class SecureIdAuthController: ViewController, StandalonePresentable
|
|||||||
@objc private func cancelPressed() {
|
@objc private func cancelPressed() {
|
||||||
self.dismiss()
|
self.dismiss()
|
||||||
|
|
||||||
if case let .form(reqForm) = self.mode {
|
if case let .form(peerId, _, _, maybeCallbackUrl, _, _) = self.mode, let callbackUrl = maybeCallbackUrl {
|
||||||
self.openUrl(secureIdCallbackUrl(with: reqForm.callbackUrl, peerId: reqForm.peerId, result: .cancel, parameters: [:]))
|
self.openUrl(secureIdCallbackUrl(with: callbackUrl, peerId: peerId, result: .cancel, parameters: [:]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -639,13 +639,15 @@ public final class SecureIdAuthController: ViewController, StandalonePresentable
|
|||||||
@objc private func grantAccess() {
|
@objc private func grantAccess() {
|
||||||
switch self.state {
|
switch self.state {
|
||||||
case let .form(form):
|
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 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
|
|> deliverOnMainQueue).start(completed: { [weak self] in
|
||||||
self?.dismiss()
|
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:
|
case .list:
|
||||||
|
@ -439,7 +439,7 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur
|
|||||||
}
|
}
|
||||||
|
|
||||||
if valid {
|
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("}") {
|
if scope.hasPrefix("{") && scope.hasSuffix("}") {
|
||||||
opaquePayload = Data()
|
opaquePayload = Data()
|
||||||
if opaqueNonce.isEmpty {
|
if opaqueNonce.isEmpty {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user