Auth requests using UUID
This commit is contained in:
parent
27cf3ab5a3
commit
1392d43a5d
@ -125,11 +125,11 @@ public class AccountManager: NSObject {
|
||||
}
|
||||
|
||||
Logger.debug("registering with signal server")
|
||||
var pendingUuid: UUID?
|
||||
let registrationPromise: Promise<Void> = firstly { () -> Promise<UUID?> in
|
||||
self.registerForTextSecure(verificationCode: verificationCode, pin: pin)
|
||||
}.then { (uuid: UUID?) -> Promise<Void> in
|
||||
pendingUuid = uuid
|
||||
assert(!FeatureFlags.allowUUIDOnlyContacts || uuid != nil)
|
||||
TSAccountManager.sharedInstance().uuidAwaitingVerification = uuid
|
||||
return self.accountServiceClient.updateAttributes()
|
||||
}.then {
|
||||
self.createPreKeys()
|
||||
@ -149,8 +149,7 @@ public class AccountManager: NSObject {
|
||||
}
|
||||
}
|
||||
}.done { (_) -> Void in
|
||||
assert(!FeatureFlags.allowUUIDOnlyContacts || pendingUuid != nil)
|
||||
self.completeRegistration(uuid: pendingUuid)
|
||||
self.completeRegistration()
|
||||
}
|
||||
|
||||
registrationPromise.retainUntilComplete()
|
||||
@ -204,9 +203,9 @@ public class AccountManager: NSObject {
|
||||
return job.run()
|
||||
}
|
||||
|
||||
private func completeRegistration(uuid: UUID?) {
|
||||
private func completeRegistration() {
|
||||
Logger.info("")
|
||||
tsAccountManager.didRegister(uuid: uuid)
|
||||
tsAccountManager.didRegister()
|
||||
}
|
||||
|
||||
// MARK: Message Delivery
|
||||
|
||||
@ -32,6 +32,7 @@ typedef NS_ENUM(NSUInteger, OWSRegistrationState) {
|
||||
@property (nonatomic, readonly) SDSKeyValueStore *keyValueStore;
|
||||
|
||||
@property (nonatomic, nullable) NSString *phoneNumberAwaitingVerification;
|
||||
@property (nonatomic, nullable) NSUUID *uuidAwaitingVerification;
|
||||
|
||||
#pragma mark - Initializers
|
||||
|
||||
@ -94,7 +95,7 @@ typedef NS_ENUM(NSUInteger, OWSRegistrationState) {
|
||||
// - obtained signal server credentials
|
||||
// - uploaded pre-keys
|
||||
// - uploaded push tokens
|
||||
- (void)didRegisterWithUUID:(nullable NSUUID *)uuid NS_SWIFT_NAME(didRegister(uuid:));
|
||||
- (void)didRegister;
|
||||
- (void)recordUuidForLegacyUser:(NSUUID *)uuid NS_SWIFT_NAME(recordUuidForLegacyUser(_:));
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
|
||||
@ -182,15 +182,20 @@ NSString *const TSAccountManager_NeedsAccountAttributesUpdateKey = @"TSAccountMa
|
||||
return self.registrationState == OWSRegistrationState_Registered;
|
||||
}
|
||||
|
||||
- (void)didRegisterWithUUID:(nullable NSUUID *)uuid
|
||||
- (void)didRegister
|
||||
{
|
||||
OWSLogInfo(@"didRegister");
|
||||
NSString *phoneNumber = self.phoneNumberAwaitingVerification;
|
||||
NSUUID *uuid = self.uuidAwaitingVerification;
|
||||
|
||||
if (!phoneNumber) {
|
||||
OWSFail(@"phoneNumber was unexpectedly nil");
|
||||
}
|
||||
|
||||
if (SSKFeatureFlags.allowUUIDOnlyContacts && !uuid) {
|
||||
OWSFail(@"uuid was unexpectedly nil");
|
||||
}
|
||||
|
||||
[self.databaseStorage writeWithBlock:^(SDSAnyWriteTransaction *transaction) {
|
||||
[self storeLocalNumber:phoneNumber uuid:uuid transaction:transaction];
|
||||
}];
|
||||
@ -274,6 +279,11 @@ NSString *const TSAccountManager_NeedsAccountAttributesUpdateKey = @"TSAccountMa
|
||||
|
||||
- (nullable NSUUID *)uuid
|
||||
{
|
||||
NSUUID *awaitingVerif = self.uuidAwaitingVerification;
|
||||
if (awaitingVerif) {
|
||||
return awaitingVerif;
|
||||
}
|
||||
|
||||
// Cache this since we access this a lot, and once set it will not change.
|
||||
@synchronized(self) {
|
||||
if (self.cachedUuid == nil) {
|
||||
@ -351,6 +361,7 @@ NSString *const TSAccountManager_NeedsAccountAttributesUpdateKey = @"TSAccountMa
|
||||
[self.keyValueStore removeValueForKey:TSAccountManager_ReregisteringPhoneNumberKey transaction:transaction];
|
||||
|
||||
self.phoneNumberAwaitingVerification = nil;
|
||||
self.uuidAwaitingVerification = nil;
|
||||
self.cachedLocalNumber = localNumber;
|
||||
}
|
||||
}
|
||||
@ -671,6 +682,8 @@ NSString *const TSAccountManager_NeedsAccountAttributesUpdateKey = @"TSAccountMa
|
||||
_isRegistered = NO;
|
||||
_cachedLocalNumber = nil;
|
||||
_phoneNumberAwaitingVerification = nil;
|
||||
_cachedUuid = nil;
|
||||
_uuidAwaitingVerification = nil;
|
||||
_cachedIsDeregistered = nil;
|
||||
[self.databaseStorage writeWithBlock:^(SDSAnyWriteTransaction *transaction) {
|
||||
[self.keyValueStore removeAllWithTransaction:transaction];
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#import <SignalCoreKit/NSData+OWS.h>
|
||||
#import <SignalMetadataKit/SignalMetadataKit-Swift.h>
|
||||
#import <SignalServiceKit/SSKEnvironment.h>
|
||||
#import <SignalServiceKit/SignalServiceKit-Swift.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@ -109,7 +110,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
OWSAssertDebug(self.shouldHaveAuthorizationHeaders);
|
||||
|
||||
@synchronized(self) {
|
||||
return (_authUsername ?: [TSAccountManager localNumber]);
|
||||
return (_authUsername ?: TSAccountManager.sharedInstance.localAddress.serviceIdentifier);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user