diff --git a/client/src/actions/connection.js b/client/src/actions/connection.js
index 09466669..86269eaa 100644
--- a/client/src/actions/connection.js
+++ b/client/src/actions/connection.js
@@ -31,6 +31,7 @@ export const SET_ACL_ENABLED = "connection/SET_ACL_ENABLED";
export const SET_BACKUP_ENABLED = "connection/SET_BACKUP_ENABLED";
export const SET_QUERY_TIMEOUT = "connection/SET_QUERY_TIMEOUT";
export const SET_SLASH_API_KEY = "connection/SET_SLASH_API_KEY";
+export const SET_AUTH_TOKEN = "connection/SET_AUTH_TOKEN";
export const REMOVE_URL = "connection/REMOVE_URL";
export const UPDATE_URL = "connection/UPDATE_URL";
export const UPDATE_ACL_STATE = "connection/UPDATE_ACL_STATE";
@@ -70,6 +71,14 @@ export function setSlashApiKey(url, slashApiKey) {
};
}
+export function setAuthToken(url, authToken) {
+ return {
+ type: SET_AUTH_TOKEN,
+ url,
+ authToken,
+ };
+}
+
export function setAclEnabled(url, isAclEnabled) {
return {
type: SET_ACL_ENABLED,
diff --git a/client/src/components/ServerConnectionModal.js b/client/src/components/ServerConnectionModal.js
index ca77e101..5474dd21 100644
--- a/client/src/components/ServerConnectionModal.js
+++ b/client/src/components/ServerConnectionModal.js
@@ -153,6 +153,22 @@ export default function ServerConnectionModal() {
}
/>
+
+ Auth Token:
+
+ dispatch(
+ actions.setAuthToken(
+ activeServer.url,
+ e.target.value,
+ ),
+ )
+ }
+ />
+
);
diff --git a/client/src/containers/AppProvider.js b/client/src/containers/AppProvider.js
index 3c50af8c..d10f4be9 100644
--- a/client/src/containers/AppProvider.js
+++ b/client/src/containers/AppProvider.js
@@ -22,7 +22,12 @@ import ReduxThunk from "redux-thunk";
import { getAddrParam, getHashParams } from "lib/helpers";
import { runQuery, setResultsTab } from "actions/frames";
-import { loginUser, setSlashApiKey, updateUrl } from "actions/connection";
+import {
+ loginUser,
+ setSlashApiKey,
+ setAuthToken,
+ updateUrl
+} from "actions/connection";
import {
migrateToServerConnection,
migrateToHaveZeroUrl,
@@ -119,6 +124,14 @@ export default class AppProvider extends React.Component {
),
);
}
+ if (hashParams.authToken) {
+ store.dispatch(
+ setAuthToken(
+ hashParams.addr || addrParam,
+ hashParams.authToken,
+ ),
+ );
+ }
if (hashParams.query) {
store.dispatch(updateAction("query"));
store.dispatch(updateQuery(hashParams.query));
diff --git a/client/src/lib/helpers.js b/client/src/lib/helpers.js
index 0f4e1d78..4a6e192b 100644
--- a/client/src/lib/helpers.js
+++ b/client/src/lib/helpers.js
@@ -111,6 +111,10 @@ export function setCurrentServerSlashApiKey(slashApiKey) {
clientStubOptions.headers["X-Auth-Token"] = slashApiKey;
}
+export function setCurrentServerAuthToken(authToken) {
+ clientStubOptions.headers["X-Dgraph-AuthToken"] = authToken;
+}
+
export const getDgraphClient = async () =>
(await createDgraphClient(dgraphServerUrl)).client;
diff --git a/client/src/reducers/connection.js b/client/src/reducers/connection.js
index 0403c9f9..8b2844d1 100644
--- a/client/src/reducers/connection.js
+++ b/client/src/reducers/connection.js
@@ -25,6 +25,7 @@ import {
SET_BACKUP_ENABLED,
SET_QUERY_TIMEOUT,
SET_SLASH_API_KEY,
+ SET_AUTH_TOKEN,
REMOVE_URL,
UPDATE_URL,
UPDATE_ACL_STATE,
@@ -41,6 +42,7 @@ import {
getDefaultUrl,
setCurrentServerQueryTimeout,
setCurrentServerSlashApiKey,
+ setCurrentServerAuthToken,
setCurrentServerUrl,
sanitizeUrl,
} from "lib/helpers";
@@ -71,6 +73,7 @@ const makeServerRecord = url => ({
aclState: Unknown,
queryTimeout: QUERY_TIMEOUT_DEFAULT,
slashApiKey: null,
+ accessToken: null,
isAclEnabled: true,
isBackupEnabled: true,
@@ -189,6 +192,13 @@ export default (state = defaultState, action) =>
setCurrentServerSlashApiKey(activeServer.slashApiKey);
}
break;
+ case SET_AUTH_TOKEN:
+ assert(action.url, "This action requires url " + action.type);
+ activeServer.authToken = action.authToken;
+ if (action.url === currentServer.url) {
+ setCurrentServerAuthToken(activeServer.authToken);
+ }
+ break;
case DO_LOGOUT:
logoutServer(currentServer);