diff --git a/addons/api/package.json b/addons/api/package.json
index 1bf61697c..a38301dec 100644
--- a/addons/api/package.json
+++ b/addons/api/package.json
@@ -59,7 +59,7 @@
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^2.15.0",
"ember-try": "^1.4.0",
- "eslint": "^7.17.0",
+ "eslint": "^7.31.0",
"eslint-config-prettier": "^7.1.0",
"eslint-plugin-ember": "^10.1.1",
"eslint-plugin-node": "^11.1.0",
diff --git a/addons/auth/package.json b/addons/auth/package.json
index 9d27bee7c..44405d65b 100644
--- a/addons/auth/package.json
+++ b/addons/auth/package.json
@@ -53,7 +53,7 @@
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^2.15.0",
"ember-try": "^1.4.0",
- "eslint": "^7.17.0",
+ "eslint": "^7.31.0",
"eslint-config-prettier": "^7.1.0",
"eslint-plugin-ember": "^10.1.1",
"eslint-plugin-node": "^11.1.0",
diff --git a/addons/core/package.json b/addons/core/package.json
index 1e3f3ef9a..3bdf0c75c 100644
--- a/addons/core/package.json
+++ b/addons/core/package.json
@@ -68,7 +68,7 @@
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^2.15.0",
"ember-try": "^1.4.0",
- "eslint": "^7.17.0",
+ "eslint": "^7.31.0",
"eslint-config-prettier": "^7.1.0",
"eslint-plugin-ember": "^10.1.1",
"eslint-plugin-node": "^11.1.0",
diff --git a/addons/rose/package.json b/addons/rose/package.json
index dad7f51cb..04110e79e 100644
--- a/addons/rose/package.json
+++ b/addons/rose/package.json
@@ -73,7 +73,7 @@
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^2.15.0",
"ember-try": "^1.4.0",
- "eslint": "^7.17.0",
+ "eslint": "^7.31.0",
"eslint-config-prettier": "^7.1.0",
"eslint-plugin-ember": "^10.1.1",
"eslint-plugin-node": "^11.1.0",
diff --git a/ui/admin/app/components/form/credential-library/index.hbs b/ui/admin/app/components/form/credential-library/index.hbs
index beef7e8c6..88154aa84 100644
--- a/ui/admin/app/components/form/credential-library/index.hbs
+++ b/ui/admin/app/components/form/credential-library/index.hbs
@@ -12,6 +12,7 @@
@label={{t 'form.name.label'}}
@error={{@model.errors.name}}
@helperText={{t 'form.name.help'}}
+ disabled={{@model.isSaving}}
readonly={{false}}
as |field|
>
@@ -31,7 +32,7 @@
@label={{t 'form.description.label'}}
@error={{@model.errors.description}}
@helperText={{t 'form.description.help'}}
- @disabled={{@model.isSaving}}
+ disabled={{@model.isSaving}}
readonly={{false}}
as |field|
>
@@ -51,6 +52,7 @@
@label={{t 'resources.credential-library.form.vault_path.label'}}
@error={{@model.errors.attributes_path}}
@helperText={{t 'resources.credential-library.form.vault_path.help'}}
+ disabled={{@model.isSaving}}
readonly={{false}}
as |field|
>
@@ -74,6 +76,7 @@
@selectedValue={{@model.attributes.http_method}}
@changed={{fn (mut @model.attributes.http_method)}}
@inline={{true}}
+ disabled={{@model.isSaving}}
as |radioGroup|
>
{{#each this.httpMethodOptions as |httpMethod|}}
diff --git a/ui/admin/app/router.js b/ui/admin/app/router.js
index 3c359e268..a1bfa1e18 100644
--- a/ui/admin/app/router.js
+++ b/ui/admin/app/router.js
@@ -93,6 +93,11 @@ Router.map(function () {
function () {
this.route('credential-libraries', function () {
this.route('new');
+ this.route(
+ 'credential-library',
+ { path: ':credential_library_id' },
+ function () {}
+ );
});
}
);
diff --git a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library.js b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library.js
new file mode 100644
index 000000000..45f5953fb
--- /dev/null
+++ b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library.js
@@ -0,0 +1,49 @@
+import Route from '@ember/routing/route';
+
+export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrariesCredentialLibraryRoute extends Route {
+ // =methods
+
+ /**
+ * Load a credential-library using current credential store and its parent scope.
+ * @param {object} params
+ * @param {string} params.credential_library_id
+ * @return {CredentialLibraryModel}
+ */
+ async model({ credential_library_id }) {
+ return this.store.findRecord('credential-library', credential_library_id, {
+ reload: true,
+ });
+ }
+
+ /**
+ * Renders the credential library specific templates for header, navigation, and action page sections.
+ * @override
+ */
+ renderTemplate() {
+ super.renderTemplate(...arguments);
+
+ this.render(
+ 'scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-header',
+ {
+ into: 'scopes/scope/credential-stores/credential-store',
+ outlet: 'header',
+ }
+ );
+
+ this.render(
+ 'scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-navigation',
+ {
+ into: 'scopes/scope/credential-stores/credential-store',
+ outlet: 'navigation',
+ }
+ );
+
+ this.render(
+ 'scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-actions',
+ {
+ into: 'scopes/scope/credential-stores/credential-store',
+ outlet: 'actions',
+ }
+ );
+ }
+}
diff --git a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index.js b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index.js
new file mode 100644
index 000000000..8d9b40c15
--- /dev/null
+++ b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index.js
@@ -0,0 +1,3 @@
+import Route from '@ember/routing/route';
+
+export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrariesCredentialLibraryIndexRoute extends Route {}
diff --git a/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library.hbs b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library.hbs
new file mode 100644
index 000000000..7d32ecb0d
--- /dev/null
+++ b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library.hbs
@@ -0,0 +1,3 @@
+{{page-title @model.displayName}}
+
+{{outlet}}
\ No newline at end of file
diff --git a/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-actions.hbs b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-actions.hbs
new file mode 100644
index 000000000..e69de29bb
diff --git a/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-header.hbs b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-header.hbs
new file mode 100644
index 000000000..3c2de9eef
--- /dev/null
+++ b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-header.hbs
@@ -0,0 +1,9 @@
+
{{t 'resources.credential-library.title'}}
+{{t 'resources.credential-library.description'}}
+
+ {{@model.id}}
+
\ No newline at end of file
diff --git a/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-navigation.hbs b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-navigation.hbs
new file mode 100644
index 000000000..d5bb5cf63
--- /dev/null
+++ b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/-navigation.hbs
@@ -0,0 +1,7 @@
+
+
+ {{t 'titles.details'}}
+
+
\ No newline at end of file
diff --git a/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index.hbs b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index.hbs
new file mode 100644
index 000000000..648221a43
--- /dev/null
+++ b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index.hbs
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/index.hbs b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/index.hbs
index 2164989cc..cbe1ede49 100644
--- a/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/index.hbs
+++ b/ui/admin/app/templates/scopes/scope/credential-stores/credential-store/credential-libraries/index.hbs
@@ -11,7 +11,12 @@
{{#each @model as |credentialLibrary|}}
- {{credentialLibrary.displayName}}
+
+ {{credentialLibrary.displayName}}
+
{{credentialLibrary.description}}
diff --git a/ui/admin/package.json b/ui/admin/package.json
index 0f7e95b19..2d1e8f9b0 100644
--- a/ui/admin/package.json
+++ b/ui/admin/package.json
@@ -77,7 +77,7 @@
"ember-source": "~3.24.0",
"ember-template-lint": "^2.15.0",
"ember-template-lint-plugin-prettier": "^2.0.0",
- "eslint": "^7.17.0",
+ "eslint": "^7.31.0",
"eslint-config-prettier": "^7.1.0",
"eslint-plugin-ember": "^10.1.1",
"eslint-plugin-node": "^11.1.0",
diff --git a/ui/admin/tests/unit/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library-test.js b/ui/admin/tests/unit/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library-test.js
new file mode 100644
index 000000000..54025fe54
--- /dev/null
+++ b/ui/admin/tests/unit/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library-test.js
@@ -0,0 +1,16 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'ember-qunit';
+
+module(
+ 'Unit | Route | scopes/scope/credential-stores/credential-store/credential-libraries/credential-library',
+ function (hooks) {
+ setupTest(hooks);
+
+ test('it exists', function (assert) {
+ let route = this.owner.lookup(
+ 'route:scopes/scope/credential-stores/credential-store/credential-libraries/credential-library'
+ );
+ assert.ok(route);
+ });
+ }
+);
diff --git a/ui/admin/tests/unit/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index-test.js b/ui/admin/tests/unit/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index-test.js
new file mode 100644
index 000000000..1e4586a16
--- /dev/null
+++ b/ui/admin/tests/unit/routes/scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index-test.js
@@ -0,0 +1,16 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'ember-qunit';
+
+module(
+ 'Unit | Route | scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index',
+ function (hooks) {
+ setupTest(hooks);
+
+ test('it exists', function (assert) {
+ let route = this.owner.lookup(
+ 'route:scopes/scope/credential-stores/credential-store/credential-libraries/credential-library/index'
+ );
+ assert.ok(route);
+ });
+ }
+);
diff --git a/ui/desktop/package.json b/ui/desktop/package.json
index c22ee5143..046442e65 100755
--- a/ui/desktop/package.json
+++ b/ui/desktop/package.json
@@ -92,7 +92,7 @@
"ember-source": "~3.24.0",
"ember-template-lint": "^2.15.0",
"ember-template-lint-plugin-prettier": "^2.0.0",
- "eslint": "^7.17.0",
+ "eslint": "^7.31.0",
"eslint-config-prettier": "^7.1.0",
"eslint-plugin-ember": "^10.1.1",
"eslint-plugin-node": "^11.1.0",
diff --git a/yarn.lock b/yarn.lock
index eeeb32795..82666df63 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2060,6 +2060,21 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
+"@eslint/eslintrc@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
+ integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^13.9.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
"@formatjs/ecma402-abstract@1.6.4":
version "1.6.4"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.6.4.tgz#cff5ef03837fb6bae70b16d04940213c17e87884"
@@ -2284,6 +2299,20 @@
resolved "https://registry.yarnpkg.com/@hashicorp/structure-icons/-/structure-icons-1.9.1.tgz#eb294ef28e8192062f6c7c08459382ba31a8b4af"
integrity sha512-uuncAHmehXk/WeNzE3NqS8z0YX/AU3Go8rDEUK2rNFdp1c0T1HiHO6RaBW5byB8KEBAPRdSsFSNqB4RaETarNA==
+"@humanwhocodes/config-array@^0.5.0":
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
+ integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.0"
+ debug "^4.1.1"
+ minimatch "^3.0.4"
+
+"@humanwhocodes/object-schema@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf"
+ integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==
+
"@iarna/cli@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz#0f7af5e851afe895104583c4ca07377a8094d641"
@@ -10099,7 +10128,7 @@ eslint@^2.7.0:
text-table "~0.2.0"
user-home "^2.0.0"
-eslint@^7.17.0, eslint@^7.27.0:
+eslint@^7.27.0:
version "7.28.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820"
integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==
@@ -10144,6 +10173,52 @@ eslint@^7.17.0, eslint@^7.27.0:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
+eslint@^7.31.0:
+ version "7.31.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.31.0.tgz#f972b539424bf2604907a970860732c5d99d3aca"
+ integrity sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA==
+ dependencies:
+ "@babel/code-frame" "7.12.11"
+ "@eslint/eslintrc" "^0.4.3"
+ "@humanwhocodes/config-array" "^0.5.0"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^2.0.0"
+ espree "^7.3.1"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.1.2"
+ globals "^13.6.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^6.0.9"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
esm@^3.2.25, esm@^3.2.4:
version "3.2.25"
resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"