Skip to content

Commit

Permalink
remove gmail-oauth2
Browse files Browse the repository at this point in the history
- 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
  • Loading branch information
r10s committed Aug 14, 2024
1 parent 19b890c commit dcc45e7
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
9 changes: 9 additions & 0 deletions src/main/java/com/b44t/messenger/DcContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,15 @@ public void assumeMultiDevice() {
}
}

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
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

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;
Expand Down Expand Up @@ -141,6 +143,20 @@ protected void onCreate(Bundle icicle, boolean ready) {
}
// /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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,16 @@ public void onTextChanged(CharSequence s, int start, int before, int count) { }

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;

Expand Down Expand Up @@ -424,6 +433,13 @@ protected Void doInBackground(Void... voids) {
// 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;
}

Expand Down

0 comments on commit dcc45e7

Please sign in to comment.