Skip to content

Commit ee9623a

Browse files
wanglamruanyl
authored andcommitted
feat: add workspace permission control interface (opensearch-project#41)
* feat: add workspace permission control interface Signed-off-by: Lin Wang <wonglam@amazon.com> * feat: add request parameter for workspace permission control Signed-off-by: Lin Wang <wonglam@amazon.com> --------- Signed-off-by: Lin Wang <wonglam@amazon.com>
1 parent 3af0e6a commit ee9623a

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

src/core/server/workspaces/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ export {
1111
} from './workspaces_service';
1212

1313
export { WorkspaceAttribute, WorkspaceFindOptions } from './types';
14+
15+
export { WorkspacePermissionControl } from './workspace_permission_control';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
import { OpenSearchDashboardsRequest } from '../http';
7+
8+
export enum WorkspacePermissionMode {
9+
Read,
10+
Admin,
11+
}
12+
13+
export class WorkspacePermissionControl {
14+
public async validate(
15+
workspaceId: string,
16+
permissionModeOrModes: WorkspacePermissionMode | WorkspacePermissionMode[],
17+
request: OpenSearchDashboardsRequest
18+
) {
19+
return true;
20+
}
21+
22+
public async setup() {}
23+
}

src/core/server/workspaces/workspaces_service.ts

+11
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@ import {
1414
} from '../saved_objects';
1515
import { IWorkspaceDBImpl } from './types';
1616
import { WorkspacesClientWithSavedObject } from './workspaces_client';
17+
import { WorkspacePermissionControl } from './workspace_permission_control';
1718

1819
export interface WorkspacesServiceSetup {
1920
client: IWorkspaceDBImpl;
21+
permissionControl: WorkspacePermissionControl;
2022
}
2123

2224
export interface WorkspacesServiceStart {
2325
client: IWorkspaceDBImpl;
26+
permissionControl: WorkspacePermissionControl;
2427
}
2528

2629
export interface WorkspacesSetupDeps {
@@ -40,6 +43,8 @@ export class WorkspacesService
4043
implements CoreService<WorkspacesServiceSetup, WorkspacesServiceStart> {
4144
private logger: Logger;
4245
private client?: IWorkspaceDBImpl;
46+
private permissionControl?: WorkspacePermissionControl;
47+
4348
constructor(coreContext: CoreContext) {
4449
this.logger = coreContext.logger.get('workspaces-service');
4550
}
@@ -65,7 +70,11 @@ export class WorkspacesService
6570
this.logger.debug('Setting up Workspaces service');
6671

6772
this.client = new WorkspacesClientWithSavedObject(setupDeps);
73+
this.permissionControl = new WorkspacePermissionControl();
74+
6875
await this.client.setup(setupDeps);
76+
await this.permissionControl.setup();
77+
6978
this.proxyWorkspaceTrafficToRealHandler(setupDeps);
7079

7180
registerRoutes({
@@ -76,6 +85,7 @@ export class WorkspacesService
7685

7786
return {
7887
client: this.client,
88+
permissionControl: this.permissionControl,
7989
};
8090
}
8191

@@ -84,6 +94,7 @@ export class WorkspacesService
8494

8595
return {
8696
client: this.client as IWorkspaceDBImpl,
97+
permissionControl: this.permissionControl as WorkspacePermissionControl,
8798
};
8899
}
89100

0 commit comments

Comments
 (0)