Add a discoverableByPhoneNumber account attribute. (SERVER-129)

This commit is contained in:
Jon Chambers
2020-08-18 12:03:13 -04:00
committed by Jon Chambers
parent 3b55b2d1b2
commit 58e3122dab
6 changed files with 78 additions and 14 deletions

View File

@@ -482,6 +482,7 @@ public class AccountController {
account.setUnidentifiedAccessKey(attributes.getUnidentifiedAccessKey());
account.setUnrestrictedUnidentifiedAccess(attributes.isUnrestrictedUnidentifiedAccess());
account.setPayments(attributes.getPayments());
account.setDiscoverableByPhoneNumber(attributes.isDiscoverableByPhoneNumber());
accounts.update(account);
}
@@ -629,6 +630,7 @@ public class AccountController {
account.setUnidentifiedAccessKey(accountAttributes.getUnidentifiedAccessKey());
account.setUnrestrictedUnidentifiedAccess(accountAttributes.isUnrestrictedUnidentifiedAccess());
account.setPayments(accountAttributes.getPayments());
account.setDiscoverableByPhoneNumber(accountAttributes.isDiscoverableByPhoneNumber());
if (accounts.create(account)) {
newUserMeter.mark();

View File

@@ -23,7 +23,9 @@ import org.whispersystems.textsecuregcm.storage.Device;
import org.whispersystems.textsecuregcm.storage.Device.DeviceCapabilities;
import org.whispersystems.textsecuregcm.storage.PaymentAddress;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Optional;
public class AccountAttributes {
@@ -58,22 +60,26 @@ public class AccountAttributes {
@JsonProperty
private DeviceCapabilities capabilities;
@JsonProperty
private boolean discoverableByPhoneNumber = true;
public AccountAttributes() {}
@VisibleForTesting
public AccountAttributes(String signalingKey, boolean fetchesMessages, int registrationId, String pin) {
this(signalingKey, fetchesMessages, registrationId, null, pin, null, null);
this(signalingKey, fetchesMessages, registrationId, null, pin, null, null, true);
}
@VisibleForTesting
public AccountAttributes(String signalingKey, boolean fetchesMessages, int registrationId, String name, String pin, String registrationLock, List<PaymentAddress> payments) {
this.signalingKey = signalingKey;
this.fetchesMessages = fetchesMessages;
this.registrationId = registrationId;
this.name = name;
this.pin = pin;
this.registrationLock = registrationLock;
this.payments = payments;
public AccountAttributes(String signalingKey, boolean fetchesMessages, int registrationId, String name, String pin, String registrationLock, List<PaymentAddress> payments, boolean discoverableByPhoneNumber) {
this.signalingKey = signalingKey;
this.fetchesMessages = fetchesMessages;
this.registrationId = registrationId;
this.name = name;
this.pin = pin;
this.registrationLock = registrationLock;
this.payments = payments;
this.discoverableByPhoneNumber = discoverableByPhoneNumber;
}
public String getSignalingKey() {
@@ -115,4 +121,8 @@ public class AccountAttributes {
public List<PaymentAddress> getPayments() {
return payments;
}
public boolean isDiscoverableByPhoneNumber() {
return discoverableByPhoneNumber;
}
}

View File

@@ -70,6 +70,9 @@ public class Account implements Principal {
@JsonProperty("uua")
private boolean unrestrictedUnidentifiedAccess;
@JsonProperty("inCds")
private boolean discoverableByPhoneNumber = true;
@JsonIgnore
private Device authenticatedDevice;
@@ -272,6 +275,14 @@ public class Account implements Principal {
else throw new AssertionError();
}
public boolean isDiscoverableByPhoneNumber() {
return this.discoverableByPhoneNumber;
}
public void setDiscoverableByPhoneNumber(final boolean discoverableByPhoneNumber) {
this.discoverableByPhoneNumber = discoverableByPhoneNumber;
}
// Principal implementation
@Override