@rancher/shell 3.0.0-rc.2 → 3.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/assets/styles/base/_variables.scss +12 -4
  2. package/assets/styles/global/_layout.scss +10 -1
  3. package/assets/styles/global/_tooltip.scss +13 -1
  4. package/assets/translations/en-us.yaml +62 -26
  5. package/assets/translations/zh-hans.yaml +6 -5
  6. package/chart/istio.vue +2 -0
  7. package/chart/monitoring/ClusterSelector.vue +2 -0
  8. package/chart/monitoring/StorageClassSelector.vue +4 -1
  9. package/chart/monitoring/index.vue +2 -0
  10. package/chart/rancher-backup/S3.vue +2 -0
  11. package/chart/rancher-backup/index.vue +2 -0
  12. package/cloud-credential/aws.vue +2 -0
  13. package/cloud-credential/azure.vue +2 -0
  14. package/cloud-credential/digitalocean.vue +2 -0
  15. package/cloud-credential/gcp.vue +2 -0
  16. package/cloud-credential/generic.vue +2 -0
  17. package/cloud-credential/harvester.vue +2 -0
  18. package/cloud-credential/linode.vue +2 -0
  19. package/cloud-credential/pnap.vue +2 -0
  20. package/cloud-credential/s3.vue +2 -0
  21. package/cloud-credential/vmwarevsphere.vue +2 -0
  22. package/components/ActionDropdown.vue +1 -1
  23. package/components/ActionMenu.vue +4 -1
  24. package/components/AppModal.vue +4 -1
  25. package/components/ButtonDropdown.vue +3 -0
  26. package/components/ButtonGroup.vue +2 -0
  27. package/components/ButtonMultiAction.vue +41 -0
  28. package/components/Carousel.vue +3 -0
  29. package/components/CodeMirror.vue +88 -71
  30. package/components/Collapse.vue +4 -1
  31. package/components/CollapsibleCard.vue +4 -1
  32. package/components/ContainerResourceLimit.vue +2 -0
  33. package/components/CopyCode.vue +8 -4
  34. package/components/CopyToClipboardText.vue +2 -0
  35. package/components/CruResource.vue +61 -61
  36. package/components/CruResourceFooter.vue +2 -0
  37. package/components/Dialog.vue +2 -0
  38. package/components/DisableAuthProviderModal.vue +4 -1
  39. package/components/EmberPage.vue +2 -0
  40. package/components/ExplorerProjectsNamespaces.vue +11 -8
  41. package/components/GlobalRoleBindings.vue +2 -0
  42. package/components/Import.vue +2 -1
  43. package/components/InputOrDisplay.vue +23 -18
  44. package/components/Loading.vue +4 -1
  45. package/components/LocaleSelector.vue +4 -2
  46. package/components/Markdown.vue +2 -0
  47. package/components/ModalWithCard.vue +2 -0
  48. package/components/MoveModal.vue +2 -0
  49. package/components/PodSecurityAdmission.vue +2 -0
  50. package/components/Questions/Array.vue +2 -0
  51. package/components/Questions/Boolean.vue +2 -0
  52. package/components/Questions/CloudCredential.vue +2 -0
  53. package/components/Questions/Enum.vue +2 -0
  54. package/components/Questions/Float.vue +2 -0
  55. package/components/Questions/Int.vue +2 -0
  56. package/components/Questions/QuestionMap.vue +4 -1
  57. package/components/Questions/Radio.vue +2 -0
  58. package/components/Questions/Reference.vue +2 -0
  59. package/components/Questions/String.vue +2 -0
  60. package/components/Questions/Yaml.vue +2 -0
  61. package/components/Questions/index.vue +2 -0
  62. package/components/ResourceCancelModal.vue +2 -0
  63. package/components/ResourceDetail/Masthead.vue +4 -3
  64. package/components/ResourceDetail/index.vue +17 -15
  65. package/components/ResourceTable.vue +2 -0
  66. package/components/ResourceYaml.vue +2 -0
  67. package/components/SelectIconGrid.vue +2 -0
  68. package/components/SimpleBox.vue +2 -0
  69. package/components/SortableTable/THead.vue +2 -0
  70. package/components/SortableTable/index.vue +17 -20
  71. package/components/StatusTable.vue +2 -0
  72. package/components/Tabbed/Tab.vue +2 -0
  73. package/components/Tabbed/index.vue +2 -0
  74. package/components/Wizard.vue +4 -0
  75. package/components/YamlEditor.vue +3 -1
  76. package/components/__tests__/ButtonMultiAction.test.ts +31 -0
  77. package/components/__tests__/ContainerResourceLimit.test.ts +35 -0
  78. package/components/auth/RoleDetailEdit.vue +2 -0
  79. package/components/auth/SelectPrincipal.vue +3 -1
  80. package/components/auth/login/ldap.vue +2 -0
  81. package/components/fleet/FleetStatus.vue +2 -2
  82. package/components/form/ArrayList.vue +16 -1
  83. package/components/form/ArrayListSelect.vue +2 -0
  84. package/components/form/ChangePassword.vue +2 -0
  85. package/components/form/ColorInput.vue +2 -0
  86. package/components/form/Command.vue +2 -0
  87. package/components/form/FileImageSelector.vue +2 -0
  88. package/components/form/FileSelector.vue +2 -0
  89. package/components/form/Footer.vue +2 -0
  90. package/components/form/GitPicker.vue +1 -0
  91. package/components/form/HealthCheck.vue +5 -3
  92. package/components/form/HookOption.vue +22 -18
  93. package/components/form/InputWithSelect.vue +3 -1
  94. package/components/form/KeyValue.vue +2 -0
  95. package/components/form/LabeledSelect.vue +13 -3
  96. package/components/form/Labels.vue +11 -13
  97. package/components/form/LifecycleHooks.vue +2 -0
  98. package/components/form/MatchExpressions.vue +2 -0
  99. package/components/form/Members/ClusterPermissionsEditor.vue +2 -0
  100. package/components/form/Members/MembershipEditor.vue +2 -0
  101. package/components/form/NameNsDescription.vue +4 -1
  102. package/components/form/Networking.vue +2 -0
  103. package/components/form/NodeAffinity.vue +4 -1
  104. package/components/form/Password.vue +2 -0
  105. package/components/form/PlusMinus.vue +2 -0
  106. package/components/form/PodAffinity.vue +4 -1
  107. package/components/form/Ports.vue +2 -0
  108. package/components/form/Probe.vue +8 -4
  109. package/components/form/ResourceQuota/NamespaceRow.vue +2 -0
  110. package/components/form/ResourceQuota/Project.vue +2 -0
  111. package/components/form/ResourceQuota/ProjectRow.vue +2 -0
  112. package/components/form/RuleSelector.vue +2 -0
  113. package/components/form/SecretSelector.vue +1 -0
  114. package/components/form/Security.vue +5 -2
  115. package/components/form/Select.vue +2 -1
  116. package/components/form/SelectOrCreateAuthSecret.vue +2 -0
  117. package/components/form/ServiceNameSelect.vue +2 -0
  118. package/components/form/ServicePorts.vue +2 -0
  119. package/components/form/ShellInput.vue +2 -0
  120. package/components/form/SimpleSecretSelector.vue +2 -0
  121. package/components/form/Taints.vue +2 -0
  122. package/components/form/Tolerations.vue +2 -0
  123. package/components/form/UnitInput.vue +2 -0
  124. package/components/form/ValueFromResource.vue +2 -0
  125. package/components/form/WorkloadPorts.vue +5 -3
  126. package/components/form/__tests__/HookOption.test.ts +28 -0
  127. package/components/form/__tests__/LabeledSelect.test.ts +42 -0
  128. package/components/form/__tests__/Probe.test.ts +12 -0
  129. package/components/form/__tests__/UnitInput.test.ts +68 -0
  130. package/components/formatter/AppSummaryGraph.vue +2 -2
  131. package/components/formatter/FleetSummaryGraph.vue +2 -2
  132. package/components/formatter/InternalExternalIP.vue +13 -15
  133. package/components/formatter/MachineSummaryGraph.vue +2 -2
  134. package/components/formatter/Scale.vue +2 -2
  135. package/components/nav/Header.vue +17 -141
  136. package/components/nav/HeaderPageActionMenu.vue +173 -0
  137. package/components/nav/Jump.vue +2 -0
  138. package/components/nav/NamespaceFilter.vue +7 -2
  139. package/components/nav/TopLevelMenu.vue +4 -4
  140. package/components/nav/Type.vue +28 -2
  141. package/components/nav/WindowManager/ContainerLogs.vue +2 -1
  142. package/components/nav/WindowManager/ContainerShell.vue +6 -12
  143. package/components/nav/WindowManager/index.vue +2 -0
  144. package/components/nav/__tests__/Type.test.ts +68 -24
  145. package/composables/useClickOutside.ts +81 -0
  146. package/composables/useUserRetentionValidation.test.ts +1 -1
  147. package/composables/useUserRetentionValidation.ts +1 -1
  148. package/config/product/cis.js +4 -3
  149. package/config/product/manager.js +1 -0
  150. package/config/router/routes.js +1 -1
  151. package/config/table-headers.js +0 -10
  152. package/config/uiplugins.js +186 -143
  153. package/config/version.js +10 -0
  154. package/core/{plugin-helpers.js → plugin-helpers.ts} +25 -7
  155. package/core/plugin-routes.ts +5 -6
  156. package/core/plugin.ts +30 -3
  157. package/detail/autoscaling.horizontalpodautoscaler/index.vue +2 -0
  158. package/detail/configmap.vue +2 -0
  159. package/detail/fleet.cattle.io.cluster.vue +2 -0
  160. package/detail/fleet.cattle.io.clustergroup.vue +2 -0
  161. package/detail/fleet.cattle.io.gitrepo.vue +2 -0
  162. package/detail/harvesterhci.io.management.cluster.vue +2 -0
  163. package/detail/helm.cattle.io.projecthelmchart.vue +6 -8
  164. package/detail/management.cattle.io.roletemplate.vue +4 -4
  165. package/detail/management.cattle.io.user.vue +2 -0
  166. package/detail/namespace.vue +2 -0
  167. package/detail/networking.k8s.io.ingress.vue +1 -0
  168. package/detail/node.vue +2 -0
  169. package/detail/provisioning.cattle.io.cluster.vue +2 -0
  170. package/detail/secret.vue +2 -0
  171. package/detail/service.vue +2 -0
  172. package/detail/workload/index.vue +1 -1
  173. package/dialog/AddClusterMemberDialog.vue +2 -0
  174. package/dialog/AddCustomBadgeDialog.vue +3 -1
  175. package/dialog/AddProjectMemberDialog.vue +2 -0
  176. package/dialog/AddonConfigConfirmationDialog.vue +2 -0
  177. package/dialog/DeactivateDriverDialog.vue +2 -0
  178. package/dialog/DiagnosticTimingsDialog.vue +2 -0
  179. package/dialog/DrainNode.vue +2 -0
  180. package/dialog/ForceMachineRemoveDialog.vue +2 -0
  181. package/dialog/GenericPrompt.vue +2 -0
  182. package/dialog/RollbackWorkloadDialog.vue +2 -0
  183. package/dialog/RotateCertificatesDialog.vue +2 -0
  184. package/dialog/RotateEncryptionKeyDialog.vue +2 -0
  185. package/dialog/SaveAsRKETemplateDialog.vue +2 -0
  186. package/dialog/ScaleMachineDownDialog.vue +2 -0
  187. package/dialog/ScalePoolDownDialog.vue +2 -0
  188. package/dialog/SloDialog.vue +2 -0
  189. package/edit/auth/ldap/config.vue +282 -280
  190. package/edit/auth/saml.vue +1 -4
  191. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +3 -3
  192. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -2
  193. package/edit/catalog.cattle.io.clusterrepo.vue +2 -0
  194. package/edit/cis.cattle.io.clusterscan.vue +115 -97
  195. package/edit/cis.cattle.io.clusterscanprofile.vue +29 -31
  196. package/edit/cloudcredential.vue +2 -0
  197. package/edit/constraints.gatekeeper.sh.constraint/MatchKinds.vue +2 -0
  198. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +2 -0
  199. package/edit/constraints.gatekeeper.sh.constraint/Scope.vue +2 -0
  200. package/edit/constraints.gatekeeper.sh.constraint/index.vue +2 -0
  201. package/edit/fleet.cattle.io.cluster.vue +2 -0
  202. package/edit/fleet.cattle.io.clustergroup.vue +4 -1
  203. package/edit/fleet.cattle.io.gitrepo.vue +2 -0
  204. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +2 -0
  205. package/edit/logging-flow/Match.vue +2 -0
  206. package/edit/logging-flow/index.vue +10 -8
  207. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  208. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  209. package/edit/logging.banzaicloud.io.output/providers/redis.vue +3 -3
  210. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -0
  211. package/edit/management.cattle.io.fleetworkspace.vue +4 -1
  212. package/edit/management.cattle.io.project.vue +2 -0
  213. package/edit/management.cattle.io.roletemplate.vue +1 -1
  214. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -0
  215. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +2 -0
  216. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -0
  217. package/edit/namespace.vue +1 -0
  218. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -0
  219. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -1
  220. package/edit/networking.k8s.io.ingress/Rule.vue +1 -0
  221. package/edit/networking.k8s.io.ingress/RulePath.vue +20 -23
  222. package/edit/networking.k8s.io.ingress/index.vue +1 -0
  223. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +1 -1
  224. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -0
  225. package/edit/node.vue +2 -0
  226. package/edit/persistentvolumeclaim.vue +1 -0
  227. package/edit/policy.poddisruptionbudget.vue +3 -1
  228. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +2 -0
  229. package/edit/provisioning.cattle.io.cluster/Labels.vue +2 -0
  230. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -0
  231. package/edit/provisioning.cattle.io.cluster/import.vue +2 -0
  232. package/edit/provisioning.cattle.io.cluster/index.vue +2 -2
  233. package/edit/provisioning.cattle.io.cluster/rke2.vue +38 -13
  234. package/edit/provisioning.cattle.io.cluster/tabs/AddOnAdditionalManifest.vue +49 -0
  235. package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +32 -65
  236. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +2 -0
  237. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +2 -0
  238. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +2 -0
  239. package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +2 -0
  240. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +2 -0
  241. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +2 -0
  242. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -0
  243. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +31 -32
  244. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/DrainOptions.vue +2 -0
  245. package/edit/resources.cattle.io.backup.vue +97 -99
  246. package/edit/resources.cattle.io.restore.vue +96 -98
  247. package/edit/secret/index.vue +2 -0
  248. package/edit/service.vue +12 -3
  249. package/edit/ui.cattle.io.navlink.vue +1 -0
  250. package/edit/workload/Job.vue +3 -2
  251. package/edit/workload/Upgrading.vue +1 -0
  252. package/edit/workload/__tests__/index.test.ts +9 -7
  253. package/edit/workload/index.vue +33 -16
  254. package/edit/workload/storage/ContainerMountPaths.vue +37 -97
  255. package/edit/workload/storage/awsElasticBlockStore.vue +1 -1
  256. package/edit/workload/storage/azureDisk.vue +1 -1
  257. package/edit/workload/storage/csi/driver.longhorn.io.vue +2 -0
  258. package/edit/workload/storage/ephemeralVolume/index.vue +2 -0
  259. package/edit/workload/storage/gcePersistentDisk.vue +1 -1
  260. package/edit/workload/storage/index.vue +38 -22
  261. package/edit/workload/storage/persistentVolumeClaim/index.vue +2 -0
  262. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +1 -0
  263. package/edit/workload/storage/vsphereVolume.vue +1 -1
  264. package/initialize/install-components.js +0 -12
  265. package/initialize/install-plugins.js +6 -7
  266. package/machine-config/azure.vue +2 -0
  267. package/machine-config/generic.vue +2 -0
  268. package/machine-config/vmwarevsphere.vue +2 -0
  269. package/mixins/fetch.client.js +2 -1
  270. package/mixins/resource-manager.js +1 -1
  271. package/models/cis.cattle.io.clusterscan.js +17 -16
  272. package/models/cis.cattle.io.clusterscanprofile.js +17 -0
  273. package/models/management.cattle.io.user.js +3 -3
  274. package/models/provisioning.cattle.io.cluster.js +2 -1
  275. package/models/steve-schema.ts +1 -1
  276. package/models/workload.js +2 -1
  277. package/package.json +6 -8
  278. package/pages/auth/login.vue +2 -1
  279. package/pages/c/_cluster/apps/charts/chart.vue +3 -1
  280. package/pages/c/_cluster/apps/charts/install.vue +5 -56
  281. package/pages/c/_cluster/auth/user.retention/index.vue +1 -1
  282. package/pages/c/_cluster/fleet/index.vue +0 -1
  283. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +1 -0
  284. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +2 -0
  285. package/pages/c/_cluster/settings/performance.vue +2 -2
  286. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +45 -52
  287. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +2 -0
  288. package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +2 -0
  289. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +2 -0
  290. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +6 -3
  291. package/pages/c/_cluster/uiplugins/InstallDialog.vue +2 -0
  292. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +7 -17
  293. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +2 -0
  294. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +3 -6
  295. package/pages/c/_cluster/uiplugins/index.vue +93 -92
  296. package/pages/index.vue +10 -2
  297. package/pkg/vue.config.js +2 -0
  298. package/plugins/i18n.js +1 -1
  299. package/plugins/plugin.js +27 -19
  300. package/plugins/version.js +3 -13
  301. package/promptRemove/management.cattle.io.roletemplate.vue +3 -5
  302. package/promptRemove/pod.vue +2 -0
  303. package/rancher-components/Form/LabeledInput/LabeledInput.vue +14 -8
  304. package/rancher-components/Form/Radio/RadioButton.vue +0 -1
  305. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +17 -9
  306. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +4 -33
  307. package/rancher-components/StringList/StringList.vue +6 -15
  308. package/scripts/extension/bundle +1 -1
  309. package/scripts/extension/publish +174 -99
  310. package/store/catalog.js +0 -26
  311. package/store/growl.js +8 -5
  312. package/store/type-map.js +3 -2
  313. package/utils/cluster.js +9 -0
  314. package/utils/versions.ts +39 -0
  315. package/vue.config.js +5 -0
  316. package/components/form/PodSecurity.vue +0 -168
  317. package/components/formatter/Weight.vue +0 -147
  318. package/components/nuxt/nuxt-build-indicator.vue +0 -170
  319. package/components/nuxt/nuxt-child.js +0 -52
  320. package/components/nuxt/nuxt-error.vue +0 -128
  321. package/components/nuxt/nuxt-link.client.js +0 -17
  322. package/components/nuxt/nuxt-loading.vue +0 -165
  323. package/composables/useStore.ts +0 -16
