Skip to content

Commit 7aca9ea

Browse files
committed
Introduce hidden preference for default oAuth provisioning url
1 parent c597d32 commit 7aca9ea

File tree

4 files changed

+34
-15
lines changed

4 files changed

+34
-15
lines changed

Diff for: src/main/java/org/broad/igv/oauth/OAuthUtils.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.gson.JsonParser;
3131
import org.broad.igv.logging.*;
3232
import org.broad.igv.DirectoryManager;
33+
import org.broad.igv.prefs.Constants;
3334
import org.broad.igv.prefs.PreferencesManager;
3435
import org.broad.igv.ui.IGVMenuBar;
3536
import org.broad.igv.ui.util.MessageUtils;
@@ -124,7 +125,7 @@ public OAuthProvider getGoogleProvider() {
124125
try {
125126
log.info("Loading Google oAuth properties");
126127
googleProvider = loadDefaultOauthProperties();
127-
if (IGVMenuBar.getInstance() != null) {
128+
if (googleProvider != null && IGVMenuBar.getInstance() != null) {
128129
IGVMenuBar.getInstance().enableGoogleMenu(true);
129130
}
130131
} catch (IOException e) {
@@ -142,10 +143,15 @@ public OAuthProvider getGoogleProvider() {
142143
* @throws IOException
143144
*/
144145
private OAuthProvider loadDefaultOauthProperties() throws IOException {
145-
String json = loadAsString(PROPERTIES_URL);
146-
JsonParser parser = new JsonParser();
147-
JsonObject obj = parser.parse(json).getAsJsonObject();
148-
return parseProviderObject(obj);
146+
String propertiesURL = PreferencesManager.getPreferences().get(Constants.PROVISIONING_URL_DEFAULT);
147+
if(propertiesURL != null && propertiesURL.length() > 0) {
148+
String json = loadAsString(propertiesURL);
149+
JsonParser parser = new JsonParser();
150+
JsonObject obj = parser.parse(json).getAsJsonObject();
151+
return parseProviderObject(obj);
152+
} else {
153+
return null;
154+
}
149155
}
150156

151157
/**

Diff for: src/main/java/org/broad/igv/prefs/Constants.java

+1
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ private Constants() {
292292

293293
// OAuth provisioning
294294
public static final String PROVISIONING_URL = "PROVISIONING.URL";
295+
public static final String PROVISIONING_URL_DEFAULT = "PROVISIONING_URL_DEFAULT";
295296

296297
// JBrowse circular view integration
297298
public static final String CIRC_VIEW_ENABLED = "CIRC_VIEW_ENABLED";

Diff for: src/main/java/org/broad/igv/ui/IGVMenuBar.java

+21-10
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,11 @@ private List<AbstractButton> createMenus() {
187187
// by loading a protected Google resource
188188
try {
189189
googleMenu = createGoogleMenu();
190-
boolean enabled = PreferencesManager.getPreferences().getAsBoolean(ENABLE_GOOGLE_MENU);
191-
enableGoogleMenu(enabled);
192-
menus.add(googleMenu);
190+
if(googleMenu != null) {
191+
boolean enabled = PreferencesManager.getPreferences().getAsBoolean(ENABLE_GOOGLE_MENU);
192+
enableGoogleMenu(enabled);
193+
menus.add(googleMenu);
194+
}
193195
} catch (IOException e) {
194196
log.error("Error creating google menu: " + e.getMessage());
195197
}
@@ -1049,12 +1051,20 @@ public void menuCanceled(MenuEvent e) {
10491051

10501052
private JMenu createGoogleMenu() {
10511053

1054+
final OAuthProvider googleProvider = OAuthUtils.getInstance().getGoogleProvider();
1055+
if(googleProvider == null) {
1056+
log.error("Error creating google oauth provider");
1057+
return null;
1058+
}
1059+
1060+
10521061
googleMenu = new JMenu("Google");
10531062

10541063
final JMenuItem login = new JMenuItem("Login ... ");
1064+
10551065
login.addActionListener(e -> {
10561066
try {
1057-
OAuthUtils.getInstance().getGoogleProvider().openAuthorizationPage();
1067+
googleProvider.openAuthorizationPage();
10581068
} catch (Exception ex) {
10591069
MessageUtils.showErrorMessage("Error fetching oAuth tokens. See log for details", ex);
10601070
log.error("Error fetching oAuth tokens", ex);
@@ -1065,7 +1075,7 @@ private JMenu createGoogleMenu() {
10651075

10661076
final JMenuItem logout = new JMenuItem("Logout ");
10671077
logout.addActionListener(e -> {
1068-
OAuthUtils.getInstance().getGoogleProvider().logout();
1078+
googleProvider.logout();
10691079
GoogleUtils.setProjectID(null);
10701080
});
10711081
googleMenu.add(logout);
@@ -1077,10 +1087,9 @@ private JMenu createGoogleMenu() {
10771087
googleMenu.addMenuListener(new MenuListener() {
10781088
@Override
10791089
public void menuSelected(MenuEvent e) {
1080-
OAuthProvider oauth = OAuthUtils.getInstance().getGoogleProvider();
1081-
boolean loggedIn = oauth.isLoggedIn();
1082-
if (loggedIn && oauth.getCurrentUserName() != null) {
1083-
login.setText(oauth.getCurrentUserName());
1090+
boolean loggedIn = googleProvider.isLoggedIn();
1091+
if (loggedIn && googleProvider.getCurrentUserName() != null) {
1092+
login.setText(googleProvider.getCurrentUserName());
10841093
} else {
10851094
login.setText("Login ...");
10861095
}
@@ -1112,7 +1121,9 @@ public void menuCanceled(MenuEvent e) {
11121121
* @throws IOException
11131122
*/
11141123
public void enableGoogleMenu(boolean enable) throws IOException {
1115-
googleMenu.setVisible(enable);
1124+
if(googleMenu != null) {
1125+
googleMenu.setVisible(enable);
1126+
}
11161127
}
11171128

11181129
// public void enableRemoveGenomes() {

Diff for: src/main/resources/org/broad/igv/prefs/preferences.tab

+1
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ CIRC_VIEW_PORT CircView port integer 60152
291291

292292
#Hidden
293293

294+
PROVISIONING_URL_DEFAULT https://igv.org/services/desktop_google
294295
SAM.SHOW_JUNCTION_FLANKINGREGIONS FALSE
295296
SAM.JUNCTION_MIN_FLANKING_WIDTH 0
296297
SAM.JUNCTION_MIN_COVERAGE 1

0 commit comments

Comments
 (0)