Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/app-utils/src/components/useUser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { UserContext } from '@deephaven/auth-plugins';
export function useUser() {
return useContextOrThrow(
UserContext,
'No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?'
'No user available in useUser. Was code wrapped in UserBootstrap or UserContext.Provider?'
);
}

Expand Down
48 changes: 0 additions & 48 deletions packages/auth-plugins/src/UserUtils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,7 @@ describe('getUser', () => {
operateAs: '',
groups: [],
permissions: {
isACLEditor: false,
isSuperUser: false,
isQueryViewOnly: false,
isNonInteractive: false,
canUsePanels: true,
canCreateDashboard: true,
canCreateCodeStudio: true,
canCreateQueryMonitor: true,
canCopy: true,
canDownloadCsv: true,
canLogout: true,
Expand All @@ -42,17 +35,7 @@ describe('getUser', () => {
serverConfig.set('internal.webClient.appInit.name', 'test');
serverConfig.set('internal.webClient.appInit.operateAs', 'test-operator');
serverConfig.set('internal.webClient.appInit.groups', 'group1,group2');
serverConfig.set('internal.webClient.appInit.isACLEditor', 'true');
serverConfig.set('internal.webClient.appInit.isSuperUser', 'true');
serverConfig.set('internal.webClient.appInit.isQueryViewOnly', 'true');
serverConfig.set('internal.webClient.appInit.isNonInteractive', 'true');
serverConfig.set('internal.webClient.appInit.canUsePanels', 'false');
serverConfig.set('internal.webClient.appInit.canCreateDashboard', 'false');
serverConfig.set('internal.webClient.appInit.canCreateCodeStudio', 'false');
serverConfig.set(
'internal.webClient.appInit.canCreateQueryMonitor',
'false'
);
serverConfig.set('internal.webClient.appInit.canCopy', 'false');
serverConfig.set('internal.webClient.appInit.canDownloadCsv', 'false');
serverConfig.set('internal.webClient.appInit.canLogout', 'false');
Expand All @@ -61,14 +44,7 @@ describe('getUser', () => {
operateAs: 'test-operator',
groups: ['group1', 'group2'],
permissions: {
isACLEditor: true,
isSuperUser: true,
isQueryViewOnly: true,
isNonInteractive: true,
canUsePanels: false,
canCreateDashboard: false,
canCreateCodeStudio: false,
canCreateQueryMonitor: false,
canCopy: false,
canDownloadCsv: false,
canLogout: false,
Expand All @@ -81,17 +57,7 @@ describe('getUser', () => {
serverConfig.set('internal.webClient.appInit.name', 'test');
serverConfig.set('internal.webClient.appInit.operateAs', 'test-operator');
serverConfig.set('internal.webClient.appInit.groups', 'group1,group2');
serverConfig.set('internal.webClient.appInit.isACLEditor', 'true');
serverConfig.set('internal.webClient.appInit.isSuperUser', 'true');
serverConfig.set('internal.webClient.appInit.isQueryViewOnly', 'true');
serverConfig.set('internal.webClient.appInit.isNonInteractive', 'true');
serverConfig.set('internal.webClient.appInit.canUsePanels', 'false');
serverConfig.set('internal.webClient.appInit.canCreateDashboard', 'false');
serverConfig.set('internal.webClient.appInit.canCreateCodeStudio', 'false');
serverConfig.set(
'internal.webClient.appInit.canCreateQueryMonitor',
'false'
);
serverConfig.set('internal.webClient.appInit.canCopy', 'false');
serverConfig.set('internal.webClient.appInit.canDownloadCsv', 'false');
serverConfig.set('internal.webClient.appInit.canLogout', 'false');
Comment thread
mofojed marked this conversation as resolved.
Expand All @@ -104,14 +70,7 @@ describe('getUser', () => {
groups: ['group3', 'group4'],
},
{
isACLEditor: false,
isSuperUser: false,
isQueryViewOnly: false,
isNonInteractive: false,
canUsePanels: true,
canCreateDashboard: true,
canCreateCodeStudio: true,
canCreateQueryMonitor: true,
canCopy: true,
canDownloadCsv: true,
canLogout: true,
Expand All @@ -122,14 +81,7 @@ describe('getUser', () => {
operateAs: 'test2-operator',
groups: ['group3', 'group4'],
permissions: {
isACLEditor: false,
isSuperUser: false,
isQueryViewOnly: false,
isNonInteractive: false,
canUsePanels: true,
canCreateDashboard: true,
canCreateCodeStudio: true,
canCreateQueryMonitor: true,
canCopy: true,
canDownloadCsv: true,
canLogout: true,
Expand Down
32 changes: 14 additions & 18 deletions packages/auth-plugins/src/UserUtils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { User, UserPermissions } from '@deephaven/redux';
import Log from '@deephaven/log';

const log = Log.module('UserUtils');

/**
* Retrieve a value from the AppInit config
Expand Down Expand Up @@ -28,24 +31,24 @@ export function getUserFromConfig(
function getValue(key: string): string | undefined {
return getAppInitValue(serverConfig, key);
}
function getBooleanValue(key: string, defaultValue = true): boolean {
if (defaultValue) {
return !(getValue(key) === 'false');
function getBooleanValue(key: string, defaultValue: boolean): boolean {
const value = getValue(key);
if (value === 'true') {
return true;
}
if (value === 'false') {
return false;
}
if (value !== undefined) {
log.warn(`Unexpected value for ${key}: ${value}`);
}
return getValue(key) === 'true';
return defaultValue;
}
const name = getValue('name') ?? '';
const operateAs = getValue('operateAs') ?? name;
const groups = getValue('groups')?.split(',') ?? [];
Comment thread
mattrunyon marked this conversation as resolved.
const isACLEditor = getBooleanValue('isACLEditor', false);
const isSuperUser = getBooleanValue('isSuperUser', false);
const isQueryViewOnly = getBooleanValue('isQueryViewOnly', false);
const isNonInteractive = getBooleanValue('isNonInteractive', false);
const canCopy = getBooleanValue('canCopy', true);
const canDownloadCsv = getBooleanValue('canDownloadCsv', true);
const canCreateDashboard = getBooleanValue('canCreateDashboard', true);
const canCreateCodeStudio = getBooleanValue('canCreateCodeStudio', true);
const canCreateQueryMonitor = getBooleanValue('canCreateQueryMonitor', true);
const canUsePanels = getBooleanValue('canUsePanels', true);
const canLogout = getBooleanValue('canLogout', true);

Expand All @@ -55,14 +58,7 @@ export function getUserFromConfig(
groups,
...overrides,
permissions: {
isACLEditor,
isSuperUser,
isQueryViewOnly,
isNonInteractive,
canUsePanels,
canCreateDashboard,
canCreateCodeStudio,
canCreateQueryMonitor,
canCopy,
canDownloadCsv,
canLogout,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,10 @@ const User = PropTypes.shape({
operateAs: PropTypes.string.isRequired,
groups: PropTypes.arrayOf(PropTypes.string).isRequired,
permissions: PropTypes.shape({
isSuperUser: PropTypes.bool.isRequired,
isQueryViewOnly: PropTypes.bool.isRequired,
isNonInteractive: PropTypes.bool.isRequired,
canUsePanels: PropTypes.bool.isRequired,
canCreateDashboard: PropTypes.bool.isRequired,
canCreateCodeStudio: PropTypes.bool.isRequired,
canCreateQueryMonitor: PropTypes.bool.isRequired,
canCopy: PropTypes.bool.isRequired,
canDownloadCsv: PropTypes.bool.isRequired,
canLogout: PropTypes.bool.isRequired,
}).isRequired,
});

Expand Down
7 changes: 0 additions & 7 deletions packages/redux/src/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,7 @@ export interface DeephavenPluginModule {}
export type DeephavenPluginModuleMap = Map<string, DeephavenPluginModule>;

export interface UserPermissions {
isACLEditor: boolean;
isSuperUser: boolean;
isQueryViewOnly: boolean;
isNonInteractive: boolean;
canUsePanels: boolean;
canCreateDashboard: boolean;
canCreateCodeStudio: boolean;
canCreateQueryMonitor: boolean;
canCopy: boolean;
canDownloadCsv: boolean;
canLogout: boolean;
Expand Down
7 changes: 1 addition & 6 deletions packages/utils/src/TestUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,15 +126,10 @@ class TestUtils {
operateAs: 'test',
groups: ['allusers', 'test'],
permissions: {
isSuperUser: false,
isQueryViewOnly: false,
isNonInteractive: false,
canUsePanels: true,
canCreateDashboard: true,
canCreateCodeStudio: true,
canCreateQueryMonitor: true,
canCopy: true,
canDownloadCsv: true,
canLogout: true,
},
};

Expand Down