From d6e15b4147e649c2bfb5d8fc79653bb913a674a2 Mon Sep 17 00:00:00 2001 From: Maxym Borodenko Date: Thu, 27 Sep 2018 13:44:17 +0300 Subject: [PATCH] Permissions editor --- src/model/acl.model.ts | 1 + src/ui/common/permission/Permissions.tsx | 1 + .../permission/PermissionsTableForm.tsx | 79 +++++++++++++------ 3 files changed, 59 insertions(+), 22 deletions(-) diff --git a/src/model/acl.model.ts b/src/model/acl.model.ts index 709df6f..a931bc0 100644 --- a/src/model/acl.model.ts +++ b/src/model/acl.model.ts @@ -22,6 +22,7 @@ export class AclObjectIdentity extends BasicModel { public objectIdIdentity: number; public entriesInheriting: boolean; public aclEntries: SidPermissions[]; + public inherited: SidPermissions[]; public constructor(obj?) { super(obj); diff --git a/src/ui/common/permission/Permissions.tsx b/src/ui/common/permission/Permissions.tsx index 823df10..5751d9f 100644 --- a/src/ui/common/permission/Permissions.tsx +++ b/src/ui/common/permission/Permissions.tsx @@ -107,6 +107,7 @@ class Permissions extends React.Component { onInputChange={ this.onInputChange } autocomplete={ autocomplete } autocompleteObj={ autocompleteObj } + inherits={ aclObjectIdentity.entriesInheriting } /> } diff --git a/src/ui/common/permission/PermissionsTableForm.tsx b/src/ui/common/permission/PermissionsTableForm.tsx index b5faf20..fbdc319 100644 --- a/src/ui/common/permission/PermissionsTableForm.tsx +++ b/src/ui/common/permission/PermissionsTableForm.tsx @@ -21,6 +21,7 @@ interface IPermissionsTableFormProps extends React.ClassAttributes { addPermission: (sidPermissions: SidPermissions) => Promise; autocompleteObj: {[key: string]: number}; onInputChange: (e) => void; + inherits?: boolean; } const styles = { @@ -36,6 +37,11 @@ const styles = { }, }, }, + inheritedTitle: { + fontSize: '1rem', + fontFamily: 'Roboto, sans-serif', + fontWeight: 'bold' as 'bold', + }, textField: { margin: 0, }, @@ -72,33 +78,36 @@ class PermissionsTableForm extends React.Component fields.map((entry, index) => { + protected renderRows = ({ fields, suggestions, onInputChange, inherits = false }) => fields.map((entry, index) => { const isNewEntry = index === fields.length - 1; - const {sid} = fields.get(index); - const owner = typeof sid === 'number'; + let {sid} = fields.get(index); + sid = typeof sid === 'object' ? sid.sid : sid; + const owner = this.props.initialValues.ownerSid.sid === sid; return ( - { owner ? this.props.initialValues.ownerSid.sid : !isNewEntry ? sid.sid : ( - - ) } + { + inherits || !isNewEntry ? sid : ( + + ) + } @@ -106,7 +115,7 @@ class PermissionsTableForm extends React.Component @@ -114,7 +123,7 @@ class PermissionsTableForm extends React.Component @@ -122,7 +131,7 @@ class PermissionsTableForm extends React.Component @@ -130,12 +139,12 @@ class PermissionsTableForm extends React.Component { - !owner && ( + !owner && !inherits && ( index < fields.length - 1 ? : @@ -147,7 +156,7 @@ class PermissionsTableForm extends React.Component @@ -171,6 +180,32 @@ class PermissionsTableForm extends React.Component
+ + { inherits && +
+
Inherited permissions
+ + + + Sid + Create + Read + Write + Delete + Manage + + + + + + +
+
+ } ); } -- GitLab