@@ -5,12 +5,16 @@ import { Checkbox } from '@components/Form/Checkbox';
5
5
  import UnitInput from '@shell/components/form/UnitInput';
6
6
  import { Banner } from '@components/Banner';
7
7
  import FileSelector from '@shell/components/form/FileSelector';
8
- import { OKTA, SHIBBOLETH } from '../saml';
9
8
 
10
9
  const DEFAULT_NON_TLS_PORT = 389;
11
10
  const DEFAULT_TLS_PORT = 636;
12
11
 
12
+ export const SHIBBOLETH = 'shibboleth';
13
+ export const OKTA = 'okta';
14
+
13
15
  export default {
16
+ emits: ['update:value'],
17
+
14
18
  components: {
15
19
  RadioGroup,
16
20
  LabeledInput,
@@ -95,305 +99,303 @@ export default {
95
99
 
96
100
  <template>
97
101
  <div @update:value="$emit('update:value', model)">
98
- <template>
99
- <div class="row mb-20">
100
- <div class="col span-6">
101
- <LabeledInput
102
- v-model:value="hostname"
103
- required
104
- :mode="mode"
105
- :hoover-tooltip="true"
106
- :tooltip="t('authConfig.ldap.hostname.hint')"
107
- :label="t('authConfig.ldap.hostname.label')"
108
- :placeholder="t('authConfig.ldap.hostname.placeholder')"
109
- />
110
- </div>
111
- <div class="col span-4">
112
- <LabeledInput
113
- :value="model.port"
114
- type="number"
115
- required
116
- :min="0"
117
- :step="1"
118
- :mode="mode"
119
- :label="t('authConfig.ldap.port')"
120
- @update:value="e=>$set(model, 'port', e.replace(/[^0-9]*/g, ''))"
121
- />
122
- </div>
102
+ <div class="row mb-20">
103
+ <div class="col span-6">
104
+ <LabeledInput
105
+ v-model:value="hostname"
106
+ required
107
+ :mode="mode"
108
+ :hoover-tooltip="true"
109
+ :tooltip="t('authConfig.ldap.hostname.hint')"
110
+ :label="t('authConfig.ldap.hostname.label')"
111
+ :placeholder="t('authConfig.ldap.hostname.placeholder')"
112
+ />
113
+ </div>
114
+ <div class="col span-4">
115
+ <LabeledInput
116
+ :value="model.port"
117
+ type="number"
118
+ required
119
+ :min="0"
120
+ :step="1"
121
+ :mode="mode"
122
+ :label="t('authConfig.ldap.port')"
123
+ @update:value="e=>$set(model, 'port', e.replace(/[^0-9]*/g, ''))"
124
+ />
125
+ </div>
123
126
 
124
- <div class="col">
125
- <Checkbox
126
- v-model:value="model.tls"
127
- :mode="mode"
128
- class="full-height"
129
- :label="t('authConfig.ldap.tls')"
130
- />
131
- </div>
132
- <div class="col span-1">
133
- <Checkbox
134
- v-model:value="model.starttls"
135
- :tooltip="t('authConfig.ldap.starttls.tip')"
136
- :mode="mode"
137
- class="full-height"
138
- :label="t('authConfig.ldap.starttls.label')"
139
- />
140
- </div>
127
+ <div class="col">
128
+ <Checkbox
129
+ v-model:value="model.tls"
130
+ :mode="mode"
131
+ class="full-height"
132
+ :label="t('authConfig.ldap.tls')"
133
+ />
141
134
  </div>
142
- <div
143
- v-if="model.tls || model.starttls"
144
- class="row mb-20"
145
- >
146
- <div class="col span-12">
147
- <LabeledInput
148
- v-model:value="model.certificate"
149
- required
150
- type="multiline"
151
- :mode="mode"
152
- :label="t('authConfig.ldap.cert')"
153
- />
154
- <FileSelector
155
- class="role-tertiary add mt-5"
156
- :label="t('generic.readFromFile')"
157
- :mode="mode"
158
- @selected="$set(model, 'certificate', $event)"
159
- />
160
- </div>
135
+ <div class="col span-1">
136
+ <Checkbox
137
+ v-model:value="model.starttls"
138
+ :tooltip="t('authConfig.ldap.starttls.tip')"
139
+ :mode="mode"
140
+ class="full-height"
141
+ :label="t('authConfig.ldap.starttls.label')"
142
+ />
161
143
  </div>
162
- <div class="row mb-20">
163
- <div class="col span-6">
164
- <UnitInput
165
- v-model:value="model.connectionTimeout"
166
- required
167
- :mode="mode"
168
- :label="t('authConfig.ldap.serverConnectionTimeout')"
169
- suffix="milliseconds"
170
- />
171
- </div>
144
+ </div>
145
+ <div
146
+ v-if="model.tls || model.starttls"
147
+ class="row mb-20"
148
+ >
149
+ <div class="col span-12">
150
+ <LabeledInput
151
+ v-model:value="model.certificate"
152
+ required
153
+ type="multiline"
154
+ :mode="mode"
155
+ :label="t('authConfig.ldap.cert')"
156
+ />
157
+ <FileSelector
158
+ class="role-tertiary add mt-5"
159
+ :label="t('generic.readFromFile')"
160
+ :mode="mode"
161
+ @selected="$set(model, 'certificate', $event)"
162
+ />
172
163
  </div>
173
- <Banner
174
- color="info"
175
- :label="t('authConfig.ldap.serviceAccountInfo')"
176
- />
177
- <div class="row mb-20">
178
- <div
179
- v-if="type==='activedirectory'"
180
- class="col span-6"
181
- >
182
- <LabeledInput
183
- v-model:value="model.serviceAccountUsername"
184
- required
185
- :mode="mode"
186
- :label="t('authConfig.ldap.serviceAccountDN')"
187
- />
188
- </div>
189
-
190
- <div
191
- v-else
192
- class="col span-6"
193
- >
194
- <LabeledInput
195
- v-model:value="model.serviceAccountDistinguishedName"
196
- required
197
- :mode="mode"
198
- :label="t('authConfig.ldap.serviceAccountDN')"
199
- />
200
- </div>
201
- <div class="col span-6">
202
- <LabeledInput
203
- v-model:value="model.serviceAccountPassword"
204
- required
205
- type="password"
206
- :mode="mode"
207
- :label="t('authConfig.ldap.serviceAccountPassword')"
208
- />
209
- </div>
164
+ </div>
165
+ <div class="row mb-20">
166
+ <div class="col span-6">
167
+ <UnitInput
168
+ v-model:value="model.connectionTimeout"
169
+ required
170
+ :mode="mode"
171
+ :label="t('authConfig.ldap.serverConnectionTimeout')"
172
+ suffix="milliseconds"
173
+ />
210
174
  </div>
175
+ </div>
176
+ <Banner
177
+ color="info"
178
+ :label="t('authConfig.ldap.serviceAccountInfo')"
179
+ />
180
+ <div class="row mb-20">
211
181
  <div
212
182
  v-if="type==='activedirectory'"
213
- class="row mb-20"
183
+ class="col span-6"
184
+ >
185
+ <LabeledInput
186
+ v-model:value="model.serviceAccountUsername"
187
+ required
188
+ :mode="mode"
189
+ :label="t('authConfig.ldap.serviceAccountDN')"
190
+ />
191
+ </div>
192
+
193
+ <div
194
+ v-else
195
+ class="col span-6"
214
196
  >
215
- <div class="col span-6">
216
- <LabeledInput
217
- v-model:value="model.defaultLoginDomain"
218
- :hoover-tooltip="true"
219
- :tooltip="t('authConfig.ldap.defaultLoginDomain.hint')"
220
- :placeholder="t('authConfig.ldap.defaultLoginDomain.placeholder')"
221
- :mode="mode"
222
- :label="t('authConfig.ldap.defaultLoginDomain.label')"
223
- />
224
- </div>
197
+ <LabeledInput
198
+ v-model:value="model.serviceAccountDistinguishedName"
199
+ required
200
+ :mode="mode"
201
+ :label="t('authConfig.ldap.serviceAccountDN')"
202
+ />
203
+ </div>
204
+ <div class="col span-6">
205
+ <LabeledInput
206
+ v-model:value="model.serviceAccountPassword"
207
+ required
208
+ type="password"
209
+ :mode="mode"
210
+ :label="t('authConfig.ldap.serviceAccountPassword')"
211
+ />
225
212
  </div>
226
- <div class="row mb-20">
227
- <div class="col span-6">
228
- <LabeledInput
229
- v-model:value="model.userSearchBase"
230
- required
231
- :mode="mode"
232
- :label="t('authConfig.ldap.userSearchBase.label')"
233
- :placeholder="t('authConfig.ldap.userSearchBase.placeholder')"
234
- />
235
- </div>
236
- <div class="col span-6">
237
- <LabeledInput
238
- v-model:value="model.groupSearchBase"
239
- :mode="mode"
240
- :placeholder="t('authConfig.ldap.groupSearchBase.placeholder')"
241
- :label="t('authConfig.ldap.groupSearchBase.label')"
242
- />
243
- </div>
213
+ </div>
214
+ <div
215
+ v-if="type==='activedirectory'"
216
+ class="row mb-20"
217
+ >
218
+ <div class="col span-6">
219
+ <LabeledInput
220
+ v-model:value="model.defaultLoginDomain"
221
+ :hoover-tooltip="true"
222
+ :tooltip="t('authConfig.ldap.defaultLoginDomain.hint')"
223
+ :placeholder="t('authConfig.ldap.defaultLoginDomain.placeholder')"
224
+ :mode="mode"
225
+ :label="t('authConfig.ldap.defaultLoginDomain.label')"
226
+ />
244
227
  </div>
228
+ </div>
229
+ <div class="row mb-20">
230
+ <div class="col span-6">
231
+ <LabeledInput
232
+ v-model:value="model.userSearchBase"
233
+ required
234
+ :mode="mode"
235
+ :label="t('authConfig.ldap.userSearchBase.label')"
236
+ :placeholder="t('authConfig.ldap.userSearchBase.placeholder')"
237
+ />
238
+ </div>
239
+ <div class="col span-6">
240
+ <LabeledInput
241
+ v-model:value="model.groupSearchBase"
242
+ :mode="mode"
243
+ :placeholder="t('authConfig.ldap.groupSearchBase.placeholder')"
244
+ :label="t('authConfig.ldap.groupSearchBase.label')"
245
+ />
246
+ </div>
247
+ </div>
245
248
 
246
- <div class="row">
247
- <h3> {{ t('authConfig.ldap.customizeSchema') }}</h3>
249
+ <div class="row">
250
+ <h3> {{ t('authConfig.ldap.customizeSchema') }}</h3>
251
+ </div>
252
+ <Banner
253
+ v-if="type === OKTA && isCreate"
254
+ class="row"
255
+ color="info"
256
+ label-key="authConfig.ldap.oktaSchema"
257
+ />
258
+ <div class="row">
259
+ <div class="col span-6">
260
+ <h4>{{ t('authConfig.ldap.users') }}</h4>
261
+ </div>
262
+ <div class="col span-6">
263
+ <h4>{{ t('authConfig.ldap.groups') }}</h4>
264
+ </div>
265
+ </div>
266
+ <div class="row mb-20">
267
+ <div class="col span-6">
268
+ <LabeledInput
269
+ v-model:value="model.userObjectClass"
270
+ :mode="mode"
271
+ :label="t('authConfig.ldap.objectClass')"
272
+ />
273
+ </div>
274
+ <div class="col span-6">
275
+ <LabeledInput
276
+ v-model:value="model.groupObjectClass"
277
+ :mode="mode"
278
+ :label="t('authConfig.ldap.objectClass')"
279
+ />
280
+ </div>
281
+ </div>
282
+ <div class="row mb-20">
283
+ <div class="col span-6">
284
+ <LabeledInput
285
+ v-model:value="model.userNameAttribute"
286
+ :mode="mode"
287
+ :label="t('authConfig.ldap.usernameAttribute')"
288
+ />
248
289
  </div>
249
- <Banner
250
- v-if="type === OKTA && isCreate"
251
- class="row"
252
- color="info"
253
- label-key="authConfig.ldap.oktaSchema"
254
- />
255
- <div class="row">
256
- <div class="col span-6">
257
- <h4>{{ t('authConfig.ldap.users') }}</h4>
258
- </div>
259
- <div class="col span-6">
260
- <h4>{{ t('authConfig.ldap.groups') }}</h4>
261
- </div>
290
+ <div class="col span-6">
291
+ <LabeledInput
292
+ v-model:value="model.groupNameAttribute"
293
+ :mode="mode"
294
+ :label="t('authConfig.ldap.nameAttribute')"
295
+ />
262
296
  </div>
263
- <div class="row mb-20">
264
- <div class="col span-6">
265
- <LabeledInput
266
- v-model:value="model.userObjectClass"
267
- :mode="mode"
268
- :label="t('authConfig.ldap.objectClass')"
269
- />
270
- </div>
271
- <div class="col span-6">
272
- <LabeledInput
273
- v-model:value="model.groupObjectClass"
274
- :mode="mode"
275
- :label="t('authConfig.ldap.objectClass')"
276
- />
277
- </div>
297
+ </div>
298
+ <div class="row mb-20">
299
+ <div class="col span-6">
300
+ <LabeledInput
301
+ v-model:value="model.userLoginAttribute"
302
+ :mode="mode"
303
+ :label="t('authConfig.ldap.loginAttribute')"
304
+ />
278
305
  </div>
279
- <div class="row mb-20">
280
- <div class="col span-6">
281
- <LabeledInput
282
- v-model:value="model.userNameAttribute"
283
- :mode="mode"
284
- :label="t('authConfig.ldap.usernameAttribute')"
285
- />
286
- </div>
287
- <div class="col span-6">
288
- <LabeledInput
289
- v-model:value="model.groupNameAttribute"
290
- :mode="mode"
291
- :label="t('authConfig.ldap.nameAttribute')"
292
- />
293
- </div>
306
+ <div class="col span-6">
307
+ <LabeledInput
308
+ v-model:value="model.groupMemberUserAttribute"
309
+ :mode="mode"
310
+ :label="t('authConfig.ldap.groupMemberUserAttribute')"
311
+ />
294
312
  </div>
295
- <div class="row mb-20">
296
- <div class="col span-6">
297
- <LabeledInput
298
- v-model:value="model.userLoginAttribute"
299
- :mode="mode"
300
- :label="t('authConfig.ldap.loginAttribute')"
301
- />
302
- </div>
303
- <div class="col span-6">
304
- <LabeledInput
305
- v-model:value="model.groupMemberUserAttribute"
306
- :mode="mode"
307
- :label="t('authConfig.ldap.groupMemberUserAttribute')"
308
- />
309
- </div>
313
+ </div>
314
+ <div class="row mb-20">
315
+ <div class="col span-6">
316
+ <LabeledInput
317
+ v-model:value="model.userMemberAttribute"
318
+ :mode="mode"
319
+ :label="t('authConfig.ldap.userMemberAttribute')"
320
+ />
310
321
  </div>
311
- <div class="row mb-20">
312
- <div class="col span-6">
313
- <LabeledInput
314
- v-model:value="model.userMemberAttribute"
315
- :mode="mode"
316
- :label="t('authConfig.ldap.userMemberAttribute')"
317
- />
318
- </div>
319
- <div class="col span-6">
320
- <LabeledInput
321
- v-model:value="model.groupSearchAttribute"
322
- :mode="mode"
323
- :label="t('authConfig.ldap.searchAttribute')"
324
- />
325
- </div>
322
+ <div class="col span-6">
323
+ <LabeledInput
324
+ v-model:value="model.groupSearchAttribute"
325
+ :mode="mode"
326
+ :label="t('authConfig.ldap.searchAttribute')"
327
+ />
326
328
  </div>
327
- <div class="row mb-20">
328
- <div class="col span-6">
329
- <LabeledInput
330
- v-model:value="model.userSearchAttribute"
331
- :mode="mode"
332
- :label="t('authConfig.ldap.searchAttribute')"
333
- />
334
- </div>
335
- <div class="col span-6">
336
- <LabeledInput
337
- v-model:value="model.groupSearchFilter"
338
- :mode="mode"
339
- :label="t('authConfig.ldap.searchFilter')"
340
- />
341
- </div>
329
+ </div>
330
+ <div class="row mb-20">
331
+ <div class="col span-6">
332
+ <LabeledInput
333
+ v-model:value="model.userSearchAttribute"
334
+ :mode="mode"
335
+ :label="t('authConfig.ldap.searchAttribute')"
336
+ />
342
337
  </div>
343
- <div class="row mb-20">
344
- <div class="col span-6">
345
- <LabeledInput
346
- v-model:value="model.userSearchFilter"
347
- :mode="mode"
348
- :label="t('authConfig.ldap.searchFilter')"
349
- />
350
- </div>
351
- <div class="col span-6">
352
- <LabeledInput
353
- v-model:value="model.groupMemberMappingAttribute"
354
- :mode="mode"
355
- :label="t('authConfig.ldap.groupMemberMappingAttribute')"
356
- />
357
- </div>
338
+ <div class="col span-6">
339
+ <LabeledInput
340
+ v-model:value="model.groupSearchFilter"
341
+ :mode="mode"
342
+ :label="t('authConfig.ldap.searchFilter')"
343
+ />
358
344
  </div>
359
- <div class="row mb-20">
360
- <div class="col span-6">
361
- <LabeledInput
362
- v-model:value="model.userEnabledAttribute"
363
- :mode="mode"
364
- :label="t('authConfig.ldap.userEnabledAttribute')"
365
- />
366
- </div>
367
- <div class="col span-6">
368
- <LabeledInput
369
- v-model:value="model.groupDNAttribute"
370
- :mode="mode"
371
- :label="t('authConfig.ldap.groupDNAttribute')"
372
- />
373
- </div>
345
+ </div>
346
+ <div class="row mb-20">
347
+ <div class="col span-6">
348
+ <LabeledInput
349
+ v-model:value="model.userSearchFilter"
350
+ :mode="mode"
351
+ :label="t('authConfig.ldap.searchFilter')"
352
+ />
374
353
  </div>
375
- <div class="row mb-20">
376
- <div class="col span-6">
377
- <LabeledInput
378
- v-model:value="model.disabledStatusBitmask"
379
- :mode="mode"
380
- :label="t('authConfig.ldap.disabledStatusBitmask')"
381
- />
382
- </div>
383
- <div
384
- v-if="!isSamlProvider"
385
- class=" col span-6"
386
- >
387
- <RadioGroup
388
- v-model:value="model.nestedGroupMembershipEnabled"
389
- :mode="mode"
390
- name="nested"
391
- class="full-height"
392
- :options="[true, false]"
393
- :labels="[t('authConfig.ldap.nestedGroupMembership.options.nested'), t('authConfig.ldap.nestedGroupMembership.options.direct')]"
394
- />
395
- </div>
354
+ <div class="col span-6">
355
+ <LabeledInput
356
+ v-model:value="model.groupMemberMappingAttribute"
357
+ :mode="mode"
358
+ :label="t('authConfig.ldap.groupMemberMappingAttribute')"
359
+ />
360
+ </div>
361
+ </div>
362
+ <div class="row mb-20">
363
+ <div class="col span-6">
364
+ <LabeledInput
365
+ v-model:value="model.userEnabledAttribute"
366
+ :mode="mode"
367
+ :label="t('authConfig.ldap.userEnabledAttribute')"
368
+ />
369
+ </div>
370
+ <div class="col span-6">
371
+ <LabeledInput
372
+ v-model:value="model.groupDNAttribute"
373
+ :mode="mode"
374
+ :label="t('authConfig.ldap.groupDNAttribute')"
375
+ />
376
+ </div>
377
+ </div>
378
+ <div class="row mb-20">
379
+ <div class="col span-6">
380
+ <LabeledInput
381
+ v-model:value="model.disabledStatusBitmask"
382
+ :mode="mode"
383
+ :label="t('authConfig.ldap.disabledStatusBitmask')"
384
+ />
385
+ </div>
386
+ <div
387
+ v-if="!isSamlProvider"
388
+ class=" col span-6"
389
+ >
390
+ <RadioGroup
391
+ v-model:value="model.nestedGroupMembershipEnabled"
392
+ :mode="mode"
393
+ name="nested"
394
+ class="full-height"
395
+ :options="[true, false]"
396
+ :labels="[t('authConfig.ldap.nestedGroupMembership.options.nested'), t('authConfig.ldap.nestedGroupMembership.options.direct')]"
397
+ />
396
398
  </div>
397
- </template>
399
+ </div>
398
400
  </div>
399
401
  </template>
@@ -9,13 +9,10 @@ import { Banner } from '@components/Banner';
9
9
  import AllowedPrincipals from '@shell/components/auth/AllowedPrincipals';
10
10
  import FileSelector from '@shell/components/form/FileSelector';
11
11
  import AuthBanner from '@shell/components/auth/AuthBanner';
12
- import config from '@shell/edit/auth/ldap/config';
12
+ import config, { OKTA, SHIBBOLETH } from '@shell/edit/auth/ldap/config';
13
13
  import AuthProviderWarningBanners from '@shell/edit/auth/AuthProviderWarningBanners';
14
14
  import RadioGroup from '@components/Form/Radio/RadioGroup.vue';
15
15
 
16
- export const SHIBBOLETH = 'shibboleth';
17
- export const OKTA = 'okta';
18
-
19
16
  // Standard LDAP defaults
20
17
  const LDAP_DEFAULTS = {
21
18
  connectionTimeout: 5000,
@@ -74,7 +74,7 @@ export default {
74
74
  </div>
75
75
  <div class="col span-4">
76
76
  <LabeledInput
77
- v-model.number="props.row.value.value"
77
+ v-model:value.number="props.row.value.value"
78
78
  :mode="mode"
79
79
  type="number"
80
80
  min="1"
@@ -85,7 +85,7 @@ export default {
85
85
  </div>
86
86
  <div class="col span-4">
87
87
  <LabeledInput
88
- v-model.number="props.row.value.periodSeconds"
88
+ v-model:value.number="props.row.value.periodSeconds"
89
89
  :mode="mode"
90
90
  type="number"
91
91
  min="1"
@@ -115,7 +115,7 @@ export default {
115
115
  </div>
116
116
  <div class="col span-6">
117
117
  <LabeledInput
118
- v-model.number="value.spec.behavior[type].stabilizationWindowSeconds"
118
+ v-model:value.number="value.spec.behavior[type].stabilizationWindowSeconds"
119
119
  :mode="mode"
120
120
  type="number"
121
121
  min="0"