1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Make token to be a string or a function

Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com>
This commit is contained in:
Panu Horsmalahti 2021-10-21 13:23:18 +03:00
parent fbc130fdfd
commit dd0ba16d45

View File

@ -22,6 +22,7 @@
// Base class for building all kubernetes apis // Base class for building all kubernetes apis
import merge from "lodash/merge"; import merge from "lodash/merge";
import isFunction from "lodash/isfunction";
import { stringify } from "querystring"; import { stringify } from "querystring";
import { apiKubePrefix, isDevelopment } from "../../common/vars"; import { apiKubePrefix, isDevelopment } from "../../common/vars";
import logger from "../../main/logger"; import logger from "../../main/logger";
@ -108,8 +109,7 @@ export interface IRemoteKubeApiConfig {
skipTLSVerify?: boolean; skipTLSVerify?: boolean;
} }
user: { user: {
token?: string; token?: string | (() => string);
getToken?: () => string;
clientCertificateData?: string; clientCertificateData?: string;
clientKeyData?: string; clientKeyData?: string;
} }
@ -133,16 +133,14 @@ export function forCluster<T extends KubeObject>(cluster: ILocalKubeApiConfig, k
}); });
} }
const getToken = (token: string | (() => string)) => isFunction(token) ? token() : token;
export function forRemoteCluster<T extends KubeObject>(config: IRemoteKubeApiConfig, kubeClass: KubeObjectConstructor<T>): KubeApi<T> { export function forRemoteCluster<T extends KubeObject>(config: IRemoteKubeApiConfig, kubeClass: KubeObjectConstructor<T>): KubeApi<T> {
const reqInit: RequestInit = {}; const reqInit: RequestInit = {};
if (config.user.token && config.user.getToken) { if (config.user.token) {
throw new Error("Provide either user.token or user.getToken");
}
if (config.user.token || config.user.getToken) {
reqInit.headers = { reqInit.headers = {
"Authorization": `Bearer ${config.user.token ?? config.user.getToken()}` "Authorization": `Bearer ${getToken(config.user.token)}`
}; };
} }
@ -172,10 +170,10 @@ export function forRemoteCluster<T extends KubeObject>(config: IRemoteKubeApiCon
serverAddress: config.cluster.server, serverAddress: config.cluster.server,
apiBase: "", apiBase: "",
debug: isDevelopment, debug: isDevelopment,
...(config.user.getToken ? { ...(config.user.token ? {
getRequestOptions: () => ({ getRequestOptions: () => ({
headers: { headers: {
"Authorization": `Bearer ${config.user.getToken()}` "Authorization": `Bearer ${getToken(config.user.token)}`
} }
}) })
} : {}) } : {})