Add additional changes for Portal RBAC functionality
This commit is contained in:
parent
be871737ad
commit
24af64a66d
|
@ -185,9 +185,6 @@ export class CassandraProxyAPIs {
|
|||
export class Queries {
|
||||
public static CustomPageOption: string = "custom";
|
||||
public static UnlimitedPageOption: string = "unlimited";
|
||||
public static setAutomaticRBACOption: string = "Automatic";
|
||||
public static setTrueRBACOption: string = "True";
|
||||
public static setFalseRBACOption: string = "False";
|
||||
public static itemsPerPage: number = 100;
|
||||
public static unlimitedItemsPerPage: number = 100; // TODO: Figure out appropriate value so it works for accounts with a large number of partitions
|
||||
public static containersPerPage: number = 50;
|
||||
|
@ -199,6 +196,12 @@ export class Queries {
|
|||
public static readonly DefaultMaxWaitTimeInSeconds = 30;
|
||||
}
|
||||
|
||||
export class RBACOptions {
|
||||
public static setAutomaticRBACOption: string = "Automatic";
|
||||
public static setTrueRBACOption: string = "True";
|
||||
public static setFalseRBACOption: string = "False";
|
||||
}
|
||||
|
||||
export class SavedQueries {
|
||||
public static readonly CollectionName: string = "___Query";
|
||||
public static readonly DatabaseName: string = "___Cosmos";
|
||||
|
|
|
@ -17,12 +17,23 @@ const _global = typeof self === "undefined" ? window : self;
|
|||
export const tokenProvider = async (requestInfo: Cosmos.RequestInfo) => {
|
||||
const { verb, resourceId, resourceType, headers } = requestInfo;
|
||||
|
||||
if (userContext.features.enableAadDataPlane && userContext.aadToken) {
|
||||
console.log(`AAD Data Plane RBAC enabled "${userContext.dataPlaneRbacEnabled}" `);
|
||||
if ((userContext.features.enableAadDataPlane || userContext.dataPlaneRbacEnabled) && userContext.aadToken) {
|
||||
console.log(` Getting Auth token `);
|
||||
const AUTH_PREFIX = `type=aad&ver=1.0&sig=`;
|
||||
const authorizationToken = `${AUTH_PREFIX}${userContext.aadToken}`;
|
||||
console.log(`Returning Auth token`);
|
||||
return authorizationToken;
|
||||
}
|
||||
|
||||
if ((userContext.dataPlaneRbacEnabled) && userContext.authorizationToken) {
|
||||
console.log(` Getting Portal Auth token `)
|
||||
const AUTH_PREFIX = `type=aad&ver=1.0&sig=`;
|
||||
const authorizationToken = `${AUTH_PREFIX}${userContext.authorizationToken}`;
|
||||
console.log(`Returning Portal Auth token`);
|
||||
return authorizationToken;
|
||||
}
|
||||
|
||||
if (configContext.platform === Platform.Emulator) {
|
||||
// TODO This SDK method mutates the headers object. Find a better one or fix the SDK.
|
||||
await Cosmos.setAuthorizationTokenHeaderUsingMasterKey(verb, resourceId, resourceType, headers, EmulatorMasterKey);
|
||||
|
|
|
@ -45,11 +45,11 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||
: Constants.Queries.CustomPageOption,
|
||||
);
|
||||
const [enableDataPlaneRBACOption, setEnableDataPlaneRBACOption] = useState<string>(
|
||||
LocalStorageUtility.getEntryString(StorageKey.DataPlaneRbacEnabled) === Constants.Queries.setAutomaticRBACOption
|
||||
? Constants.Queries.setAutomaticRBACOption
|
||||
: LocalStorageUtility.getEntryString(StorageKey.DataPlaneRbacEnabled) === Constants.Queries.setTrueRBACOption
|
||||
? Constants.Queries.setTrueRBACOption
|
||||
: Constants.Queries.setFalseRBACOption
|
||||
LocalStorageUtility.getEntryString(StorageKey.DataPlaneRbacEnabled) === Constants.RBACOptions.setAutomaticRBACOption
|
||||
? Constants.RBACOptions.setAutomaticRBACOption
|
||||
: LocalStorageUtility.getEntryString(StorageKey.DataPlaneRbacEnabled) === Constants.RBACOptions.setTrueRBACOption
|
||||
? Constants.RBACOptions.setTrueRBACOption
|
||||
: Constants.RBACOptions.setFalseRBACOption
|
||||
);
|
||||
const [ruThresholdEnabled, setRUThresholdEnabled] = useState<boolean>(isRUThresholdEnabled());
|
||||
const [ruThreshold, setRUThreshold] = useState<number>(getRUThreshold());
|
||||
|
@ -222,9 +222,14 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||
];
|
||||
|
||||
const dataPlaneRBACOptionsList: IChoiceGroupOption[] = [
|
||||
{ key: Constants.Queries.setAutomaticRBACOption, text: "Automatic" },
|
||||
{ key: Constants.Queries.setTrueRBACOption, text: "True" },
|
||||
{ key: Constants.Queries.setFalseRBACOption, text: "False"}
|
||||
{ key: Constants.RBACOptions.setAutomaticRBACOption, text: "Automatic" },
|
||||
{ key: Constants.RBACOptions.setTrueRBACOption, text: "True" },
|
||||
{ key: Constants.RBACOptions.setFalseRBACOption, text: "False"}
|
||||
];
|
||||
|
||||
const defaultQueryResultsViewOptionList: IChoiceGroupOption[] = [
|
||||
{ key: SplitterDirection.Vertical, text: "Vertical" },
|
||||
{ key: SplitterDirection.Horizontal, text: "Horizontal" },
|
||||
];
|
||||
|
||||
const handleOnPriorityLevelOptionChange = (
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import * as Constants from "Common/Constants";
|
||||
import { createUri } from "Common/UrlUtility";
|
||||
import { DATA_EXPLORER_RPC_VERSION } from "Contracts/DataExplorerMessagesContract";
|
||||
import { FabricMessageTypes } from "Contracts/FabricMessageTypes";
|
||||
|
@ -274,7 +275,7 @@ async function configureHostedWithAAD(config: AAD): Promise<Explorer> {
|
|||
try {
|
||||
if(LocalStorageUtility.hasItem(StorageKey.DataPlaneRbacEnabled)) {
|
||||
var isDataPlaneRbacSetting = LocalStorageUtility.getEntryString(StorageKey.DataPlaneRbacEnabled);
|
||||
if (isDataPlaneRbacSetting == "Automatic")
|
||||
if (isDataPlaneRbacSetting == Constants.RBACOptions.setAutomaticRBACOption)
|
||||
{
|
||||
if (!account.properties.disableLocalAuth) {
|
||||
keys = await listKeys(subscriptionId, resourceGroup, account.name);
|
||||
|
@ -285,7 +286,7 @@ async function configureHostedWithAAD(config: AAD): Promise<Explorer> {
|
|||
});
|
||||
}
|
||||
}
|
||||
else if(isDataPlaneRbacSetting == "True") {
|
||||
else if(isDataPlaneRbacSetting == Constants.RBACOptions.setTrueRBACOption) {
|
||||
updateUserContext({
|
||||
dataPlaneRbacEnabled: true
|
||||
});
|
||||
|
@ -456,7 +457,7 @@ async function configurePortal(): Promise<Explorer> {
|
|||
|
||||
// Check for init message
|
||||
const message: PortalMessage = event.data?.data;
|
||||
const inputs = message?.inputs;
|
||||
const inputs = message?.inputs;
|
||||
const openAction = message?.openAction;
|
||||
if (inputs) {
|
||||
if (
|
||||
|
@ -475,27 +476,29 @@ async function configurePortal(): Promise<Explorer> {
|
|||
setTimeout(() => explorer.openNPSSurveyDialog(), 3000);
|
||||
}
|
||||
|
||||
let dbAccount = userContext.databaseAccount;
|
||||
let keys: DatabaseAccountListKeysResult = {};
|
||||
const account = userContext.databaseAccount;
|
||||
const subscriptionId = userContext.subscriptionId;
|
||||
const resourceGroup = userContext.resourceGroup;
|
||||
|
||||
if(LocalStorageUtility.hasItem(StorageKey.DataPlaneRbacEnabled)) {
|
||||
var isDataPlaneRbacSetting = LocalStorageUtility.getEntryString(StorageKey.DataPlaneRbacEnabled);
|
||||
if (isDataPlaneRbacSetting == "Automatic")
|
||||
if (isDataPlaneRbacSetting == Constants.RBACOptions.setAutomaticRBACOption)
|
||||
{
|
||||
if (!account.properties.disableLocalAuth) {
|
||||
keys = await listKeys(subscriptionId, resourceGroup, account.name);
|
||||
}
|
||||
else {
|
||||
updateUserContext({
|
||||
dataPlaneRbacEnabled: true
|
||||
dataPlaneRbacEnabled: true,
|
||||
authorizationToken: message.inputs.authorizationToken
|
||||
});
|
||||
}
|
||||
}
|
||||
else if(isDataPlaneRbacSetting == "True") {
|
||||
else if(isDataPlaneRbacSetting == Constants.RBACOptions.setTrueRBACOption) {
|
||||
updateUserContext({
|
||||
dataPlaneRbacEnabled: true
|
||||
dataPlaneRbacEnabled: true,
|
||||
authorizationToken: message.inputs.authorizationToken
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in New Issue