index.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { Modal } from 'ui'
  2. import PolicyAllowedOperation from './PolicyAllowedOperation'
  3. import PolicyDefinition from './PolicyDefinition'
  4. import PolicyEditorFooter from './PolicyEditorFooter'
  5. import { PolicyName } from './PolicyName'
  6. import { PolicyRoles } from './PolicyRoles'
  7. interface PolicyEditorProps {
  8. isNewPolicy: boolean
  9. policyFormFields: any
  10. onUpdatePolicyFormFields: (value: any) => void
  11. onViewTemplates: () => void
  12. onReviewPolicy: () => void
  13. }
  14. export const PolicyEditor = ({
  15. isNewPolicy = true,
  16. policyFormFields = {},
  17. onUpdatePolicyFormFields = () => {},
  18. onViewTemplates = () => {},
  19. onReviewPolicy = () => {},
  20. }: PolicyEditorProps) => {
  21. const operation = policyFormFields?.command ?? ''
  22. const definition = policyFormFields?.definition ?? ''
  23. const check = policyFormFields?.check ?? ''
  24. // Filter out default public role (public if no roles selected)
  25. const selectedRoles = (policyFormFields?.roles ?? []).filter((role: string) => role !== 'public')
  26. return (
  27. <div>
  28. <Modal.Content>
  29. <PolicyName
  30. name={policyFormFields.name}
  31. limit={63}
  32. onUpdatePolicyName={(name) => onUpdatePolicyFormFields({ name })}
  33. />
  34. </Modal.Content>
  35. <Modal.Separator />
  36. {isNewPolicy && (
  37. <>
  38. <Modal.Content>
  39. <PolicyAllowedOperation
  40. operation={operation}
  41. onSelectOperation={(command) => onUpdatePolicyFormFields({ command })}
  42. />
  43. </Modal.Content>
  44. <Modal.Separator />
  45. </>
  46. )}
  47. <Modal.Content>
  48. <PolicyRoles
  49. selectedRoles={selectedRoles}
  50. onUpdateSelectedRoles={(roles) => onUpdatePolicyFormFields({ roles })}
  51. />
  52. </Modal.Content>
  53. <Modal.Separator />
  54. <Modal.Content>
  55. <PolicyDefinition
  56. operation={operation}
  57. definition={definition}
  58. check={check}
  59. onUpdatePolicyUsing={(definition: string | undefined) =>
  60. onUpdatePolicyFormFields({ definition })
  61. }
  62. onUpdatePolicyCheck={(check: string | undefined) => onUpdatePolicyFormFields({ check })}
  63. />
  64. </Modal.Content>
  65. <PolicyEditorFooter
  66. showTemplates={isNewPolicy}
  67. onViewTemplates={onViewTemplates}
  68. onReviewPolicy={onReviewPolicy}
  69. />
  70. </div>
  71. )
  72. }