Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
9 changes: 8 additions & 1 deletion web/packages/e-imports/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,14 @@
"description": "Enterprise-only dependencies of the Teleport Web UI",
"private": true,
"dependencies": {
"@codemirror/lang-sql": "^6.5.2",
"@nivo/bar": "^0.83.0",
"@stripe/react-stripe-js": "^1.16.5",
"@stripe/stripe-js": "^1.48.0"
"@stripe/stripe-js": "^1.48.0",
"@uiw/codemirror-themes": "^4.21.20",
"@uiw/react-codemirror": "^4.21.20",
"d3-time-format": "^4.1.0",
"d3-scale": "^4.0.2",
"react-highlight": "^0.15.0"
}
}
3 changes: 2 additions & 1 deletion web/packages/shared/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
},
"devDependencies": {
"@types/dompurify": "^3.0.0",
"@types/marked": "^4.0.8"
"@types/marked": "^4.0.8",
"@types/react-highlight": "^0.12.6"
}
}
2 changes: 2 additions & 0 deletions web/packages/teleport/src/mocks/contexts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ export const allAccessAcl: Acl = {
assist: fullAccess,
samlIdpServiceProvider: fullAccess,
accessList: fullAccess,
auditQuery: fullAccess,
securityReport: fullAccess,
};

export function getAcl(cfg?: { noAccess: boolean }) {
Expand Down
5 changes: 5 additions & 0 deletions web/packages/teleport/src/services/user/makeAcl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ export function makeAcl(json): Acl {
const deviceTrust = json.deviceTrust || defaultAccess;
const assist = json.assist || defaultAccess;

const auditQuery = json.auditQuery || defaultAccess;
const securityReport = json.securityReport || defaultAccess;

const samlIdpServiceProvider = json.samlIdpServiceProvider || defaultAccess;

return {
Expand Down Expand Up @@ -92,6 +95,8 @@ export function makeAcl(json): Acl {
lock,
assist,
samlIdpServiceProvider,
auditQuery,
securityReport,
};
}

Expand Down
2 changes: 2 additions & 0 deletions web/packages/teleport/src/services/user/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ export interface Acl {
assist: Access;
samlIdpServiceProvider: Access;
accessList: Access;
auditQuery: Access;
securityReport: Access;
}

// AllTraits represent all the traits defined for a user.
Expand Down
14 changes: 14 additions & 0 deletions web/packages/teleport/src/services/user/user.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,20 @@ test('undefined values in context response gives proper default values', async (
create: false,
remove: false,
},
auditQuery: {
list: false,
read: false,
edit: false,
create: false,
remove: false,
},
securityReport: {
list: false,
read: false,
edit: false,
create: false,
remove: false,
},
clipboardSharingEnabled: true,
desktopSessionRecordingEnabled: true,
directorySharingEnabled: true,
Expand Down
8 changes: 8 additions & 0 deletions web/packages/teleport/src/stores/storeUserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,4 +202,12 @@ export default class StoreUserContext extends Store<UserContext> {
getAccessListAccess() {
return this.state.acl.accessList;
}

getAuditQueryAccess() {
return this.state.acl.auditQuery;
}

getSecurityReportAccess() {
return this.state.acl.securityReport;
}
}
9 changes: 9 additions & 0 deletions web/packages/teleport/src/teleportContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,13 @@ class TeleportContext implements types.Context {
return !cfg.isDashboard;
}

function hasAccessMonitoringAccess() {
return (
userContext.getAuditQueryAccess().list ||
userContext.getSecurityReportAccess().list
);
}

return {
audit: userContext.getEventAccess().list,
recordings: userContext.getSessionsAccess().list,
Expand Down Expand Up @@ -164,6 +171,7 @@ class TeleportContext implements types.Context {
newLocks:
userContext.getLockAccess().create && userContext.getLockAccess().edit,
assist: userContext.getAssistantAccess().list && this.assistEnabled,
accessMonitoring: hasAccessMonitoringAccess(),
managementSection: hasManagementSectionAccess(),
};
}
Expand Down Expand Up @@ -196,6 +204,7 @@ export const disabledFeatureFlags: types.FeatureFlags = {
newLocks: false,
assist: false,
managementSection: false,
accessMonitoring: false,
};

export default TeleportContext;
2 changes: 2 additions & 0 deletions web/packages/teleport/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ export enum NavTitle {
AccessLists = 'Access Lists',
SessionAndIdentityLocks = 'Session & Identity Locks',
TrustedDevices = 'Trusted Devices',
AccessMonitoring = 'Access Monitoring',

// Resources Requests
NewRequest = 'New Request',
Expand Down Expand Up @@ -158,6 +159,7 @@ export interface FeatureFlags {
locks: boolean;
newLocks: boolean;
assist: boolean;
accessMonitoring: boolean;
// Whether or not the management section should be available.
managementSection: boolean;
}
Expand Down
Loading