remove gmail-oauth2

- add a device message for existing profiles potentially using gmail
- reset oauth2 method for existing profiles on opening login screen
- do not offer gmail-oauth2 for new profiles
This commit is contained in:
B. Petersen
2024-08-14 15:25:34 +02:00
committed by bjoern
parent 9075c52356
commit a50d8b9f2f
3 changed files with 42 additions and 1 deletions
@@ -260,6 +260,15 @@ public class DcContext {
}
}
public boolean isGmailOauth2Addr(String addr) {
final String oauth2url = getOauth2Url(addr, "chat.delta:/foo");
return isGmailOauth2Url(oauth2url);
}
public boolean isGmailOauth2Url(String oauth2url) {
return oauth2url.startsWith("https://accounts.google.com/");
}
/**
* @return true if at least one chat has location streaming enabled
*/
@@ -18,6 +18,8 @@ package org.thoughtcrime.securesms;
import static org.thoughtcrime.securesms.ConversationActivity.CHAT_ID_EXTRA;
import static org.thoughtcrime.securesms.ConversationActivity.STARTING_POSITION_EXTRA;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_ADDRESS;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SERVER_FLAGS;
import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent;
import static org.thoughtcrime.securesms.util.RelayUtil.getDirectSharingChatId;
import static org.thoughtcrime.securesms.util.RelayUtil.getSharedTitle;
@@ -141,6 +143,20 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
}
// /add info
// remove gmail oauth2
final int serverFlags = dcContext.getConfigInt(CONFIG_SERVER_FLAGS);
if ((serverFlags & DcContext.DC_LP_AUTH_OAUTH2)!=0) {
Util.runOnAnyBackgroundThread(() -> {
if (dcContext.isGmailOauth2Addr(dcContext.getConfig(CONFIG_ADDRESS))) {
final DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setText("⚠️ GMail Users: If you have problems using GMail, go to \"Settings / Advanced / Password and Account\".\n\nThere, login again using an \"App Password\".");
dcContext.addDeviceMsg("info_about_gmail_oauth2_removal8", msg);
}
});
}
// /remove gmail oauth2
} catch(Exception e) {
e.printStackTrace();
}
@@ -231,7 +231,16 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
int serverFlags = DcHelper.getInt(this, CONFIG_SERVER_FLAGS);
int sel = 0;
if((serverFlags&DcContext.DC_LP_AUTH_OAUTH2)!=0) sel = 1;
if((serverFlags&DcContext.DC_LP_AUTH_OAUTH2)!=0) {
sel = 1;
// remove gmail oauth2
if (DcHelper.getContext(this).isGmailOauth2Addr(email)) { // this is a blocking call, not perfect, but as rarely used and temporary, good enough
sel = 0;
updateProviderInfo(); // we refer to the hints in the device message, show them immediately
}
// /remove gmail oauth2
}
authMethod.setSelection(sel);
expandAdvanced = expandAdvanced || sel != 0;
@@ -424,6 +433,13 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
// and should be whitelisted by the supported oauth2 services
String redirectUrl = "chat.delta:/"+BuildConfig.APPLICATION_ID+"/auth";
oauth2url = dcContext.getOauth2Url(email, redirectUrl);
// remove gmail oauth2
if (dcContext.isGmailOauth2Url(oauth2url)) {
oauth2url = null;
}
// /remove gmail oauth2
return null;
}