Compare commits

..
272 Commits
Author SHA1 Message Date
Zhihe Li 2680301f98 chore: 🤖 Update changelog and version for desktop (#1712) 2023-06-12 16:29:50 -07:00
Dharini Jeeva edf623adf0 fix: 🐛 worker form navigation (#1711)
* fix: 🐛 Show done only when a worker is registered successfully, otherwise show cancel and navigate to the workers list
2023-06-12 08:38:55 -07:00
Dharini Jeeva 37c0c55a60 fix: 🐛 add margin for button sets (#1709) 2023-06-08 16:31:07 -07:00
Randall Morey 863c080196 Optimise Desktop API queries (#1707)
* fix: 🐛 increase auth form width, which was too narrow

* chore: 🤖 optimize targets route queries

* chore: 🤖 optimize sessions route queries

* chore: 🤖 disable polling in sessions route

* chore: 🤖 disable polling in targets route

* refactor: 💡 update tests for new queries and removing timing
2023-06-07 18:28:33 -07:00
Randall Morey 547d44f1bd fix: 🐛 increase auth form width, which was too narrow (#1703) 2023-06-06 18:15:58 -07:00
lisbet-alvarezandRandall Morey 6e96676beb Icu 9412 refactor rose form actions to use hds buttons (#1697)
* refactor: 💡 use hds buttons in rose form actions

✅ Closes: ICU-9412

* test: 💍 fix form actions tests

* docs: ✏️ add new hds button attribute to storybook

* refactor: 💡 add ...attributes back in

* Update addons/rose/addon/components/rose/form/actions/edit-toggle/index.hbs

Co-authored-by: Randall Morey <randall@randallmorey.com>

* Update addons/rose/addon/components/rose/form/actions/index.hbs

Co-authored-by: Randall Morey <randall@randallmorey.com>

* refactor: 💡 remove @submitIsFullWidth option & add css instead

---------

Co-authored-by: Randall Morey <randall@randallmorey.com>
2023-06-05 13:38:41 -07:00
Zhihe Li de10b275d3 chore: 🤖 Update worker binary name to just boundary (#1704)
✅ Closes: ICU-9570
2023-06-02 13:33:51 -04:00
Carlos Alcaide Corvo b94f3d164e style: 💄 Delete old comment code (#1699)
Delete old comment code, seems isn't used for a couple of years
2023-06-01 10:13:03 -07:00
Cameron Perera 80748b28fb refactor: 💡 remove type column from Workers table in Admin UI (#1702)
✅ Closes: ICU-9539
2023-06-01 11:07:57 -05:00
Zhihe Li 963b5d465d feat: 🎸 Add default client port to targets (#1700)
* feat: 🎸 Add default client port to targets

✅ Closes: ICU-9299
2023-05-31 18:33:27 -04:00
Dharini Jeeva 9d7a23fcc4 fix: 🐛 radio card group name (#1701) 2023-05-31 10:00:28 -07:00
Zhihe Li 2a11d75ccf fix: 🐛 Fix serializing client secrets in oidc auth methods (#1698) 2023-05-26 14:14:58 -04:00
dependabot[bot] 59183b9b20 chore(deps): bump socket.io-parser from 4.2.1 to 4.2.3 (#1696)
Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.1 to 4.2.3.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io-parser/compare/4.2.1...4.2.3)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-24 14:21:00 -04:00
lisbet-alvarez fde4ec4e05 Refactor type to use const values (#1695)
* refactor: 💡 use auth-method type consts
2023-05-23 12:37:35 -07:00
lisbet-alvarez 8d77bc60b3 Icu 9226 disable all actions for ldap accounts within users (#1688)
* refactor: 💡 disable all actions for ldap accounts within users

✅ Closes: ICU-9226
2023-05-22 15:46:13 -07:00
lisbet-alvarez 379f317d8b Refactor account and user abilities (#1694)
* refactor: 💡 add abilities to user and remove from account
2023-05-22 11:16:48 -07:00
Carlos Alcaide Corvo fe81a626fa Chore icu 9071 audit resolutions (#1693)
* Delete cryptiles from resolutions

* Delete prismjs from global resolutions and add a specific resolution

* Delete npm-user-validate from global resolutions
2023-05-22 08:38:01 -07:00
a2cc33d405 e2e Test documentation for FE onboarding (#1681)
* Add e2e documentation to faciltiate FE devs onboarding

Co-authored-by: Michael Li <michael.li@hashicorp.com>
Co-authored-by: lisbet-alvarez <107949262+lisbet-alvarez@users.noreply.github.com>

---------

Co-authored-by: Michael Li <michael.li@hashicorp.com>
Co-authored-by: lisbet-alvarez <107949262+lisbet-alvarez@users.noreply.github.com>
2023-05-19 16:10:55 -07:00
Devon Anderson e6664b882f fix: 🐛 fix descriptions for targets list for desktop (#1692)
Target descriptions where not displaying due to some previous
refactoring.  Corrected `description` and `isActive` references.

✅ Closes: ICU-9375
2023-05-19 15:59:49 -04:00
lisbet-alvarez 6dd0423923 refactor: 💡 account and auth-method abilities (#1691)
* refactor: 💡 account and auth-method abilities

* refactor: 💡 add update & delete abilities & unit tests
2023-05-17 14:31:12 -07:00
lisbet-alvarez e8a10b3131 feat: 🎸 add ldap-auth-methods feature flag (#1690) 2023-05-16 16:10:38 -07:00
Dharini Jeeva 7d909551ac chore: Use HDS components in auth methods list view (#1686)
* chore: 🤖 use hds table and dropdown
2023-05-16 09:37:53 -07:00
lisbet-alvarez 3b3d6ab50f Icu 9202 disable all actions for ldap auth method (#1683)
* refactor: 💡 disable all actions for ldap auth-method

✅ Closes: ICU-9202
2023-05-11 15:15:31 -07:00
Randall Morey 4c80f8d8ff feat: 🎸 initial LDAP authentication support (#1645)
* feat: 🎸 initial LDAP authentication support
2023-05-11 13:55:27 -07:00
lisbet-alvarez b344c5fc18 chore: 🤖 upgrade engine.io version to fix security alert (#1685) 2023-05-10 15:07:33 -07:00
lisbet-alvarez fd72b414e0 chore: 🤖 update yaml version to fix security alert (#1684) 2023-05-10 14:13:30 -07:00
Randall Morey 5723d8efb5 fix: 🐛 support metadata access on another API host (#1682) 2023-05-09 15:06:32 -07:00
041990322f docs: ✏️ Add i18n documentation (#1679)
* docs: ✏️ Add i18n documentation

---------

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
Co-authored-by: lisbet-alvarez <107949262+lisbet-alvarez@users.noreply.github.com>
2023-05-05 11:27:05 -07:00
Zhihe Li 3d1ac0a4e0 feat: 🎸 Download latest HCP binary for worker config commands (#1680)
✅ Closes: ICU-7265
2023-05-04 15:14:00 -04:00
Carlos Alcaide Corvo ffd36003e0 Chore update embroider test setup (#1678)
* Update embroider/test-setup within addons/rose

* Update embroider/test-setup within addons/api, auth and core
2023-05-01 11:16:20 -07:00
f6a9c4c526 Result of tsccr-helper -pin-all-workflows . (#1677)
Co-authored-by: hashicorp-tsccr[bot] <hashicorp-tsccr[bot]@users.noreply.github.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2023-04-27 12:24:39 -07:00
Carlos Alcaide Corvo 9bd356e9d1 ICU-8810: Audit 3 resolutions (#1676)
* Delete npm-registry-fetch from resolutions

* Delete tunnel-agent from resolutions
2023-04-27 11:06:53 -07:00
Devon Anderson 46d8758fba refactor: 💡 refactored whitespace from layout (#1675)
* refactor: 💡 refactored whitespace from layout

Removed whitespace html formatting from layout in add-principals view.

✅ Closes: ICU-5987

* refactor: 💡 removed lint ignore

Removed lint ignore for whitespace formating.
2023-04-26 15:37:56 -04:00
Devon AndersonandRandall Morey a05d07919a refactor: 💡 removed whitespace from layout in add-members view (#1673)
* refactor: 💡 removed whitespace from layout in add-members view

Removed whitespace from layout in `add-members` view by replacing
`Rose::Table` with `Hds::Table`.

✅ Closes: ICU-5986

* refactor: 💡 refactor table

Added custom styling to remove margin bottom from radio card field. That
is causing 1st column to not be valign center.

✅ Closes: ICU-5986

* refactor: 💡 refactor stylings to override.scss

Moved Hds custom syles to `overrides.scss`

✅ Closes: ICU-5986

* Update addons/rose/addon/styles/hds/overrides.scss

Co-authored-by: Randall Morey <randall@randallmorey.com>

* Update addons/rose/addon/styles/hds/overrides.scss

Co-authored-by: Randall Morey <randall@randallmorey.com>

* refactor: 💡 refactored app.scss for admin

Removed custom css for `.key-value-list` selector that is now being
served in `overrides.scss` globally.

* refactor: 💡 patched overrides

Ported Hds overrides from other repository.

---------

Co-authored-by: Randall Morey <randall@randallmorey.com>
2023-04-26 13:38:00 -04:00
Carlos Alcaide Corvo d0e00c9ea7 Chore audit 3 resolutions desktop (#1674)
* chore: 🤖 Audit 3 Desktop client resolution deps

✅ Closes: ICU-8811
2023-04-26 09:21:22 -07:00
lisbet-alvarez 61269f901a chore: 🤖 upgrade @storybook/ember-cli-storybook to 0.6.0 (#1669)
* chore: 🤖 update @storybook/ember-cli-storybook to 0.6.0

✅ Closes: ICU-6588

* chore: 🤖 remove css-what from resolutions
2023-04-24 10:05:15 -07:00
lisbet-alvarez 6cb9c2ab1b chore: 🤖 add json5 to resolutions per dependabot alerts (#1672)
* chore: 🤖 add json5 to resolutions per dependabot alerts

* fix: 🐛 remove unecessary resolutions
2023-04-20 15:37:45 -07:00
Stan Ryzhov 3ea8ade828 test: 💍 (admin-e2e): Add test to create different credentials (#1670) 2023-04-20 14:07:20 -04:00
Stan Ryzhov 1c392f72b9 test(admin/e2e): Define expected private key for vault credential store test (#1671) 2023-04-19 11:09:14 -04:00
Dharini Jeeva ec0b610f8b chore: 🤖 update design system package (#1668) 2023-04-18 14:41:18 -07:00
Stan Ryzhov 9795353545 test(admin/e2e): Add create target with address test (#1667) 2023-04-17 16:14:59 -04:00
Zhihe Li 054881dc4e feat: 🎸 Add support to display external name for dynamic hosts (#1664)
* feat: 🎸 Add support to display external name for dynamic hosts

✅ Closes: ICU-8795
2023-04-17 13:22:32 -04:00
Carlos Alcaide Corvo a4395b85a6 chore: 🤖 Update electron-forge/* packages (#1666)
Update electron-forge/* packages
2023-04-17 08:43:39 -07:00
dependabot[bot] 509925ff10 chore(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 (#1665)
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-06 09:29:17 -07:00
Carlos Alcaide Corvo d5c8389ae2 Resolutions audit: Delete 3 oldest resolutions (#1663)
* Delete bl from resolutions

* Delete tough-cookie from resolutions

* Delete npm from resolutions
2023-04-05 18:04:14 -07:00
Carlos Alcaide Corvo 9fa816757b fix: 🐛 Fix missing translation (#1662)
Fix missing translation on the toggle color theme selector
2023-04-03 10:33:40 -07:00
Randall MoreyandZhihe Li 7350c0e08c Feature metadata (#1661)
* feat: 🎸 load edition from controller-metadata.json

* refactor: 💡 rename edition and add licensed features support

* chore: 🤖 support dev toggling of licensed features

* chore: 🤖 rename ent edition

* Update ui/admin/app/services/feature-edition.js

* Update ui/admin/app/instance-initializers/feature-edition.js

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

* chore: 🤖 cleanup

* chore: 🤖 feature edition disabled in tests / fix test cases

* test: 💍 remove feature disable calls in tests

* test: 💍 fix broken tests

* fix: 🐛 fix config bug

* fix: 🐛 fix broken test due to feature flags

---------

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2023-03-31 17:38:17 -07:00
ee1cd4100c chore(deps-dev): bump webpack from 5.59.1 to 5.76.0 (#1654)
Bumps [webpack](https://github.com/webpack/webpack) from 5.59.1 to 5.76.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.59.1...v5.76.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Randall Morey <randall@randallmorey.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2023-03-31 15:12:07 -07:00
hashicorp-copywrite[bot]andCarlos Alcaide Corvo f17b7d54d8 [COMPLIANCE] Add Copyright and License Headers (#1660)
Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2023-03-28 12:50:34 -05:00
lisbet-alvarez 087898c15a fix: 🐛 add model hook to host route for dynamic host catalogs (#1659)
* fix: 🐛 add model hook to host route for dynamic host catalogs

✅ Closes: ICU-8594

* refactor: 💡 remove page formatting for host route
2023-03-28 10:14:31 -07:00
Randall Morey ee2fa6df7d refactor: 💡 remove explicit byow-pki-upstream, as it is default (#1658)
* refactor: 💡 consolidate ssh features into ssh-target flag

✅ Closes: ICU-8383

* refactor: 💡 factor out base edition

* feat: 🎸 dynamic feature edition enablement and toggling

* refactor: 💡 remove explicit byow-pki-upstream, as it is default

✅ Closes: ICU-8551

* refactor: 💡 extract feature flag config into separate file
2023-03-21 15:41:27 -07:00
Randall Morey acd719140d Refactor edition enablement (#1657)
* refactor: 💡 consolidate ssh features into ssh-target flag

✅ Closes: ICU-8383

* refactor: 💡 factor out base edition

* feat: 🎸 dynamic feature edition enablement and toggling
2023-03-17 14:34:37 -07:00
Devon Anderson bd6eee8eb3 refactor: 💡 refactored dark-mode styling for HDS (#1655)
Refactored boundary custom colors to be included in root instead of
unused mixin.
2023-03-16 10:19:20 -04:00
Devon Anderson 3ba53dfc2e chore: 🤖 deprecate window object service (#1652)
* chore: 🤖 deprecate window object service

Deprecate `browser-object` service in favor of `ember-browser-services`

✅ Closes: ICU-7152

* refactor: 💡 cluster-url test fail

commit with cluster-url test failing

✅ Closes: ICU-7152

* refactor: 💡 refactor test to reflect changes

Refactor test to reflect `browser/window` service in `cluster-url` route

✅ Closes: ICU-7152

* refactor: 💡 refactor cluster url test

change logic of mockIPC to a function call

✅ Closes: ICU-7152
2023-03-07 16:55:24 -05:00
Carlos Alcaide Corvo 0a76111944 chore: 🤖 Upgrade Stylelint within desktop client (#1653)
Upgrade Stylelint within desktop client to be consistent with the same
version we use in Admin UI.

✅ Closes: ICU-3276
2023-03-02 11:07:41 -08:00
Zhihe Li c7546af207 fix: 🐛 Fix vault worker filter description (#1651)
✅ Closes: ICU-8192
2023-03-02 10:25:37 -05:00
Michael Li 7eb6a101a2 chore: Add missing compliance headers (#1649) 2023-03-01 11:29:33 -05:00
hashicorp-copywrite[bot]andCameron Perera 3d610427d0 [COMPLIANCE] Add Copyright and License Headers (#1617)
* [COMPLIANCE] Add Copyright and License Headers

* chore: 🤖 update Copyright headers to satisfy our lint rules

---------

Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2023-03-01 09:39:41 -06:00
Michael Li a0fe6c86f6 test(admin/e2e): Update DHC test to catch host issue (#1648) 2023-02-28 15:55:41 -05:00
Michael Li f5cb07248d test(admin/e2e): Add login tests (#1647) 2023-02-28 10:14:22 -05:00
Michael Li 2dc50570b7 test(admin/e2e): Add tests for Credential Stores (#1643) 2023-02-27 13:54:12 -05:00
Michael Li 1f3a8ef135 test(admin/e2e): Add test for AWS Dynamic Host Catalogs (#1641) 2023-02-24 13:59:30 -05:00
Zhihe Li a8bbf91a0a fix: 🐛 Fix generic-vault getting extra null fields when saving (#1640)
* fix: 🐛 Fix generic-vault getting extra null fields when saving

✅ Closes: ICU-8141
2023-02-24 13:11:17 -05:00
Michael Li 7816772ef2 test(admin/e2e): Add first playwright test (#1637)
Adds an end-to-end test for the Admin UI using Playwright. This test uses the Admin UI to create the necessary resources to connect to a target. The test then uses the CLI to start a session and checks in the Admin UI that a session is created
2023-02-23 18:30:51 -05:00
Carlos Alcaide Corvo 7fbdefba59 fix: 🐛 Update yarn.lock (#1642) 2023-02-23 12:21:40 -08:00
Carlos Alcaide Corvo 0b992bb011 fix: 🐛 Fix failure in GH Actions Workflows (#1639) 2023-02-22 12:14:04 -08:00
Carlos Alcaide Corvo 5efc1af76d test: 💍 Swap playwright to @playwright/test package (#1635)
Playwright documentation recommends to use @playwright/test now as the
only playwright package
2023-02-21 11:50:59 -08:00
Dharini Jeeva 7db1edda1c chore: use structuredClone instead of ember-copy addon (#1634) 2023-02-16 14:06:37 -08:00
Zhihe Li 76147af357 chore: 🤖 Pin storybook docs addon to a minor version (#1631)
The storybook docs addon is broken in 6.5.x currently. Pinning it to
6.3.x lets us to continue using storybook. See this github issue:
https://github.com/storybookjs/storybook/issues/17527

✅ Closes: ICU-7791
2023-02-15 14:41:53 -05:00
Cameron PereraandRandall Morey 2d1ed7b8bd refactor: 💡 rename div around ordered-series-diagram (#1633)
* refactor: 💡 rename div around ordered-series-diagram

* refactor: 💡 remove margin top and add to min-height

* refactor: 💡 simplify diagrams

---------

Co-authored-by: Randall Morey <randall@randallmorey.com>
2023-02-14 15:32:19 -06:00
Zhihe Li e1432c2750 chore: 🤖 Update changelog and version for desktop client (#1625)
Upgrade CLI version for desktop client to 0.12.0
2023-02-13 14:18:36 -05:00
Sarah Thompson deb9bba3ef update release triggers to call new GHA workflow (#1632)
* update release triggers to call new GHA workflow

* update workflow file name

* address feedback
2023-02-13 18:38:48 +00:00
Dharini Jeeva 49f2a4a08b Target form refactor (#1627)
* refactor: 💡 target form
2023-02-10 14:38:31 -08:00
Cameron Perera 3adfb08cb3 fix: 🐛 fix diagram width so explainer text stays below it (#1629) 2023-02-09 16:44:01 -06:00
Cameron Perera 540c9e2102 refactor: 💡 Update how WorkerDiagram is used in Target form (#1626)
* refactor: 💡 Update how WorkerDiagram is used in Target form

* refactor: 💡 remove extra div wrappers

Remove div wrappers for worker diagrams that were no longer needed

* refactor: 💡 rename worker diagram attributes to be more clear

* refactor: 💡 remove style changes out of scope for updates

* refactor: 💡 update logic for how HCP diagram is shown

* chore: 🤖 Add multi-hop flags to OSS block for verbosity
2023-02-09 16:00:19 -06:00
Carlos Alcaide CorvoandZhihe Li aff993b2b5 docs: ✏️ Add how to debug binary to docs (#1628)
* docs: ✏️ Add how to debug binary to docs

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2023-02-09 10:57:54 -08:00
dependabot[bot]andZhihe Li 823de4f598 chore(deps): bump http-cache-semantics in /ui/desktop/electron-app (#1621)
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2023-02-06 14:16:03 -05:00
Dharini Jeeva df4590de96 chore: 🤖 clean up isRequired/isOptional boolean (#1624) 2023-02-06 10:47:34 -08:00
dependabot[bot]andZhihe Li d0beb6eabd chore(deps): bump jszip from 3.7.1 to 3.10.1 in /ui/desktop/electron-app (#1618)
Bumps [jszip](https://github.com/Stuk/jszip) from 3.7.1 to 3.10.1.
- [Release notes](https://github.com/Stuk/jszip/releases)
- [Changelog](https://github.com/Stuk/jszip/blob/main/CHANGES.md)
- [Commits](https://github.com/Stuk/jszip/compare/v3.7.1...v3.10.1)

---
updated-dependencies:
- dependency-name: jszip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2023-02-06 12:46:10 -05:00
Zhihe Li e6548f4d59 fix: 🐛 Fix undefined values from resource filter (#1622)
* fix: 🐛 Fix undefined values from resource filter
2023-02-06 10:28:00 -05:00
Zhihe Li 82bee42959 fix: 🐛 Fix null date time erroring out (#1623)
* fix: 🐛 Fix null date time erroring out

* style: 💄 Remove braces in if statement
2023-02-03 17:53:30 -05:00
Zhihe Li 2d6e26de84 style: 💄 Cleanup grammar of target address modal (#1620) 2023-02-03 09:49:34 -05:00
Carlos Alcaide Corvo 277e5ce197 Change the way we declare icon color (#1619) 2023-02-02 10:08:12 -08:00
Zhihe Li f0530e1f8f Vault SSH Cert Feature (#1596)
* feat: 🎸 Update models for vault ssh cert feature (#1591)

✅ Closes: ICU-7546

* feat: 🎸 Setup types in cred library forms and use HDS component (#1597)

* feat: 🎸 Setup types in cred library forms and use HDS component

✅ Closes: ICU-7673

* feat: 🎸 Add vault ssh cert type for credential library (#1608)

* feat: 🎸 Add vault ssh cert type for credential library

✅ Closes: ICU-7678

* feat: 🎸 Enable feature flag for vault ssh cert work (#1614)

* fix: 🐛 Change fields to optional as they get default by backend (#1615)

* Chore/cleanup vault ssh cert (#1616)
2023-02-01 13:46:23 -05:00
Cameron Perera e3772352ea chore: 🤖 fix broken host set links (#1613) 2023-01-31 16:02:05 -06:00
Carlos Alcaide Corvo 007fc4960b chore: 🤖 Refactor onboarding (#1586)
* chore: 🤖 Refactor onboarding

Refactor onboarding

✅ Closes: ICU-7558
2023-01-31 12:05:52 -08:00
Cameron Perera 9b998ece1b chore: 🤖 Enable Multi-hop & Network Address for Targets feature (#1607)
* chore: 🤖 Enable Multi-hop feature

* chore: 🤖 Enable target network address feature
2023-01-27 08:47:40 -06:00
Dharini Jeeva f71418732e fix: 🐛 worker section margin and reduce layout shift (#1610) 2023-01-27 08:34:51 -06:00
Dharini Jeeva d7f54af7e4 target workers UI Enterprise and HCP workflow (#1601)
adds ingress filter to target worker filter
2023-01-25 15:12:14 -08:00
Randall Morey de986c3df4 refactor: 💡 logically separate save steps for targets (#1604)
* refactor: 💡 logically separate save steps for targets

* Update ui/admin/app/routes/scopes/scope/targets.js

Oops, delete actions should catch.

* chore: 🤖 rename ids var
2023-01-25 12:48:23 -08:00
Dharini Jeeva df70c76b29 fix: 🐛 empty member ids within managed groups (#1600) 2023-01-23 15:27:23 -08:00
Dharini Jeeva 57fcab4c53 Tests target update create (#1594)
* test: 💍 add test cases for create and update target
2023-01-23 14:48:29 -08:00
Dharini Jeeva b41b6ee3e3 Icu 7301 UI target oss workflow (#1589)
Icu 7301 UI target OSS workflow (#1589)
2023-01-23 14:28:37 -08:00
Zhihe Li da59684f25 refactor: 💡 Move save back to route to unblock other work (#1598) 2023-01-23 14:32:31 -05:00
Devon AndersonandCameron Perera cf16bf8e33 chore: 🤖 fix incorrect url (#1599)
* chore: 🤖 fix incorrect url

Fix incorrect hcp worker ui download instructions that still referenced
old version.

* Update ui/admin/app/components/form/worker/create-worker-led/index.js

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2023-01-23 11:29:31 -05:00
Devon Anderson 67219d07eb refactor: 💡 update hcp worker instructions (#1587)
Update HCP binary download instructions to reflect 0.12.0 version

✅ Closes: ICU-7603
2023-01-23 10:25:13 -05:00
Devon Anderson 812e509003 chore: 🤖 create target worker explainer element (#1595)
* chore: 🤖 create target worker explainer element

Create a element that will explain what the filters and diagrams mean
when toggled and on screen.

* refactor: 💡 add logic directly to worker-diagram

* refactor: 💡 added logic to all worker diagrams

Added logic to all worker diagrams
2023-01-20 12:44:48 -06:00
Randall Morey 54d5d34981 test: 💍 fixes flaky theme selection test (#1592)
✅ Closes: icu-7597
2023-01-19 16:53:02 -08:00
Cameron Pereraanddvonanderson ee85497182 feat: 🎸 Add HCP logic to Worker Diagram component (#1585)
* feat: 🎸 create Worker Diagram for OSS

✅ Closes: ICU-7579

* refactor: 💡 change ordered series icon to have white background

* feat: 🎸 Create Worker Diagram for egress and ingress filters

✅ Closes: ICU-7592

* feat: 🎸 Add HCP logic to Worker Diagram component

✅ Closes: ICU-7594

* refactor: 💡 remove wrapping divs and update data-test attrs

* refactor: 💡 revert HDS icon background color change

* refactor: 💡 make data-test attr more verbose

* test: 💍 fix data-test selectors for dual filter tests

* refactor: 💡 refactor test for worker-diagram dual-filter

Seperate test for `worker-diagram/dual-filter` into tow seperate test.
One for HCP and one for Enterprise.

✅ Closes: ICU-7594

* chore: 🤖 actual test for last commit

actual test for last commit

* chore: 🤖 split woker-diagram dual-filter into two components

Split worker-diagram-dual-filter component into two seperate component
and fixed test to reflect changes.

✅ Closes: ICU-7594

* refactor: 💡 quick test refactor

Refactor test for `worker-diagram-dual-filter`

* refactor: 💡 refactor dual-filter test

Refactor worker-diagram-dual-filter test to better align with if the
diagram exist, rather than what the text inside of the diagram states.

✅ Closes: ICU-7594

Co-authored-by: dvonanderson <devon.anderson@hashicorp.com>
2023-01-19 14:46:40 -06:00
Dharini Jeeva a6b2acc14d Oss workflow target egress filter (#1590)
* chore: 🤖 add egress filters to target
2023-01-18 20:26:28 -08:00
Devon Anderson 06b96c0315 chore: 🤖 enable feature flag (#1588)
Enable json-credential feature-flag for 0.12 release

✅ Closes: ICU-6832
2023-01-18 12:18:06 -05:00
Zhihe Li 3d0be5ef48 refactor: 💡 Simplify template for confirmation dialog (#1580) 2023-01-17 17:08:08 -05:00
Cameron Perera 07cf9fc533 Create Worker Diagram for egress and ingress filters (#1584)
* feat: 🎸 create Worker Diagram for OSS

✅ Closes: ICU-7579

* refactor: 💡 change ordered series icon to have white background

* feat: 🎸 Create Worker Diagram for egress and ingress filters

✅ Closes: ICU-7592

* refactor: 💡 remove wrapping divs and update data-test attrs

* refactor: 💡 revert HDS icon background color change

* refactor: 💡 make data-test attr more verbose
2023-01-17 14:39:54 -06:00
Zhihe Li 0cecb0d856 Icu 7490 UI add new address field to target (#1579)
* feat: 🎸 Add network address field to targets

✅ Closes: ICU-7490
2023-01-17 15:00:43 -05:00
Cameron Perera bfc275e0f6 feat: 🎸 create Worker Diagram for OSS (#1583)
* feat: 🎸 create Worker Diagram for OSS

✅ Closes: ICU-7579

* refactor: 💡 remove wrapping divs and update data-test attrs
2023-01-17 12:44:24 -06:00
Zhihe Li 1f229fb444 feat: 🎸 Add feature flag for vault ssh certificate (#1581)
* feat: 🎸 Add feature flag for vault ssh certificate

✅ Closes: ICU-7547
2023-01-13 15:15:44 -08:00
Carlos Alcaide Corvo 583d6de49b chore: 🤖 Deprecate ember-test-selectors usage (#1578)
Deprecate ember-test-selectors usage.

✅ Closes: ICU-7572
2023-01-13 13:17:20 -08:00
Devon AndersonandRandall Morey cf66235948 feat: 🎸 OrderedSeriesDiagram component (#1573)
* feat: 🎸 OrderedSeriesDiagram component

Created `orderd-series-diagram` component to look a the state of the
ingress and egress filters and determine which diagram should be
displayed.

✅ Closes: ICU-6459

* refactor: 💡 sass lint fix

Fixed sass lint errors

✅ Closes: ICU-7347

* Update app.scss

added closing tag

* refactor: 💡 refactor of styling and test

Refactored styling for `ordered-series-diagram` to match mocks, and
fixed indent errors in test.

✅ Closes: ICU-7347

* refactor: 💡 clean up testing errors

Clean up testing errors for `ordered-series-diagram`

* refactor: 💡 refactor series diagram (#1577)

* refactor: 💡 merge refactor changes and fix test

Merged refactor changes to ordered series diagram and fix tests

✅ Closes: ICU-7347

Co-authored-by: Randall Morey <randall@randallmorey.com>
2023-01-13 13:22:16 -05:00
Cameron Perera b02dc0aa43 fix: 🐛 Remove json_object from payload for non-json credentials (#1576)
* fix: 🐛 Remove json_object from payload for non-json credentials

* refactor: 💡 update new route logic for type specific attributes

* test: 💍 remove typeIn and use fillIn for json credential test
2023-01-12 16:28:43 -06:00
Cameron Perera f7c80c8869 UI target worker filter deprecation message (#1574)
* feat: 🎸 Add worker_filter deprecation message to target form

* test: 💍 fix test selectors for worker_filter message
2023-01-11 15:46:47 -06:00
Carlos Alcaide Corvo c31f9e98be refactor: 💡 Clean up prettier config files (#1571)
Clean up prettier config files

✅ Closes: ICU-6851
2023-01-11 10:04:03 -08:00
Carlos Alcaide Corvo b58eda1122 refactor: 💡 Deprecate htmlbars-inline-precompile within addons (#1563)
* refactor: 💡 Deprecate htmlbars-inline-precompile within addons
2023-01-11 08:55:35 -08:00
Zhihe Li 7509fa345b Chore/parallelize tests (#1556) 2023-01-10 18:25:09 -05:00
Cameron Perera ad37b489b7 refactor: 💡 Migrate Target form to use HDS components (#1562)
* refactor: 💡 Migrate Target form to use HDS components

* chore: 🤖 add ember-test-selectors to remove data-test attribute

Removes data-test attributes in production builds

* refactor: 💡 Default Port marked requried or optional by type
2023-01-10 16:18:28 -06:00
Cameron Perera 63f619b1ff Add egress and ingress worker filters to target model (#1554)
* feat: 🎸 add egress and ingress worker filter to target model

✅ Closes: ICU-7300

* chore: 🤖 update mirage to include ingress/egress worker filter

* refactor: 💡 update target mirage config for worker filters

* refactor: 💡 update how target id is set in mirage factory

* refactor: 💡 update target id and default_port mirage setup

* test: 💍 fix missing address attribute in new tests
2023-01-10 15:28:20 -06:00
Dharini Jeeva f41631c745 chore: 🤖 disable csp meta for prod (#1560) 2023-01-10 13:07:22 -08:00
Devon AndersonandCameron Perera 1bd057bb4c refactor: 💡 desktop display of complex nested secrets (#1551)
* refactor: 💡 desktop display of complex nested secrets

A quick solution for displaying JSON secret objects in connection modal.

✅ Closes: ICU-7409

* refactor: 💡 refactor hidden-secret.js and test

Guard against null for in `typeof` return.

✅ Closes: ICU-7409

* Update ui/desktop/app/styles/app.scss

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>

* refactor: 💡 test

Changed test to check for secret output after clicking on reveal

* refactor: 💡 fix style for hidden-secret and test

Refactor hidden-secret span styling to have content centered and
refactored testing for assert.dom instead of find

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2023-01-10 12:56:52 -05:00
Cameron Perera 6a8d563e06 chore: 🤖 add json credential to desktop mirage scenario (#1561)
Now when connecting to a target a JSON credential will be included as
one of the credential sources via mirage
2023-01-10 09:46:43 -06:00
Dharini Jeeva 2c72f85da1 Add support for managed groups in add-principals list (#1548)
chore: 🤖 add managed groups to add-principals view
2023-01-09 11:32:37 -08:00
Zhihe Li 73be8268a6 chore: 🤖 Add feature flag for target network address feature (#1558)
✅ Closes: ICU-7493
2023-01-09 13:41:20 -05:00
Zhihe Li 6d048d8e10 feat: 🎸 Update target model for address (#1557)
✅ Closes: ICU-7489
2023-01-09 12:35:42 -05:00
c21f011bb2 Refactor upgrade ember 4 (#1501)
Upgrade Ember 4

Co-authored-by: Randall Morey <randall@randallmorey.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2023-01-09 08:48:49 -08:00
Zhihe Li ed91b26861 chore: 🤖 Update dependencies to fix minimatch vulnerability (#1553) 2023-01-06 11:50:34 -05:00
Zhihe Li 044bd14e21 chore: 🤖 Remove yarn test from commit hook (#1555) 2023-01-05 15:32:35 -05:00
Cameron Perera d8d1c797f5 chore: 🤖 add target multi-hop flags to environment config (#1546)
* chore: 🤖 add target multi-hop flags to environment config

✅ Closes: ICU-7299

* chore: 🤖 rename feature flag to target-dual-worker

* chore: 🤖 update multi-hop flags to target-worker-filters-v2
2023-01-03 15:39:27 -06:00
Carlos Alcaide Corvo 49ce67b69e Update latest dependency changes (#1552) 2023-01-03 11:42:47 -08:00
Zhihe Li 5612abce4a chore: 🤖 Update electron deps (#1547) 2023-01-03 14:14:55 -05:00
Zhihe Li 07e64a7406 chore: 🤖 Pin request to latest version to fix qs vulnerability (#1550) 2022-12-23 15:11:40 -05:00
Zhihe Li 2393698d0d chore: 🤖 Update engine.io version to fix security vuln (#1549) 2022-12-23 11:33:54 -05:00
Dharini Jeeva f3dbd7cdab Add links to role principals with ability (#1545)
chore: 🤖 add links to role/principals
2022-12-22 14:41:00 -08:00
Dharini Jeeva f2c0458fb5 Add model support for managed groups (#1544)
* chore: 🤖 streamline managed groups getter on role
2022-12-22 14:09:56 -08:00
Dharini Jeeva 392da009d0 Add mirage support principal managed groups (#1542)
* chore: 🤖 mocks for principals/managed-groups & roles
2022-12-22 10:23:49 -08:00
Zhihe Li 1006680060 chore: 🤖 Update xmldom to patch security vulnerability (#1541) 2022-12-22 11:05:31 -05:00
Dharini Jeeva e9f1de91a1 chore: 🤖 update role form fields to hds (#1539) 2022-12-21 09:42:13 -08:00
Randall Morey 7dd9fb80d5 chore: 🤖 add role readPrincipal ability (#1540) 2022-12-20 16:31:39 -05:00
Randall Morey 69dfc7c784 refactor: 💡 use constants for target types (#1538)
* refactor: 💡 use constants for target types

* chore: 🤖 import types rather than *

* chore: 🤖 use capitalized TYPES_TARGET constant name
2022-12-20 12:07:52 -05:00
Zhihe Li 473ebcc397 chore: 🤖 Bump loader-utils to 2.0.4 (#1537) 2022-12-20 11:29:13 -05:00
Randall Moreyanddvonanderson 54c5c7fdc5 Chore tweak target type content (#1529)
* fix: 🐛 refactor info-field component

Overall context of how the `<InfoField/>` was changed to the correct
order.  Corrected css grid to have the order of
`label,input-field,helper-text`. Also refactored all component instances
affected by the change.

* refactor: 💡 refactor styling for icon to be center

refactor will get the icon as close to center as possible.

* chore: 🤖 ssh type first; update names and descriptions

* chore: 🤖 tweak info field styles

* chore: 🤖 fix formatting/linting issue

* refactor: 💡 credential stylistic changes per PR feedback

* chore: 🤖 reuse configPath

* fix: 🐛 fix lint error

* chore: 🤖 add target type field helper text

Co-authored-by: dvonanderson <devon.anderson@hashicorp.com>
2022-12-19 16:59:51 -05:00
Randall Morey 51c1aba794 chore: 🤖 cleanup json creds code / tests (#1535) 2022-12-16 15:06:19 -05:00
Michele Degges f1b7a9cd84 OSS->ENT merge trigger (#1520) 2022-12-16 09:42:40 -08:00
Cameron Perera d542acfc15 test: 💍 add tests for updating JSON credentials (#1531)
* test: 💍 add tests for updating JSON credentials

✅ Closes: ICU-6805

* refactor: 💡 update click selector for discard dialog tests
2022-12-15 13:24:48 -06:00
Dharini Jeeva 92db4d4947 chore: 🤖 remove rose radiocard and styles (#1521)
chore: 🤖 remove rose radio card and styles
2022-12-15 09:11:01 -08:00
Randall Moreyanddvonanderson ed9e674823 Refactor info field component (#1527)
* fix: 🐛 refactor info-field component

Overall context of how the `<InfoField/>` was changed to the correct
order.  Corrected css grid to have the order of
`label,input-field,helper-text`. Also refactored all component instances
affected by the change.

* refactor: 💡 refactor styling for icon to be center

refactor will get the icon as close to center as possible.

* chore: 🤖 tweak info field styles

Co-authored-by: dvonanderson <devon.anderson@hashicorp.com>
2022-12-14 18:55:11 -05:00
Cameron Perera c933aa8840 test: 💍 Add delete tests for JSON Credentials (#1526)
* test: 💍 Add delete tests for JSON Credentials

✅ Closes: ICU-6806

* refactor: 💡 update JSON variable names
2022-12-14 13:36:30 -06:00
Carlos Alcaide Corvo f6cad6a9ee chore: 🤖 Upgrade ember-focus-trap (#1530)
Upgrade ember-focus-trap (need for Ember 4 work)
2022-12-14 10:28:54 -08:00
c4a70e9e9e Icu 7083 add stylelint to admin (#1519)
* Added styelint to `ui/admin'

* refactor: 💡 quick refactor

Refactor attribute name back to original

✅ Closes: ICU-7083

* Update _notify.scss

for got to set the calling of the animation back in the selector

* refactor: 💡 quick refactor for stylelintrc file

possible pattern selector settings

* refactor: 💡 added rule for selector class pattern

Added rule for kebab-case, HDS, and CodeMirror

✅ Closes: ICU-7083

* Update app.scss

fixed linting errors.

* refactor: 💡 refactor stylelintrc

Simplify regex for `stylelintrc` and added
comments that details what
the regex is doing.

✅ Closes: ICU-7083

* Update ui/admin/.stylelintrc.js

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

Co-authored-by: Randall Morey <randall@randallmorey.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-12-14 12:22:44 -05:00
Cameron Perera 8a61c28254 test: 💍 Create read tests for JSON credentials (#1524)
* test: 💍 Create read tests for JSON credentials

✅ Closes: ICU-6804

* refactor: 💡 use HDS color token to skeleton message color

* refactor: 💡 update JSON variable names
2022-12-14 09:53:34 -06:00
3c2d5e6c7a chore(deps): bump express from 4.17.1 to 4.18.2 (#1514)
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.18.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.18.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-12-14 03:16:16 -05:00
88f195d02d chore(deps): bump qs from 6.5.2 to 6.5.3 in /ui/desktop/electron-app (#1513)
Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-12-14 01:04:54 -05:00
Dharini Jeeva 7d3727dc34 Radio card migration - hostcatalog hosts host sets (#1503)
* chore: 🤖 radio card migration
2022-12-13 17:45:26 -08:00
Cameron Perera d98a85e2f4 test: 💍 update list credential tests (#1528)
* test: 💍 update list credential tests

✅ Closes: ICU-6807

* refactor: 💡 fix JSON variable naming
2022-12-13 15:56:03 -06:00
Devon Anderson fb89cbb4cf fix: 🐛 refactor info-field component (#1525)
* fix: 🐛 refactor info-field component

Overall context of how the `<InfoField/>` was changed to the correct
order.  Corrected css grid to have the order of
`label,input-field,helper-text`. Also refactored all component instances
affected by the change.

* refactor: 💡 refactor styling for icon to be center

refactor will get the icon as close to center as possible.
2022-12-13 15:49:22 -05:00
dependabot[bot]andCarlos Alcaide Corvo 2192794089 chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 (#1510)
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2022-12-13 11:57:36 -08:00
Cameron Perera 66ae9eb5b0 feat: 🎸 Update byow install boundary command for hcp edition (#1522)
* feat: 🎸 Update byow install boundary command for hcp edition

* refactor: 💡 update version in download url for boundary worker
2022-12-12 18:55:28 -06:00
lisbet-alvarezandCameron Perera e418017bc2 feat: 🎸 create form for json credentials (#1498)
* feat: 🎸 create form for json credentials

✅ Closes: ICU-6682

* refactor: 💡 add new info field

* refactor: 💡 add feature flag

* refactor: 💡 add hds radio cards to json cred

* Update ui/admin/tests/acceptance/credential-store/credentials/create-test.js

* test: 💍 add test for json cred

* chore: 🤖 Remove ember-data-model-fragments package

* fix: 🐛 Update how json is added as a known credential type

* refactor: 💡 update credentialTypes if statement to ternary

* chore: 🤖 add ember-data back to addon/api project

* chore: 🤖 remove ember-feature-flag from addon/api

* refactor: 💡 remove if statement in cred form

* refactor: 💡 update selectors for json cred. tests

* refactor: 💡 Update Credential Form to use form.disabled

* test: 💍 Fix test selectors for radio card credential tests

* refactor: 💡 update credential types declaration to const

* style: 💄 Fix style issue with SecretEditor in edit mode

* refactor: 💡 remove disabled and readonly attributes in form

* refactor: 💡 Create credential ability canRead override

* test: 💍 add credential ability override tests

* test: 💍 Fix brokered credential test with json support added

* refactor: 💡 add attributes comment back to credential model

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-12-12 18:37:01 -06:00
Dharini Jeeva e18b30a54e chore: 🤖 radio card migration - target and Credentials (#1502)
chore: 🤖 radio card migration - target and Credentials
2022-12-08 11:17:44 -08:00
Dharini Jeeva 28a43251ac migrate credential store radio card component (#1492)
chore: 🤖 cred store radio card migration
2022-12-07 13:52:49 -08:00
lisbet-alvarez 5474465463 refactor: 💡 acceptance tests in scopes folder (#1509)
✅ Closes: ICU-7126
2022-12-07 10:32:08 -08:00
Zhihe Li 8ae6506abf Icu 6896 upgrade ember data (#1511)
* chore: 🤖 Upgrade ember data to 3.28.12

✅ Closes: ICU-6896
2022-12-06 14:29:58 -05:00
Devon AndersonandRandall Morey 764f4703e0 chore: 🤖 brokered and injected credential associations (#1512)
* chore: 🤖 brokered and injected credential associations

Verified JSON credentials show up as a source that can be added to a
target as `brokered`, and not show up as a source that can be added to a
target as `injected`.

✅ Closes: ICU-6833, ICU-6834, ICU-6835, ICU-6836

* Update ui/admin/app/controllers/scopes/scope/targets/target/add-injected-application-credential-sources.js

Co-authored-by: Randall Morey <randall@randallmorey.com>

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-12-06 13:37:55 -05:00
Cameron Perera c62eb751e4 Icu 6680 UI code editor for secrets (#1499)
* feat: 🎸 initial secret editor

* feat: 🎸 Create Secret Editor for JSON Credentials

✅ Closes: ICU-6680

* style: 💄 Fix sass lint errors

* style: 💄 Appease sass-lint rule for using --size in stylesheet

* refactor: 💡 Set Icon size via component attribute

* refactor: 💡 remove computed decorators for Secret Editor

* refactor: 💡 update editor styles to using sizing variables

* refactor: 💡 update styles and add comments

* refactor: 💡 clean up styling for secret editor

* refactor: 💡 update class names to be more verbose

* chore: 🤖 move jsonlint import to rose index.js

* refactor: 💡 remove duplicate margin style for skeleton body

* refactor: 💡 add comments to SecretEditor component class

* refactor: 💡 large updates to secret json editor

* refactor: 💡 Move JSON Secret to form/field/ directory

* style: 💄 fix padding for Secret Editor line numbers

* chore: 🤖 disable property-sort-oder in .sasslintrc

* refactor: 💡 reorder app.scss styles

* test: 💍 Add integration tests for JSON Secret and Skeleton
2022-12-02 13:58:04 -06:00
Zhihe Li c3d9fd8fc5 Icu 6657 auth method model fragments refactor (#1507)
* refactor: 💡 Remove fragment usage for arrays in auth method
* chore: 🤖 Remove ember-data-model-fragments

✅ Closes: ICU-6657
2022-12-02 14:29:53 -05:00
Zhihe Li f8429b15e9 Chore/cleanup filter attribute (#1500)
* refactor: 💡 Rename attributes called filter

* refactor: 💡 Remove adapter handling of old attribute errors

* refactor: 💡 Check for undefined in serializer instead of falsy
2022-12-02 13:44:11 -05:00
lisbet-alvarez b1f14e5c62 refactor: 💡 acceptance tests in targets folder (#1505)
* refactor: 💡 acceptance tests in targets folder

✅ Closes: ICU-6974

* refactor: 💡 update a few test cases
2022-11-30 14:01:23 -08:00
Dharini Jeeva caeb6f9008 Host catalog infofield (#1508)
* chore: 🤖 use infofield in host catalog
2022-11-30 13:13:36 -08:00
Devon AndersonandRandall Morey 0015745d41 feat: 🎸 Custom information field (#1493)
* feat: 🎸 Custom information field

Create custom information component for views that need read-only
information listed.

✅ Closes: ICU-6957 ICU-6981

* refactor: 💡 fix setup for info-field component

Added conditional icon as a yield to `Hds::Form::TextInput::Field` to
avoid over complicating the css for `info-field` component.

✅ Closes: ICU-6957

* refactor `username_password` index.hbs

`@value` on `<InfoField>` was pointing to wrong variable.

* fix: 🐛 fixed lint

Lint errors

* fix: 🐛 linting errors fixed

linting errors fixed

* chore: 🤖 tweak info field styles and layout for icons

* refactor: 💡 switched `grid-area` in css to match design

Switched `grid-area`'s to match Design

* refactor: 💡 removed grid attribute from field wrapper

Removed display grid from `vertical` wrapper

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-11-30 14:38:12 -05:00
lisbet-alvarez fbc023da65 refactor: 💡 acceptance tests in create-test.js for users (#1476)
* refactor: 💡 acceptance tests in create-test.js for users

✅ Closes: ICU-6965

* refactor: 💡 use this.server.schema instead of this.server.db
2022-11-30 10:06:04 -08:00
lisbet-alvarez 6cc5f43b48 refactor: 💡 acceptance tests in update-test.js for user (#1475)
* refactor: 💡 acceptance tests in update-test.js for user

✅ Closes: ICU-6969

* refactor: 💡 use this.server.schema instead of this.server.db
2022-11-28 16:08:56 -08:00
lisbet-alvarez 2cef6ebe44 refactor: 💡 acceptance tests in delete-test.js for users (#1474)
✅ Closes: ICU-6895
2022-11-28 15:04:18 -08:00
lisbet-alvarezandCameron Perera e8a3650fbe refactor: 💡 adjust css selector for specific asserts (#1468)
* refactor: 💡 adjust css selector for specific asserts

✅ Closes: ICU-6889

* refactor: 💡 small update

* refactor: 💡 selectors for .doesNotExist()

* Update addons/core/tests/integration/helpers/relative-datetime-live-test.js

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-11-28 14:44:34 -08:00
Zhihe Li ff7a1fedea Icu 6794 refactor attributes using the newer is nested attribute annotation (#1481) 2022-11-23 14:40:07 -05:00
Zhihe Li ff6e2bb4cf fix: 🐛 Fix claims map dropdown not having a default value (#1497) 2022-11-23 12:50:46 -05:00
Dharini Jeeva cd8a627c46 chore: 🤖 quick setup layout (#1496) 2022-11-23 09:00:21 -08:00
Dharini Jeeva 2b3f9b3cf0 fix: 🐛 add state to oidc form (#1491) 2022-11-22 12:06:49 -08:00
Dharini Jeeva 7120a5c54e chore: 🤖 deprecate warning to rose radiocard (#1486)
* chore: 🤖 add deprecation warning message to rose radiocard component
2022-11-22 08:37:54 -08:00
Randall MoreyandZhihe Li f7c1523adb Refactor host set fragment arrays (#1464)
* refactor: 💡 change host_ids to a simple attribute

* refactor: 💡 manually manage host set array model attributes

* refactor: 💡 Fix host set IDs usage

* style: 💄 Fix comment and add braces for if statements

* refactor: 💡 Add back in empty array for normalizer

* refactor: 💡 Move attributes to generated model

* refactor: 💡 Update array actions when creating new host sets

* test: 💍 Add a few create tests for azure and aws host sets

* test: 💍 Add update tests for azure and aws host sets

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-11-21 19:07:46 -05:00
Devon AndersonandCameron Perera e3d44eb813 chore: 🤖 JSON credential data modeling (#1485)
* chore: 🤖 JSON credential data modeling

Added json type to credential model, created `json_object` attribute for
`json` type, updated credential serializer to handle `json_object`
attribute data being sent to backend and updated normalizer to handlle
secret untracked 'json_object'.

✅ Closes: ICU-6653, ICU-6684, ICU-6685, ICU-6802, ICU-6803

* Update en-us.yaml

fixed spelling

* Update addons/api/addon/models/credential.js

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>

* refactor: 💡 refactor credential serializer and .yaml

Refactored credential serializer to check for `json_object` existence
before serializing and changed help variable in `.yaml` file for
credentials.

* refactor: 💡 refactor for credential serializer

Refactor credential serializer removed redundant code,

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-11-21 16:28:10 -05:00
Carlos Alcaide Corvo 6b166401a1 chore: 🤖 Upgrade ember-browser-services (#1478)
Upgrade ember-browser-services
2022-11-18 10:52:48 -08:00
Dharini Jeeva 65efe58481 fix: 🐛 hds select field width (#1479) 2022-11-17 13:38:51 -08:00
Dharini Jeeva c9254b4463 Remove rose badge styles (#1473)
* chore: 🤖 remove rose badge stylesheets
2022-11-17 10:44:04 -08:00
Zhihe Li fa7b5bd00b fix: 🐛 Fix accounts not displaying correctly in auth methods (#1477) 2022-11-17 11:52:53 -05:00
lisbet-alvarez 232699cad0 refactor: 💡 acceptance tests in read-test.js for users (#1467)
* refactor: 💡 acceptance tests in read-test.js for users

✅ Closes: ICU-6892

* Update ui/admin/tests/acceptance/users/read-test.js
2022-11-16 12:10:38 -08:00
lisbet-alvarezandRandall Morey 37ad4b6a32 refactor: 💡 acceptance tests in list-test.js for users (#1466)
* refactor: 💡 acceptance tests in list-test.js for users

✅ Closes: ICU-6893

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-11-16 11:39:45 -08:00
Dharini Jeeva 42169b070c Remove rose badge (#1465)
chore: 🤖 delete rose badge component
2022-11-16 10:07:40 -08:00
dependabot[bot] 5e48fdaaf8 chore(deps): bump loader-utils from 1.4.1 to 1.4.2 (#1470)
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-16 08:35:43 -08:00
Devon AndersonandRandall Morey cf3acad084 feat: 🎸 Credential type selector refactor (#1452)
* feat: 🎸 Credential type selector refactor

When editing a credential or viewing the details screeen, the credential
type should be displayed as a readonly text field

✅ Closes: ICU-6839

* refactor: 💡 refactored disabled argument for credential type

BREAKING CHANGE: 🧨 ICU-6839

✅ Closes: ICU-6839

* refactor: 💡 Refactored credential-type-field

Refactored credential type card ui to look more like a message element
than a disabled input

✅ Closes: ICU-6839

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-11-15 19:57:39 -08:00
Dharini Jeeva b8cbbceff6 chore: 🤖 deprecation workflow (#1462)
* chore: 🤖 rebase main

* test: 💍 rebase

* test: 💍 rebase

* test: 💍 rebase

* test: 💍 rebase
2022-11-15 19:36:30 -08:00
Dharini Jeeva 58a47c8375 chore: 🤖 remove console log (#1463)
* chore: 🤖 remove console log
2022-11-15 10:41:43 -08:00
Randall Morey 9875899875 refactor: 💡 migrate set-password form to HDS text input (#1461)
* refactor: 💡 update scope form to use HDS input and textarea

* chore: 🤖 tweak "optional" label text color in dark mode

* fix: 🐛 add HDS field margins and fix form tests

* fix: 🐛 fix acceptance tests and add TextInput event handlers

* refactor: 💡 migrate change-password form to HDS inputs

* fix: 🐛 use input event and fix set-from-event to handle empty

* chore: 🤖 reverse order of isRequired and isOptional

* fix: 🐛 use @type as required by HDS

* chore: 🤖 fix linting

* refactor: 💡 migrate set-password form to HDS text input

✅ Closes: icu-6918
2022-11-15 10:14:05 -08:00
Randall Morey aae85c44d2 Migrate change-password form to HDS input fields. (#1460)
* refactor: 💡 update scope form to use HDS input and textarea

* chore: 🤖 tweak "optional" label text color in dark mode

* fix: 🐛 add HDS field margins and fix form tests

* fix: 🐛 fix acceptance tests and add TextInput event handlers

* refactor: 💡 migrate change-password form to HDS inputs

* fix: 🐛 use input event and fix set-from-event to handle empty

* chore: 🤖 reverse order of isRequired and isOptional

* fix: 🐛 use @type as required by HDS

* chore: 🤖 fix linting
2022-11-15 09:34:25 -08:00
Randall Morey b08d3affe4 refactor: 💡 update scope form to use HDS input and textarea (#1459)
* refactor: 💡 update scope form to use HDS input and textarea

* chore: 🤖 tweak "optional" label text color in dark mode

* fix: 🐛 add HDS field margins and fix form tests

* fix: 🐛 fix acceptance tests and add TextInput event handlers

* fix: 🐛 use input event and fix set-from-event to handle empty

* fix: 🐛 fix linting and add @type='text' on HDS text input

* fix: 🐛 fix HDS field margin overrides

* chore: 🤖 simplify selector
2022-11-15 08:53:10 -08:00
Randall Morey bdc36b1e59 fix: 🐛 fix broken relative datetime live render tests (#1469) 2022-11-15 07:53:01 -08:00
Dharini Jeeva e0f9b8723b Migrate rest of the badges in admin UI (#1454)
* chore: 🤖 migrate rest of the badges in admin ui
2022-11-14 17:14:33 -08:00
lisbet-alvarezandZhihe Li b3a02a3d6e refactor: 💡 update acceptance tests for host-catalogs (#1451)
* refactor: 💡 refactor update acceptance tests for host-catalogs

✅ Closes: ICU-6648

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-11-14 16:07:12 -08:00
Dharini Jeeva 9bb9edc36b Storybook badge updates (#1453)
* chore: 🤖 storybook updates for badge
2022-11-14 13:52:23 -08:00
lisbet-alvarez 0aa7a5f494 Icu 6647 acceptance host catalogs list (#1450)
* refactor: 💡 list acceptance tests for host catalogs

✅ Closes: ICU-6647

* refactor: 💡 adjust selector for asserts that use .doesNotExist

✅ Closes: ICU-6647
2022-11-14 13:24:09 -08:00
Cameron PereraandRandall Morey 84077b5d8a Icu 6800 api is secret data modeling (#1448)
* refactor: 💡 Add isSecret option for model attributes

Move secret attribute logic to application serializer that will remove
the key/value pair if the value is null or empty

✅ Closes: ICU-6800

* refactor: 💡 Add isSecret option to credential store token

* Update addons/api/addon/serializers/credential.js

Remove unneeded serialize method for credentials

Co-authored-by: Randall Morey <randall@randallmorey.com>

* refactor: 💡 add type check for serializing secret attributes

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-11-14 14:45:53 -06:00
lisbet-alvarez faec9aad73 refactor: 💡 delete acceptance tests for host catalogs (#1449)
✅ Closes: ICU-6649
2022-11-14 10:53:43 -08:00
Dharini Jeeva 399aeb1790 chore: 🤖 badge migrations in admin ui part 1 (#1439)
* chore: 🤖 badge migrations in admin ui part 1
2022-11-11 18:19:07 -08:00
Dharini Jeeva a1e35cdc99 chore: 🤖 badge migration in desktop (#1438)
* chore: 🤖 badge migration in desktop
2022-11-11 17:15:52 -08:00
Randall Morey 2709ce925f fix: 🐛 inlcude "addon" folder in rose style formatting command (#1458) 2022-11-11 15:24:14 -08:00
Dharini Jeeva ee8182e262 feat: 🎸 badge migration in sessions admin ui (#1437)
* chore: badge migration in sessions admin ui
2022-11-11 14:14:31 -08:00
Randall MoreyandDharini Jeeva 02b6afa5e7 refactor: migrate to HDS select form fields (#1447)
* chore: 🤖 install HDS and associated assets

* chore: 🤖 bump HDS version

* refactor: 💡 optimize hds/icon addon content build

* test: 💍 fix intermittent test failure

* refactor: 💡 replace auth method selects with HDS select

* refactor: 💡 update storybook and tests to reflect HDS selects

* style: 💄 fix style linting issue

* fix: 🐛 fix bad scss syntax

* fix: 🐛 fix scss syntax again

* refactor: 💡 remove references to rose/form/select

* chore: 🤖 experimental HDS dark mode

* refactor: 💡 add custom set helper to replace action helper

* chore: 🤖 remove HDS dark mode, to be implemented in another pr

* refactor: 💡 apply custom dark mode for HDS

* chore: 🤖 add tier 2 color tweaks for better dark mode contrast

* chore: 🤖 tweak HDS form borders in dark mode

* docs: ✏️ add set function comment

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-11-11 13:45:35 -08:00
Randall MoreyandDharini Jeeva 87b1fb1c5c refactor: 💡 apply custom dark mode for HDS (#1456)
* chore: 🤖 install HDS and associated assets

* chore: 🤖 bump HDS version

* refactor: 💡 optimize hds/icon addon content build

* test: 💍 fix intermittent test failure

* refactor: 💡 apply custom dark mode for HDS

* chore: 🤖 add tier 2 color tweaks for better dark mode contrast

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-11-11 11:31:46 -08:00
Randall MoreyandDharini Jeeva 9fa982d6d1 chore: 🤖 install HDS and associated assets (#1436)
* chore: 🤖 install HDS and associated assets

* chore: 🤖 bump HDS version

* refactor: 💡 optimize hds/icon addon content build

* test: 💍 fix intermittent test failure

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-11-10 20:52:12 -08:00
dependabot[bot] d7b7b014d4 chore(deps): bump socket.io-parser from 4.0.4 to 4.0.5 (#1446)
Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io-parser/compare/4.0.4...4.0.5)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-10 16:53:33 -08:00
Carlos Alcaide Corvo 3810c281d3 chore: 🤖 Forgot addon upgrade to Ember 3.x (#1430)
Forgot addon upgrade to Ember 3.x
2022-11-10 11:32:08 -08:00
Devon Anderson fce82c6d9f chore: 🤖 Added json-credential feature flag (#1440)
Added JSON credential flag to help manage access to ui changess for
credential-store/credentials view and actions.

✅ Closes: ICU-6798
2022-11-09 16:36:04 -05:00
Cameron Perera 5e7e11fc6b feat: 🎸 Add links to Host Sets assigned to targets (#1434)
* feat: 🎸 Add links to Host Sets assigned to targets

The target host sources view can now link to the host sets associated
with that target

✅ Closes: ICU-6525

* test: 💍 Improve test assert for host sources links
2022-11-09 14:22:28 -06:00
lisbet-alvarez dfe3aee450 refactor: 💡 one acceptance test in scopes-test.js (#1406)
✅ Closes: ICU-6624
2022-11-09 11:02:57 -08:00
lisbet-alvarez 0b8f1aea17 refactor: 💡 targets read acceptance tests (#1405)
✅ Closes: ICU-6547
2022-11-09 10:13:17 -08:00
lisbet-alvarez 247be9b467 refactor: 💡 acceptance tests for sessions for admin ui (#1404)
✅ Closes: ICU-6623
2022-11-09 09:24:36 -08:00
Zhihe Li a9f6821a3a fix: 🐛 Fix styling for header icon CSS (#1431) 2022-11-08 15:25:53 -05:00
dependabot[bot]andRandall Morey 6b27d67122 chore(deps): bump loader-utils from 1.4.0 to 1.4.1 (#1428)
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.1/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-11-08 10:48:36 -08:00
Randall Morey 561ed0b2e1 Refactor route action helper - icu-6773 (#1427)
* refactor: 💡 explicitly inject the store service - icu-6770

✅ Closes: icu-6770

* refactor: 💡 upgrade to ember-intl 6.0.1

includes locale initialization and smoke tests

* refactor: 💡 migrate admin and desktop to ember-intl 6.x

✅ Closes: icu-6771

* chore: 🤖 exclude cldr-core@38.1.0 from license checking

this license was manually checked

* fix: 🐛 fix text naming and linting

* refactor: 💡 pull route-action local and update for ember 4

✅ Closes: icu-6773
2022-11-08 09:14:04 -08:00
Randall Morey 0c819d6d12 Chore upgrade ember intl (#1425)
* refactor: 💡 explicitly inject the store service - icu-6770

✅ Closes: icu-6770

* refactor: 💡 upgrade to ember-intl 6.0.1

includes locale initialization and smoke tests

* refactor: 💡 migrate admin and desktop to ember-intl 6.x

✅ Closes: icu-6771

* chore: 🤖 exclude cldr-core@38.1.0 from license checking

this license was manually checked

* fix: 🐛 fix text naming and linting

* chore: 🤖 update to ember-intl beta
2022-11-07 16:18:02 -08:00
Randall MoreyandDharini Jeeva c107fa872c refactor: 💡 explicitly inject the store service - icu-6770 (#1424)
✅ Closes: icu-6770

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-11-07 15:17:23 -08:00
Randall MoreyandDharini Jeeva e538200720 chore: 🤖 improve credentials/new titling - icu-6724 (#1423)
✅ Closes: icu-6724

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-11-07 14:59:15 -08:00
Randall Morey e13aaaa4d6 chore: 🤖 improve credential-libraries/new titling - icu-6724 (#1422)
✅ Closes: icu-6724
2022-11-07 14:37:10 -08:00
Randall Morey b4dbefb79b chore: 🤖 improve credential-stores/new titling - icu-6723 (#1421)
✅ Closes: icu-6723
2022-11-07 13:27:43 -08:00
Randall Morey a7694bdd7f chore: 🤖 improve hosts/new titling - icu-6722 (#1419)
✅ Closes: icu-6722
2022-11-07 13:05:40 -08:00
Randall Morey a24f5b4107 chore: 🤖 improve host-sets/new titling - icu-6721 (#1418)
✅ Closes: icu-6721
2022-11-07 12:46:32 -08:00
Zhihe Li 2ec2c2934c Icu 6705 add stylelint to rose (#1410)
* chore: 🤖 Add stylelint packages

* style: 💄 Initial stylelint fixes

* style: 💄 Use suggested module

* style: 💄 Fix comment whitespace and remove unneeded ones

* style: 💄 Fix few more styles

* style: 💄 Ignore a few styles and fix the rest

* style: 💄 Fix scss/dollar-variable-pattern rule

* chore: 🤖 Remove stylelint order package

* style: 💄 Fix custom-property-pattern rule

* chore: 🤖 Add stylelintrc file to eslintrc

* refactor: 💡 Remove duplicated css selector
2022-11-07 15:23:06 -05:00
Carlos Alcaide Corvo 4481ec7f2a fix: 🐛 Fix missing yarn lock (#1426)
Fix missing yarn lock update
2022-11-07 11:53:02 -08:00
Randall Morey 2360c4124c chore: 🤖 improve host-catalogs/new titling - icu-6720 (#1417)
✅ Closes: icu-6720
2022-11-06 18:12:38 -08:00
Randall Morey ee3c550809 chore: 🤖 improve targets/new titling - icu-6719 (#1416)
✅ Closes: icu-6719
2022-11-06 17:44:06 -08:00
Randall Morey 063c047792 chore: 🤖 improve accounts/new titling - icu-6718 (#1415)
✅ Closes: icu-6718
2022-11-06 17:23:26 -08:00
Randall Morey 3c1a46c9ef chore: 🤖 improve auth-methods/new titling - icu-6717 (#1413)
✅ Closes: icu-6717
2022-11-04 20:08:25 -07:00
Randall Morey 579ebbe9fe chore: 🤖 improve roles/new title - icu-6716 (#1412)
✅ Closes: icu-6716
2022-11-04 19:27:11 -07:00
Randall Morey 5947c6e08a chore: improve titling for new groups - icu-6715 (#1411) 2022-11-04 19:09:07 -07:00
Carlos Alcaide Corvo 40346f2f09 Chore update ember to latest 3.x (#1409)
Update ember to latest 3.x patch
2022-11-04 14:15:31 -07:00
Randall Morey 5e3f693113 chore: 🤖 improve users/new title - icu-6713 (#1408)
✅ Closes: icu-6713
2022-11-03 18:52:43 -07:00
Randall Morey d32a854a94 chore: 🤖 improve scopes/new titling - icu-6714 (#1407)
* chore: 🤖 improve scopes/new titling - icu-6714

✅ Closes: icu-6714

* chore: 🤖 improve new scope link text
2022-11-03 18:37:42 -07:00
Zhihe Li e8af948dc1 feat: 🎸 Auto-populate hcp cluster id (#1389)
✅ Closes: ICU-6200
2022-11-02 14:30:10 -04:00
lisbet-alvarez a91cbaf231 refactor: 💡 host set read acceptance tests (#1402)
* refactor: 💡 host set read acceptance tests

✅ Closes: ICU-6546
2022-11-02 11:11:02 -07:00
lisbet-alvarezandZhihe Li c18fb48637 refactor: 💡 hosts read acceptance tests (#1401)
* refactor: 💡 hosts read acceptance tests

✅ Closes: ICU-6545

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-11-02 09:49:21 -07:00
4b231f64f3 refactor: 💡 host-catalogs read acceptance test (#1400)
* refactor: 💡 host-catalogs read acceptance test

✅ Closes: ICU-6544

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-11-02 09:27:01 -07:00
Zhihe Li 1111cbd6a2 chore: 🤖 Update electron to latest version (#1399) 2022-11-02 11:51:26 -04:00
Devon AndersonandRandall Morey fa9f5476b5 feat: 🎸 Re-enabling footer for Boundary Admin UI (#1390)
* feat: 🎸 Re-enabling footer for Boundary `admin-ui`

Re-enable global footer and fix styling

✅ Closes: ICU-6454

* refactor: 💡 added media-query code

Added media-query code for footer to expand on smaller screens.

* refactor: 💡 refactor footer to exist in sidebar-layout

Improved overall layout of content with footer by moving it to the
sidebar-layout

* refactor: 💡 continuous refactor of admin ui footer

Refactored sidebar layout to include grid footer with layout,

* refactor: 💡 collapse sidebar when absent

* refactor: improve css grid column collapse approach

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-11-01 19:17:19 -04:00
Zhihe Li cc42de52a2 fix: 🐛 Fix electron appearance for desktop with mirage locally (#1394) 2022-11-01 18:50:40 -04:00
lisbet-alvarezandCameron Perera 0598be5df9 refactor: 💡 existing read credential store acceptance tests (#1396)
* refactor: 💡 existing credential store acceptance tests

✅ Closes: ICU-5517

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-10-31 13:07:58 -07:00
Randall Morey 0625d3b8a1 Refactor scss (#1397)
* refactor: 💡 upgrade sass and ember-cli-sass

* refactor: 💡 rose becomes dev dep of core

* refactor: 💡 migrate rose styles to rose/app/styles

* chore: 🤖 disable sass linting until stylelint can be installed
2022-10-27 15:32:44 -07:00
Carlos Alcaide Corvo 7d46215aa4 refactor: 💡 Delete ember-cli-template-lint (#1393)
Delete ember-cli-template-lint
2022-10-27 12:13:32 +02:00
bfc212440d chore: 🤖 auto-dismiss auth error notifications (#1384)
* chore: 🤖 auto-dismiss auth error notifications

* chore: 🤖 apply login error auto-dismiss to desktop

* Update addons/core/addon/decorators/notify.js

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>

* chore: 🤖 explain sticky defaulting

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2022-10-25 16:09:33 -07:00
Zhihe Li 3c05337832 Icu 6424 deprecate @storybook/addon knobs (#1386)
✅ Closes: ICU-6424
2022-10-25 11:41:20 -04:00
Carlos Alcaide Corvo 744a732f05 refactor: 💡 Deprecate renderTemplate in header-nav (#1385)
Deprecate the usage of renderTemplate in the application header-nav
2022-10-25 11:13:19 +02:00
Carlos Alcaide Corvo d5ad161dcf Refactor deprecate rendertemplate (#1382)
Refactor deprecate rendertemplate for host-catalogs
2022-10-19 13:18:31 +02:00
Carlos Alcaide Corvo f7a778b9af fix: 🐛 Forgotten session setup method in core (#1380)
Forgotten ember auth session setup method
2022-10-19 12:52:45 +02:00
Randall Morey 977469f30c Revert "feat: 🎸 remove animation when user specifies reduced motion (#1381)" (#1383)
This reverts commit 6cb587eccf.
2022-10-18 13:15:37 -07:00
lisbet-alvarez 6cb587eccf feat: 🎸 remove animation when user specifies reduced motion (#1381)
✅ Closes: ICU-4330
2022-10-17 11:32:14 -07:00
Carlos Alcaide Corvo 18325e5126 fix: 🐛 Session setup method deprecation message (#1374)
* fix: 🐛 Session setup method deprecation message
2022-10-17 14:57:30 +02:00
Dharini Jeeva 57dd1ac4d3 fix: 🐛 csp fix (#1369)
* fix: 🐛 csp fix
2022-10-14 10:45:37 -07:00
Zhihe Li 8571951548 * feat: 🎸 Add handlebars registration for syntax highlighting (#1378)
* feat: 🎸 Add handlebars registration for syntax highlighting

* style: 💄 Use handlebars format

* style: 💄 Reformat mdx files

* style: 💄 Fix broken formatting from merge
2022-10-14 11:25:27 -04:00
Zhihe Li 4fd9e41cc6 fix: 🐛 Disable add worker tag if there's no key (#1379) 2022-10-14 10:52:21 -04:00
Carlos Alcaide Corvo e02177f5b6 Chore rose storybook deprecations (#1371)
* Deprecate correct blobs in main.js, postcss usage, hierarchy separators in styleguide and scoped blocks import
2022-10-14 16:18:47 +02:00
Carlos Alcaide Corvo be1b16361d chore: 🤖 Upgrade ember-autofocus-modifier (#1377)
Upgrade ember-autofocus-modifier
2022-10-14 12:26:35 +02:00
Carlos Alcaide Corvo c9dd39ff3e Chore upgrate ember qunit (#1376)
* Upgrade ember-qunit and ember-exam
2022-10-14 12:07:26 +02:00
Dharini Jeeva 0ee997716f Icu 5602 clean up form actions (#1358)
* chore: 🤖 remove unused disabled attr
2022-10-13 12:41:15 -07:00
Carlos Alcaide Corvo 15e20c008f refactor: 💡 Clean old mirage code (#1373)
Clean from addon old mirage code that it is not used
2022-10-13 09:31:22 +02:00
Carlos Alcaide Corvo 5386aaad7f Chore update ember modifier (#1370)
* chore: 🤖 Update ember-modifier
2022-10-13 09:02:06 +02:00
Zhihe Li 1f1b064ee9 fix: 🐛 Fix mac intel cli download (#1375) 2022-10-12 18:52:36 -04:00
Zhihe Li 4dda7ee3ba refactor: 💡 Update how we use ENABLE_MIRAGE to be consistent (#1362)
✅ Closes: ICU-6038
2022-10-12 11:44:10 -04:00
hashicorp-copywrite[bot]andCalebAlbers afe1e3ba3e Add or update MPL 2.0 license (#1372)
Co-authored-by: CalebAlbers <CalebAlbers@users.noreply.github.com>
2022-10-12 10:39:10 +02:00
Dharini Jeeva 32c9becea7 chore: 🤖 clean form errors (#1363) 2022-10-07 09:31:51 -07:00
mcollao-hc 7661a77824 [ICU-6448] Update CSP to add frame-ancestors: self (#1367)
* update csp

* add csp for ui
2022-10-06 14:23:14 -05:00
Zhihe Li b55c50cf64 Chore/update linter (#1355)
* chore: 🤖 Update editor config settings

* chore: 🤖 Add back ember-template-lint-plugin-prettier

* style: 💄 Format admin

* style: 💄 Format desktop

* style: 💄 Format rose

* style: 💄 Format core

* style: 💄 Format api
2022-10-06 11:41:12 -04:00
Cameron PereraandDharini Jeeva ebb172c46a chore: 🤖 update mout resolution to 1.2.4 for security issue (#1341)
Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-10-06 10:08:34 -05:00
Carlos Alcaide Corvo 67015346c6 Chore update ember cli dependency checker addon (#1365)
* Update ember-cli-dependency-checker.
2022-10-06 09:28:09 +02:00
Carlos Alcaide Corvo 4d8d42e80e docs: ✏️ Add debug desktop client documentation (#1359)
Add how to debug desktop client documentation.
2022-10-06 09:11:04 +02:00
Zhihe Li f46168f8de chore: 🤖 Allow retrieval of arm64 cli (#1356) 2022-10-05 15:07:04 -04:00
Cameron Perera b6b93c9cd8 style: 💄 Fix 2 translation typos (#1357) 2022-10-05 10:23:18 +02:00
Carlos Alcaide Corvo 4d6a878325 fix: 🐛 Fix SCSS lint issues (#1364)
Fix SCSS lint issues
2022-10-05 08:18:26 +02:00
1882 changed files with 31153 additions and 14469 deletions

No files matched your search

+3
View File
@@ -1,3 +1,6 @@
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
contact_links:
- name: Ask a question
url: https://discuss.hashicorp.com/c/boundary
+3
View File
@@ -1,3 +1,6 @@
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
addons:
- addons/**/*
+20 -23
View File
@@ -9,25 +9,25 @@ jobs:
name: Install dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
node-modules-
- uses: actions/setup-node@v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
node-version: 16
- run: yarn install
build-admin-ui-oss:
name: Build Admin UI OSS
needs: [dependencies]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
@@ -35,18 +35,17 @@ jobs:
restore-keys: |
node-modules-
- name: Build
uses: actions/setup-node@v3
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
if: steps.node-modules-cache.outputs.cache-hit != 'true'
node-version: 16
- run: yarn run build:ui:admin:oss
- name: Upload artifact admin-ui
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: admin-ui
path: ./ui/admin/dist/
- name: Upload artifact OSS admin UI
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: admin-ui-oss
path: ./ui/admin/dist/
@@ -55,8 +54,8 @@ jobs:
needs: [dependencies]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
@@ -64,13 +63,12 @@ jobs:
restore-keys: |
node-modules-
- name: Build
uses: actions/setup-node@v3
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
if: steps.node-modules-cache.outputs.cache-hit != 'true'
node-version: 16
- run: yarn run build:ui:admin:enterprise
- name: Upload artifact enterprise admin UI
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: admin-ui-ent
path: ./ui/admin/dist/
@@ -79,8 +77,8 @@ jobs:
needs: [dependencies]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
@@ -88,13 +86,12 @@ jobs:
restore-keys: |
node-modules-
- name: Build
uses: actions/setup-node@v3
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
if: steps.node-modules-cache.outputs.cache-hit != 'true'
node-version: 16
- run: yarn run build:ui:admin:hcp
- name: Upload artifact HCP admin UI
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: admin-ui-hcp
path: ./ui/admin/dist/
+4 -4
View File
@@ -30,7 +30,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
@@ -43,7 +43,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@9a866ed4524fc3422c3af1e446dab8efa3503411 # codeql-bundle-20230418
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -54,7 +54,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@9a866ed4524fc3422c3af1e446dab8efa3503411 # codeql-bundle-20230418
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -68,4 +68,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@9a866ed4524fc3422c3af1e446dab8efa3503411 # codeql-bundle-20230418
+6 -6
View File
@@ -30,7 +30,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.JIRA_SYNC_GITHUB_TOKEN }}
- name: Login
uses: atlassian/gajira-login@v2.0.0
uses: atlassian/gajira-login@45fd029b9f1d6d8926c6f04175aa80c0e42c9026 # v3.0.1
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
@@ -48,7 +48,7 @@ jobs:
- name: Create ticket
if: github.event.action == 'opened' && !steps.boundary-team-role.outputs.role
uses: tomhjp/gh-action-jira-create@v0.1.0
uses: tomhjp/gh-action-jira-create@3ed1789cad3521292e591a7cfa703215ec1348bf # v0.2.1
with:
project: ICU
issuetype: "GH Issue"
@@ -61,28 +61,28 @@ jobs:
- name: Search
if: github.event.action != 'opened'
id: search
uses: tomhjp/gh-action-jira-search@v0.2.1
uses: tomhjp/gh-action-jira-search@04700b457f317c3e341ce90da5a3ff4ce058f2fa # v0.2.2
with:
# cf[10089] is Issue Link custom field
jql: 'issuetype = "GH Issue" and cf[10089]="${{ github.event.issue.html_url || github.event.pull_request.html_url }}"'
- name: Sync comment
if: github.event.action == 'created' && steps.search.outputs.issue
uses: atlassian/gajira-comment@v2.0.2
uses: atlassian/gajira-comment@v2.0.2 # TSCCR: no entry for repository "atlassian/gajira-comment"
with:
issue: ${{ steps.search.outputs.issue }}
comment: "${{ github.actor }} ${{ github.event.review.state || 'commented' }}:\n\n${{ github.event.comment.body || github.event.review.body }}\n\n${{ github.event.comment.html_url || github.event.review.html_url }}"
- name: Close ticket
if: (github.event.action == 'closed' || github.event.action == 'deleted') && steps.search.outputs.issue
uses: atlassian/gajira-transition@v2.0.1
uses: atlassian/gajira-transition@38fc9cd61b03d6a53dd35fcccda172fe04b36de3 # v3.0.1
with:
issue: ${{ steps.search.outputs.issue }}
transition: Done
- name: Reopen ticket
if: github.event.action == 'reopened' && steps.search.outputs.issue
uses: atlassian/gajira-transition@v2.0.1
uses: atlassian/gajira-transition@38fc9cd61b03d6a53dd35fcccda172fe04b36de3 # v3.0.1
with:
issue: ${{ steps.search.outputs.issue }}
transition: "To Do"
+1 -1
View File
@@ -6,6 +6,6 @@ jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@main
- uses: actions/labeler@ba790c862c380240c6d5e7427be5ace9a05c754b # v4.0.3
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
+16 -19
View File
@@ -6,17 +6,17 @@ jobs:
name: Install dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
node-modules-
- uses: actions/setup-node@v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
node-version: 16
- run: yarn install
compliance:
@@ -24,18 +24,17 @@ jobs:
needs: [dependencies]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
node-modules-
- uses: actions/setup-node@v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
if: steps.node-modules-cache.outputs.cache-hit != 'true'
node-version: 16
- run: yarn run compliance:licenses
lint:
@@ -44,18 +43,17 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
node-modules-
- uses: actions/setup-node@v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
if: steps.node-modules-cache.outputs.cache-hit != 'true'
node-version: 16
- run: yarn lint
test:
@@ -64,14 +62,13 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
id: node-modules-cache
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('**/yarn.lock') }}
- uses: actions/setup-node@v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
if: steps.node-modules-cache.outputs.cache-hit != 'true'
node-version: 16
- run: yarn test
@@ -0,0 +1,25 @@
name: Trigger OSS to Enterprise Merge
on:
pull_request_target:
types:
- closed
branches:
- main
jobs:
trigger-oss-merge:
# Run this only on merge events in OSS repo
if: ${{ github.event.pull_request.merged && github.repository == 'hashicorp/boundary-ui' }}
runs-on: ubuntu-latest
steps:
- name: Trigger Merge
env:
GIT_REF: ${{ github.ref_name }}
GIT_SHA: ${{ github.sha }}
GH_PAT: ${{ secrets.ELEVATED_GITHUB_TOKEN }}
GIT_ACTOR: ${{ github.actor }}
run: |
curl -H "Authorization: token $GH_PAT" \
-H 'Accept: application/json' \
-d "{\"event_type\": \"oss-merge\", \"client_payload\": {\"git-ref\": \"${GIT_REF}\", \"git-sha\": \"${GIT_SHA}\", \"git-actor\": \"${GIT_ACTOR}\" }}" \
"https://api.github.com/repos/hashicorp/boundary-ui-enterprise/dispatches"
+9 -7
View File
@@ -1,6 +1,5 @@
name: "Trigger Test Boundary UI release"
on:
workflow_dispatch:
inputs:
@@ -9,15 +8,18 @@ on:
required: true
jobs:
trigger-circleci-release:
trigger-gha-release:
runs-on: ubuntu-latest
steps:
- name: Trigger Release job
- name: Release description
if: github.event_name == 'workflow_dispatch'
run: |
echo "Triggering Test release using BRANCH and TEST_TAG ${{ github.event.inputs.branch }}"
- name: Trigger Release workflow in boundary-ui-releases
run: |
export GITHUB_TOKEN="${{ secrets.ELEVATED_GITHUB_TOKEN }}"
gh workflow run release.yml \
--repo hashicorp/boundary-ui-releases \
--ref main \
-f TAG="${{ github.event.inputs.branch }}"
curl -u ${{ secrets.CIRCLE_TOKEN }}: -X POST --header "Content-Type: application/json" \
-d '{ "branch": "main", "parameters": {"TAG": "'${{ github.event.inputs.branch }}'" }}' \
https://circleci.com/api/v2/project/github/hashicorp/boundary-ui-releases/pipeline
+10 -7
View File
@@ -6,14 +6,17 @@ on:
- '*'
jobs:
trigger-circleci-release:
trigger-gha-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Trigger Release job
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- name: Release description
run: |
echo "Triggering release with a TAG ${GITHUB_REF#refs/tags/}"
curl -u ${{ secrets.CIRCLE_TOKEN }}: -X POST --header "Content-Type: application/json" \
-d '{ "branch": "main", "parameters": {"TAG": "'${GITHUB_REF#refs/tags/}'" }}' \
https://circleci.com/api/v2/project/github/hashicorp/boundary-ui-releases/pipeline
- name: Trigger Release workflow in boundary-ui-releases
run: |
export GITHUB_TOKEN="${{ secrets.ELEVATED_GITHUB_TOKEN }}"
gh workflow run release.yml \
--repo hashicorp/boundary-ui-releases \
--ref main \
-f TAG="${GITHUB_REF#refs/tags/}"
-1
View File
@@ -3,4 +3,3 @@
yarn compliance:licenses
npx lint-staged
yarn test
+3
View File
@@ -1,3 +1,6 @@
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
url_license = "https://github.com/hashicorp/boundary-ui/blob/main/LICENSE"
url_project_website = "https://learn.hashicorp.com/tutorials/boundary/getting-started-desktop-app"
url_source_repository = "https://github.com/hashicorp/boundary-ui"
+2
View File
@@ -1,3 +1,5 @@
Copyright (c) 2020 HashiCorp, Inc.
Mozilla Public License, version 2.0
1. Definitions
+3
View File
@@ -14,3 +14,6 @@ indent_size = 2
[*.{diff,md}]
trim_trailing_whitespace = false
[*.hbs]
insert_final_newline = false
+7 -1
View File
@@ -5,5 +5,11 @@
Setting `disableAnalytics` to true will prevent any data from being sent.
*/
"disableAnalytics": false
"disableAnalytics": false,
/**
Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript
rather than JavaScript by default, when a TypeScript version of a given blueprint is available.
*/
"isTypeScriptProject": false
}
+8
View File
@@ -13,5 +13,13 @@
# misc
/coverage/
!.*
.*/
.eslintcache
# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/npm-shrinkwrap.json.ember-try
/package.json.ember-try
/package-lock.json.ember-try
/yarn.lock.ember-try
+14 -15
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
'use strict';
module.exports = {
@@ -29,21 +34,15 @@ module.exports = {
// node files
{
files: [
'.eslintrc.js',
'.prettierrc.js',
'.template-lintrc.js',
'ember-cli-build.js',
'index.js',
'testem.js',
'blueprints/*/index.js',
'config/**/*.js',
'tests/dummy/config/**/*.js',
],
excludedFiles: [
'addon/**',
'addon-test-support/**',
'app/**',
'tests/dummy/app/**',
'./.eslintrc.js',
'./.prettierrc.js',
'./.template-lintrc.js',
'./ember-cli-build.js',
'./index.js',
'./testem.js',
'./blueprints/*/index.js',
'./config/**/*.js',
'./tests/dummy/config/**/*.js',
],
parserOptions: {
sourceType: 'script',
+13
View File
@@ -14,14 +14,27 @@
/.eslintignore
/.eslintrc.js
/.git/
/.github/
/.gitignore
/.prettierignore
/.prettierrc.js
/.template-lintrc.js
/.travis.yml
/.watchmanconfig
/bower.json
/config/ember-try.js
/CONTRIBUTING.md
/ember-cli-build.js
/testem.js
/tests/
/yarn-error.log
/yarn.lock
.gitkeep
# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/npm-shrinkwrap.json.ember-try
/package.json.ember-try
/package-lock.json.ember-try
/yarn.lock.ember-try
+9
View File
@@ -14,3 +14,12 @@
/coverage/
!.*
.eslintcache
.lint-todo/
# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/npm-shrinkwrap.json.ember-try
/package.json.ember-try
/package-lock.json.ember-try
/yarn.lock.ember-try
-4
View File
@@ -1,4 +0,0 @@
{
"singleQuote": true,
"printWidth": 80
}
+4 -1
View File
@@ -1,4 +1,7 @@
'use strict';
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
module.exports = {
singleQuote: true,
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
'use strict';
module.exports = {
+29
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
@@ -6,6 +11,30 @@ import ModelAbility from './model';
export default class AccountAbility extends ModelAbility {
// =permissions
/**
* Only "known" account types may be read.
* @type {boolean}
*/
get canRead() {
return !this.model.isUnknown && this.hasAuthorizedAction('read');
}
/**
* Only "known" account types may be updated.
* @type {boolean}
*/
get canUpdate() {
return !this.model.isUnknown && this.hasAuthorizedAction('update');
}
/**
* Only "known" account types may be deleted.
* @type {boolean}
*/
get canDelete() {
return !this.model.isUnknown && this.hasAuthorizedAction('delete');
}
/**
* @type {boolean}
*/
+34
View File
@@ -0,0 +1,34 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for auth method.
*/
export default class AuthMethodAbility extends ModelAbility {
// =permissions
/**
* Only "known" auth method types may be read.
* @type {boolean}
*/
get canRead() {
return !this.model.isUnknown && this.hasAuthorizedAction('read');
}
/**
* Only "known" auth method types may be updated.
*/
get canUpdate() {
return !this.model.isUnknown && this.hasAuthorizedAction('update');
}
/**
* Only "known" auth method types may be deleted.
*/
get canDelete() {
return !this.model.isUnknown && this.hasAuthorizedAction('delete');
}
}
@@ -1,12 +1,17 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for credential.
*/
export default class CredentialLibaryAbility extends ModelAbility {
export default class CredentialLibraryAbility extends ModelAbility {
// =permissions
/**
* Only "known" credential libary types may be read.
* Only "known" credential library types may be read.
* @type {boolean}
*/
get canRead() {
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
import { inject as service } from '@ember/service';
/**
+7 -2
View File
@@ -1,4 +1,9 @@
import ModelAbility from "./model";
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for credential.
*/
@@ -12,4 +17,4 @@ export default class CredentialAbility extends ModelAbility {
get canRead() {
return !this.model.isUnknown && this.hasAuthorizedAction('read');
}
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
+13 -1
View File
@@ -1,9 +1,14 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for host sets.
*/
export default class UserAbility extends ModelAbility {
export default class HostSetAbility extends ModelAbility {
// =permissions
/**
@@ -19,4 +24,11 @@ export default class UserAbility extends ModelAbility {
get canRemoveHosts() {
return this.hasAuthorizedAction('remove-hosts');
}
/**
* @type {boolean}
*/
get canRead() {
return !this.model.isUnknown && this.hasAuthorizedAction('read');
}
}
@@ -0,0 +1,13 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for managed groups.
*/
export default class ManagedGroupAbility extends ModelAbility {
// no op
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import { Ability } from 'ember-can';
/**
+32
View File
@@ -1,9 +1,23 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
import { inject as service } from '@ember/service';
class InvalidRolePrincipalTypeError extends Error {
name = 'InvalidRolePrincipalTypeError';
}
/**
* Provides abilities for roles.
*/
export default class RoleAbility extends ModelAbility {
// =services
@service can;
// =permissions
/**
@@ -26,4 +40,22 @@ export default class RoleAbility extends ModelAbility {
get canRemovePrincipals() {
return this.hasAuthorizedAction('remove-principals');
}
/**
* Returns the ability check for a principal model instance.
* Valid role principal models are: User, Group, and ManagedGroup.
* Throws an error if the principal type is invalid.
* @type {boolean}
* @throws {InvalidRolePrincipalTypeError}
*/
get canReadPrincipal() {
const type = this.model.constructor.modelName;
const typeIsValid =
type === 'user' || type === 'group' || type === 'managed-group';
if (!typeIsValid)
throw new InvalidRolePrincipalTypeError(
`Expected a role principal of type 'user', 'group', or 'managed-group'. Got '${type}'.`
);
return this.can.can(`read ${type}`, this.model);
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
+21
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
@@ -19,4 +24,20 @@ export default class UserAbility extends ModelAbility {
get canRemoveAccounts() {
return this.hasAuthorizedAction('remove-accounts');
}
/**
* @type {boolean}
*/
get canAddAccount() {
const { account, canAddAccounts } = this;
return canAddAccounts && !account.isUnknown;
}
/**
* @type {boolean}
*/
get canRemoveAccount() {
const { account, canRemoveAccounts } = this;
return canRemoveAccounts && !account.isUnknown;
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
+16 -30
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import RESTAdapter from '@ember-data/adapter/rest';
import { serializeIntoHash } from '@ember-data/adapter/-private';
/* eslint-disable-next-line ember/no-mixins */
@@ -263,36 +268,17 @@ export default class ApplicationAdapter extends RESTAdapter.extend(
source: { pointer: '/data' },
};
// Normalize field-specific errors, if any.
const errors = fieldErrors.flatMap((error) => {
const newValue = [
{
detail: error.description,
// Ember Data cannot handle errors on nested attributes, so these are
// flattened (e.g. `attributes.foobar` becomes `attributes_foobar`).
// To capture these errors, add read-only fields on the model
// corresponding to the underscored field name.
source: {
pointer: `/data/attributes/${error.name.replace('.', '_')}`,
},
},
];
if (error.name.includes('attributes.')) {
newValue.push({
detail: error.description,
// Going forward, nested attributes will be hoisted. Thus "attributes."
// must be stripped from the error name key. Until all models are
// transitioned away from model fragments, however, both this and the
// prior error key mappings are necessary.
source: {
pointer: `/data/attributes/${error.name.replace(
'attributes.',
''
)}`,
},
});
}
return newValue;
});
const errors = fieldErrors.map((error) => ({
detail: error.description,
// Going forward, nested attributes will be hoisted. Thus "attributes."
// must be stripped from the error name key. Until all models are
// transitioned away from model fragments, however, both this and the
// prior error key mappings are necessary.
source: {
pointer: `/data/attributes/${error.name.replace('attributes.', '')}`,
},
}));
// Return a list of JSON API errors rooted under the `errors` key.
return {
errors: [baseError, ...errors],
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationAdapter from './application';
export default class HostCatalogAdapter extends ApplicationAdapter {
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -49,4 +54,56 @@ export default class GeneratedAuthMethodModel extends BaseModel {
description: 'Current version number of this resource.',
})
version;
@attr('string', { readOnly: true, isNestedAttribute: true }) state;
@attr('string', { isNestedAttribute: true }) issuer;
@attr('string', { isNestedAttribute: true }) client_id;
@attr('string', { isNestedAttribute: true, isSecret: true }) client_secret;
@attr('string', { readOnly: true, isNestedAttribute: true })
client_secret_hmac;
@attr('number', { isNestedAttribute: true }) max_age;
@attr('string', { isNestedAttribute: true }) api_url_prefix;
@attr('string', { readOnly: true, isNestedAttribute: true }) callback_url;
@attr('boolean', { isNestedAttribute: true })
disable_discovered_config_validation;
@attr('boolean', { isNestedAttribute: true }) dry_run;
@attr('string-array', {
emptyArrayIfMissing: true,
isNestedAttribute: true,
})
claims_scopes;
@attr('string-array', {
emptyArrayIfMissing: true,
isNestedAttribute: true,
})
signing_algorithms;
@attr('string-array', {
emptyArrayIfMissing: true,
isNestedAttribute: true,
})
allowed_audiences;
@attr('string-array', {
emptyArrayIfMissing: true,
isNestedAttribute: true,
})
idp_ca_certs;
@attr('account-claim-map-array', {
emptyArrayIfMissing: true,
isNestedAttribute: true,
})
account_claim_maps;
}
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
/**
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -48,6 +53,7 @@ export default class GeneratedCredentialLibraryModel extends BaseModel {
//= attributes (vault)
@attr('string', {
for: 'vault-generic',
isNestedAttribute: true,
description:
'The HTTP method the library uses when requesting credentials from Vault.',
@@ -56,6 +62,7 @@ export default class GeneratedCredentialLibraryModel extends BaseModel {
http_method;
@attr('string', {
for: 'vault-generic',
isNestedAttribute: true,
description:
'The body of the HTTP request the library sends to Vault when requesting credentials. Only valid if `http_method` is set to `POST`.',
@@ -67,4 +74,57 @@ export default class GeneratedCredentialLibraryModel extends BaseModel {
description: 'The path in Vault to request credentials from.',
})
path;
@attr('string', {
for: 'vault-ssh-certificate',
isNestedAttribute: true,
description: 'The username to use when making an SSH connection.',
})
username;
@attr('string', {
for: 'vault-ssh-certificate',
isNestedAttribute: true,
description: 'The desired key type to use when generating a private key.',
})
key_type;
@attr('number', {
for: 'vault-ssh-certificate',
isNestedAttribute: true,
description:
'Specifies the number of bits used when generating the private key. Not used if key type is ed25519',
})
key_bits;
@attr('string', {
for: 'vault-ssh-certificate',
isNestedAttribute: true,
description: 'Specifies the requested time to live for the certificate.',
})
ttl;
@attr('string', {
for: 'vault-ssh-certificate',
isNestedAttribute: true,
description:
'Specifies the key id that the created certificate should have.',
})
key_id;
@attr('object-as-array', {
for: 'vault-ssh-certificate',
isNestedAttribute: true,
description:
'Specifies a map of the critical options that the certificate should be signed for.',
})
critical_options;
@attr('object-as-array', {
for: 'vault-ssh-certificate',
isNestedAttribute: true,
description:
'Specifies a map of the extensions that the certificate should be signed for.',
})
extensions;
}
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -82,6 +87,7 @@ export default class GeneratedCredentialStoreModel extends BaseModel {
@attr('string', {
for: 'vault',
isNestedAttribute: true,
isSecret: true,
description: 'A token used for accessing Vault.',
})
token;
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -58,6 +63,7 @@ export default class GeneratedCredentialModel extends BaseModel {
@attr('string', {
for: 'username_password',
isNestedAttribute: true,
isSecret: true,
description: 'The password for credential.',
})
password;
@@ -66,6 +72,7 @@ export default class GeneratedCredentialModel extends BaseModel {
@attr('string', {
for: 'ssh_private_key',
isNestedAttribute: true,
isSecret: true,
description: 'The private key for credential.',
})
private_key;
@@ -73,7 +80,16 @@ export default class GeneratedCredentialModel extends BaseModel {
@attr('string', {
for: 'ssh_private_key',
isNestedAttribute: true,
isSecret: true,
description: 'The private key passphrase for credential.',
})
private_key_passphrase;
@attr('string', {
for: 'json',
isNestedAttribute: true,
isSecret: true,
description: 'The secret associated with credential.',
})
json_object;
}
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
+29 -2
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -63,10 +68,32 @@ export default class GeneratedHostSetModel extends BaseModel {
})
sync_interval_seconds;
// Azure specific
/**
* Host IDs are read-only under normal circumstances. But these can
* be persisted via a dedicated call to `addHosts()`.
*/
@attr({
readOnly: true,
emptyArrayIfMissing: true,
})
host_ids;
@attr('string-array', {
emptyArrayIfMissing: true,
})
preferred_endpoints;
// AWS specific
@attr('string-array', {
isNestedAttribute: true,
emptyArrayIfMissing: true,
})
filters;
// Azure specific, comes in from API as "filter". This is to avoid collisions with filter
@attr('string', {
description: '',
isNestedAttribute: true,
})
filter;
filter_string;
}
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -50,7 +55,7 @@ export default class GeneratedManagedGroupModel extends BaseModel {
@attr('string', {
isNestedAttribute: true,
description:
'The boolean expression filter to use to determine membership.',
'The boolean expression filter to use to determine membership. Comes in from API as "filter".',
})
filter;
filter_string;
}
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -39,6 +44,18 @@ export default class GeneratedTargetModel extends BaseModel {
})
worker_filter;
@attr('string', {
description:
'Optional boolean expressions to filter the egress workers that are allowed to satisfy this request.',
})
egress_worker_filter;
@attr('string', {
description:
'Optional boolean expressions to filter the ingress workers that are allowed to satisfy this request.',
})
ingress_worker_filter;
@attr('date', {
description: 'The time this resource was created\nOutput only.',
readOnly: true,
@@ -60,4 +77,23 @@ export default class GeneratedTargetModel extends BaseModel {
description: 'Current version number of this resource.',
})
version;
@attr('string', {
description:
'An IP address or DNS name for the session to connect to. Cannot be used in conjunction with host sources.',
})
address;
@attr('number', {
isNestedAttribute: true,
description: 'The default port a target should use if present.',
})
default_port;
@attr('number', {
isNestedAttribute: true,
description:
"The default port that will be listened on by the client's local proxy.",
})
default_client_port;
}
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
@@ -1,15 +0,0 @@
// app/initializers/fragment-serializer.js
import FragmentAuthMethodAttributesAccountClaimMapSerializer from '../serializers/fragment-auth-method-attributes-account-claim-map';
export function initialize(application) {
application.register(
'serializer:fragment-auth-method-attributes-account-claim-map',
FragmentAuthMethodAttributesAccountClaimMapSerializer
);
}
// Fragment serializers must be manually registered
export default {
name: 'fragment-auth-method-attributes-account-claim-map',
initialize: initialize,
};
@@ -1,12 +0,0 @@
// app/initializers/fragment-serializer.js
import FragmentStringSerializer from '../serializers/fragment-string';
export function initialize(application) {
application.register('serializer:fragment-string', FragmentStringSerializer);
}
// Fragment serializers must be manually registered
export default {
name: 'fragment-string',
initialize: initialize,
};
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Mixin from '@ember/object/mixin';
/**
+31 -5
View File
@@ -1,6 +1,15 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedAccountModel from '../generated/models/account';
import { computed } from '@ember/object';
import { equal } from '@ember/object/computed';
import {
TYPE_AUTH_METHOD_PASSWORD,
TYPE_AUTH_METHOD_OIDC,
TYPE_AUTH_METHOD_LDAP,
TYPES_AUTH_METHOD,
} from './auth-method';
export default class AccountModel extends GeneratedAccountModel {
// =attributes
@@ -8,18 +17,35 @@ export default class AccountModel extends GeneratedAccountModel {
/**
* @type {boolean}
*/
@equal('type', 'password') isPassword;
get isPassword() {
return this.type === TYPE_AUTH_METHOD_PASSWORD;
}
/**
* @type {boolean}
*/
@equal('type', 'oidc') isOIDC;
get isOIDC() {
return this.type === TYPE_AUTH_METHOD_OIDC;
}
/**
* @type {boolean}
*/
get isLDAP() {
return this.type === TYPE_AUTH_METHOD_LDAP;
}
/**
* @type {boolean}
*/
get isUnknown() {
return !TYPES_AUTH_METHOD.includes(this.type);
}
/**
* Convenience for getting username in account.
* @type {string}
*/
@computed('{email,full_name,login_name}')
get accountName() {
const { email, full_name, login_name } = this;
return email || full_name || login_name;
+34 -33
View File
@@ -1,8 +1,21 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedAuthMethodModel from '../generated/models/auth-method';
import { attr } from '@ember-data/model';
import { fragment } from 'ember-data-model-fragments/attributes';
import { equal } from '@ember/object/computed';
export const TYPE_AUTH_METHOD_PASSWORD = 'password';
export const TYPE_AUTH_METHOD_OIDC = 'oidc';
export const TYPE_AUTH_METHOD_LDAP = 'ldap';
export const TYPES_AUTH_METHOD = Object.freeze([
TYPE_AUTH_METHOD_PASSWORD,
TYPE_AUTH_METHOD_OIDC,
TYPE_AUTH_METHOD_LDAP,
]);
/**
* Enum options per auth method type and field.
*/
@@ -28,34 +41,8 @@ export const options = {
};
export default class AuthMethodModel extends GeneratedAuthMethodModel {
// =error attributes
// These attributes exist solely to capture errors on nested fields.
// See the application adapter's error normalization method for
// more information.
@attr('string', { readOnly: true }) attributes_state;
@attr('string', { readOnly: true }) attributes_issuer;
@attr('string', { readOnly: true }) attributes_client_id;
@attr('string', { readOnly: true }) attributes_client_secret;
@attr('string', { readOnly: true }) attributes_max_age;
@attr('string', { readOnly: true }) attributes_api_url_prefix;
@attr('string', { readOnly: true })
attributes_disable_discovered_config_validation;
@attr('string', { readOnly: true }) attributes_dry_run;
@attr('string', { readOnly: true }) attributes_account_claim_maps;
@attr('string', { readOnly: true }) attributes_claims_scopes;
@attr('string', { readOnly: true }) attributes_signing_algorithms;
@attr('string', { readOnly: true }) attributes_allowed_audiences;
@attr('string', { readOnly: true }) attributes_idp_ca_certs;
// =attributes
/**
* Attributes of this resource, if any, represented as a JSON fragment.
* @type {FragmentAuthMethodAttributesModel}
*/
@fragment('fragment-auth-method-attributes', { defaultValue: {} }) attributes;
/**
* @type {boolean}
*/
@@ -67,35 +54,49 @@ export default class AuthMethodModel extends GeneratedAuthMethodModel {
* @type {boolean}
*/
get isPassword() {
return this.type === 'password';
return this.type === TYPE_AUTH_METHOD_PASSWORD;
}
/**
* @type {boolean}
*/
get isOIDC() {
return this.type === 'oidc';
return this.type === TYPE_AUTH_METHOD_OIDC;
}
/**
* @type {boolean}
*/
get isLDAP() {
return this.type === TYPE_AUTH_METHOD_LDAP;
}
/**
* @type {boolean}
*/
get isUnknown() {
return !TYPES_AUTH_METHOD.includes(this.type);
}
/**
* @type {boolean}
*/
get isInactive() {
return this.attributes.state === 'inactive';
return this.state === 'inactive';
}
/**
* @type {boolean}
*/
get isPrivate() {
return this.attributes.state === 'active-private';
return this.state === 'active-private';
}
/**
* @type {boolean}
*/
get isPublic() {
return this.attributes.state === 'active-public';
return this.state === 'active-public';
}
// =methods
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedAuthTokenModel from '../generated/models/auth-token';
export default class AuthTokenModel extends GeneratedAuthTokenModel {}
+14 -2
View File
@@ -1,6 +1,12 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Model from '@ember-data/model';
import { attr } from '@ember-data/model';
import { computed } from '@ember/object';
import { inject as service } from '@ember/service';
/**
* Base model class provides common functionality for all models.
@@ -25,6 +31,10 @@ import { computed } from '@ember/object';
* 2) Or as an ID: `record.scopeID`.
*/
export default class BaseModel extends Model {
// =services
@service store;
// =relationships
/**
@@ -49,6 +59,10 @@ export default class BaseModel extends Model {
const id = this.scopeID;
return this.store.peekRecord('scope', id);
}
// Ember seems to have a bug with its internals and can't correctly set
// the `scopeModel` when passed in as part of the `inputProperties`
// of a `createRecord` call
set scopeModel(model) {
if (model) {
const json = model.serialize();
@@ -87,7 +101,6 @@ export default class BaseModel extends Model {
/**
* @type {boolean}
*/
@computed('hasDirtyAttributes', 'isSaving')
get canSave() {
return this.hasDirtyAttributes && !this.isSaving;
}
@@ -95,7 +108,6 @@ export default class BaseModel extends Model {
/**
* @type {boolean}
*/
@computed('canSave')
get cannotSave() {
return !this.canSave;
}
+35 -3
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedCredentialLibraryModel from '../generated/models/credential-library';
/**
@@ -5,12 +10,20 @@ import GeneratedCredentialLibraryModel from '../generated/models/credential-libr
*/
export const options = {
http_method: ['GET', 'POST'],
key_type: ['ed25519', 'ecdsa', 'rsa'],
};
export const TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC = 'vault-generic';
export const TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE =
'vault-ssh-certificate';
/**
* Supported Credential Library types.
*/
export const types = ['vault'];
export const TYPES_CREDENTIAL_LIBRARY = Object.freeze([
TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC,
TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE,
]);
export default class CredentialLibraryModel extends GeneratedCredentialLibraryModel {
// =attributes
@@ -20,7 +33,7 @@ export default class CredentialLibraryModel extends GeneratedCredentialLibraryMo
* @type {boolean}
*/
get isUnknown() {
return !types.includes(this.type);
return !TYPES_CREDENTIAL_LIBRARY.includes(this.type);
}
/**
@@ -28,6 +41,25 @@ export default class CredentialLibraryModel extends GeneratedCredentialLibraryMo
* @type {boolean}
*/
get isVault() {
return this.type === 'vault';
return (
this.type === TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC ||
this.type === TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE
);
}
/**
* True if credential is a generic vault type.
* @type {boolean}
*/
get isVaultGeneric() {
return this.type === TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC;
}
/**
* True if credential is a vault ssh cert type.
* @type {boolean}
*/
get isVaultSSHCertificate() {
return this.type === TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE;
}
}
@@ -1,6 +1,13 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedCredentialStoreModel from '../generated/models/credential-store';
import { equal } from '@ember/object/computed';
export const types = ['static', 'vault'];
export default class CredentialStoreModel extends GeneratedCredentialStoreModel {
// =attributes
+15 -2
View File
@@ -1,16 +1,21 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedCredentialModel from '../generated/models/credential';
/**
* Supported Credential types.
*/
export const types = ['username_password', 'ssh_private_key'];
export const types = ['username_password', 'ssh_private_key', 'json'];
export default class CredentialModel extends GeneratedCredentialModel {
// =attributes
/**
* All Credentials are prefixed with "cred" and are considered
* static due to their relation with Static Credential Stores.
*
*
* True if credential starts with the "cred" prefix.
* @type {boolean}
*/
@@ -18,6 +23,14 @@ export default class CredentialModel extends GeneratedCredentialModel {
return this.id.startsWith('cred');
}
/**
* True if type is `json`.
* @type {boolean}
*/
get isJSON() {
return this.type === 'json';
}
/**
* True if credential is an unknown type.
* @type {boolean}
@@ -1,9 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
export default class FragmentAuthMethodAttributesAccountClaimMapModel extends Fragment {
// =attributes (OIDC)
@attr('string') from;
@attr('string') to;
}
@@ -1,40 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
import { fragmentArray } from 'ember-data-model-fragments/attributes';
export default class FragmentAuthMethodAttributesModel extends Fragment {
// =attributes (OIDC)
@attr('string', { readOnly: true }) state;
@attr('string') issuer;
@attr('string') client_id;
@attr('string') client_secret;
@attr('string', { readOnly: true }) client_secret_hmac;
@attr('number') max_age;
@attr('string') api_url_prefix;
@attr('string', { readOnly: true }) callback_url;
@attr('boolean') disable_discovered_config_validation;
@attr('boolean') dry_run;
@fragmentArray('fragment-auth-method-attributes-account-claim-map', {
emptyArrayIfMissing: true,
})
account_claim_maps;
@fragmentArray('fragment-string', {
emptyArrayIfMissing: true,
})
claims_scopes;
@fragmentArray('fragment-string', {
emptyArrayIfMissing: true,
})
signing_algorithms;
@fragmentArray('fragment-string', {
emptyArrayIfMissing: true,
})
allowed_audiences;
@fragmentArray('fragment-string', { emptyArrayIfMissing: true }) idp_ca_certs;
}
@@ -1,14 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
/**
* Represents an item in an array of strings.
*/
export default class FragmentStringModel extends Fragment {
// =attributes
@attr('string', {
description: 'The value of the string.',
})
value;
}
+10
View File
@@ -1,9 +1,19 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedGroupModel from '../generated/models/group';
import { attr } from '@ember-data/model';
import { computed } from '@ember/object';
import { A } from '@ember/array';
import { inject as service } from '@ember/service';
export default class GroupModel extends GeneratedGroupModel {
// =services
@service store;
// =attributes
/**
+8 -2
View File
@@ -1,6 +1,12 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedHostCatalogModel from '../generated/models/host-catalog';
export const types = ['aws', 'azure'];
export const types = ['static', 'plugin'];
export const pluginTypes = ['aws', 'azure'];
export default class HostCatalogModel extends GeneratedHostCatalogModel {
// =attributes
@@ -26,7 +32,7 @@ export default class HostCatalogModel extends GeneratedHostCatalogModel {
* @type {boolean}
*/
get isUnknown() {
return this.isPlugin && !types.includes(this.plugin?.name);
return this.isPlugin && !pluginTypes.includes(this.plugin?.name);
}
/**
+7 -25
View File
@@ -1,6 +1,10 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedHostSetModel from '../generated/models/host-set';
import { fragmentArray } from 'ember-data-model-fragments/attributes';
import { types } from './host-catalog';
import { pluginTypes } from './host-catalog';
export default class HostSetModel extends GeneratedHostSetModel {
// =attributes
@@ -26,7 +30,7 @@ export default class HostSetModel extends GeneratedHostSetModel {
* @type {boolean}
*/
get isUnknown() {
return this.isPlugin && !types.includes(this.plugin?.name);
return this.isPlugin && !pluginTypes.includes(this.plugin?.name);
}
/**
@@ -67,28 +71,6 @@ export default class HostSetModel extends GeneratedHostSetModel {
}
}
/**
* Host IDs are read-only under normal circumstances. But these can
* be persisted via a dedicated call to `addHosts()`.
*/
@fragmentArray('fragment-string', {
readOnly: true,
emptyArrayIfMissing: true,
})
host_ids;
@fragmentArray('fragment-string', {
emptyArrayIfMissing: true,
})
preferred_endpoints;
// AWS specific
@fragmentArray('fragment-string', {
emptyArrayIfMissing: true,
isNestedAttribute: true,
})
filters;
// =methods
/**
+16
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedHostModel from '../generated/models/host';
import { attr } from '@ember-data/model';
@@ -24,6 +29,12 @@ export default class HostModel extends GeneratedHostModel {
})
external_id;
@attr('string', {
description: 'The external facing name for the plugin based host.',
readOnly: true,
})
external_name;
// Aws specific
@attr({
readOnly: true,
@@ -84,4 +95,9 @@ export default class HostModel extends GeneratedHostModel {
this.plugin = { name: type };
}
}
// Plugin hosts can support an external name
get displayName() {
return this.name || this.external_name || this.id;
}
}
+5 -2
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedManagedGroupModel from '../generated/models/managed-group';
import { attr } from '@ember-data/model';
import { A } from '@ember/array';
@@ -5,8 +10,6 @@ import { A } from '@ember/array';
export default class ManagedGroupModel extends GeneratedManagedGroupModel {
// =attributes
@attr('string', { readOnly: true }) attributes_filter;
/**
* Members is read-only under normal circumstances. But members can
* be persisted via calls to `addMembers()` or `removeMembers()`.
+129
View File
@@ -1,7 +1,20 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedRoleModel from '../generated/models/role';
import { attr } from '@ember-data/model';
import { inject as service } from '@ember/service';
import { all, resolve } from 'rsvp';
import { TYPE_AUTH_METHOD_OIDC } from 'api/models/auth-method';
export default class RoleModel extends GeneratedRoleModel {
// =services
@service store;
@service resourceFilterStore;
// =attributes
/**
@@ -32,6 +45,122 @@ export default class RoleModel extends GeneratedRoleModel {
: null;
}
/**
* A list of IDs for principals of type `user`.
* @type {string[]}
*/
get userIDs() {
return this.principals
.filter(({ type }) => type === 'user')
.map(({ principal_id }) => principal_id);
}
/**
* A list of IDs for principals of type `group`.
* @type {string[]}
*/
get groupIDs() {
return this.principals
.filter(({ type }) => type === 'group')
.map(({ principal_id }) => principal_id);
}
/**
* A list of IDs for principals of type `managed group`.
* @type {string[]}
*/
get managedGroupIDs() {
return this.principals
.filter(({ type }) => type === 'managed group')
.map(({ principal_id }) => principal_id);
}
/**
* A promise that resolves to an array of User instances.
* When calling this getter, be sure to await resolution
* before interacting with the results.
* @type {Promise[UserModel]}
*/
get users() {
const ids = this.userIDs;
// Role has prinicipal IDs,
// return a promise which resolves model instances for those IDs
if (ids?.length) {
return this.resourceFilterStore
.queryBy('user', { id: ids }, { scope_id: 'global', recursive: true })
.then((models) => models.map((model) => model));
}
// No principal IDs,
// return a promise resolving to an empty array
return resolve([]);
}
/**
* A promise that resolves to an array of Group instances.
* When calling this getter, be sure to await resolution
* before interacting with the results.
* @type {Promise[GroupModel]}
*/
get groups() {
const ids = this.groupIDs;
// Role has prinicipal IDs,
// return a promise which resolves model instances for those IDs
if (ids?.length) {
return this.resourceFilterStore
.queryBy('group', { id: ids }, { scope_id: 'global', recursive: true })
.then((models) => models.map((model) => model));
}
// No principal IDs,
// return a promise resolving to an empty array
return resolve([]);
}
/**
* A promise that resolves to an array of ManagedGroup instances.
* When calling this getter, be sure to await resolution
* before interacting with the results.
* @type {Promise[ManagedGroupModel]}
*/
get managedGroups() {
const ids = this.managedGroupIDs;
// Role has prinicipal IDs
// return a promise which resolves model instances for those IDs
if (ids?.length) {
// Collect all auth methods.
const authMethods = this.resourceFilterStore.queryBy(
'auth-method',
{ type: TYPE_AUTH_METHOD_OIDC },
{ scope_id: 'global', recursive: true }
);
// For each auth method, query all managed groups with IDs
// that match the role's manage group principal IDs.
const managedGroups = authMethods
.then((methods) =>
all(
methods.map(({ id: auth_method_id }) =>
this.resourceFilterStore
.queryBy('managed-group', { id: ids }, { auth_method_id })
.then((models) => models.map((model) => model))
)
)
)
// The result is an array of arrays of model instances (grouped by
// auth methods), so these must be flattened.
.then((grouped) => grouped.flat());
return managedGroups;
}
// No principal IDs,
// return a promise resolving to an empty array
return resolve([]);
}
// =methods
/**
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedScopeModel from '../generated/models/scope';
import { computed } from '@ember/object';
+20
View File
@@ -1,8 +1,16 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedSessionModel from '../generated/models/session';
import { computed } from '@ember/object';
import { equal } from '@ember/object/computed';
import { tracked } from '@glimmer/tracking';
import { A } from '@ember/array';
import { inject as service } from '@ember/service';
export const statusTypes = ['active', 'pending', 'canceling', 'terminated'];
/**
*
@@ -80,6 +88,10 @@ class SessionCredential {
}
export default class SessionModel extends GeneratedSessionModel {
// =services
@service store;
// =attributes
// These transient attributes are used for values that come from the CLI
@@ -94,6 +106,14 @@ export default class SessionModel extends GeneratedSessionModel {
@equal('status', 'active') isActive;
@equal('status', 'pending') isPending;
/**
* True if status is an unknown string.
* @type {boolean}
*/
get isUnknownStatus() {
return !statusTypes.includes(this.status);
}
/**
* @type {boolean}
*/
+16 -8
View File
@@ -1,14 +1,22 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedTargetModel from '../generated/models/target';
import { attr } from '@ember-data/model';
import { inject as service } from '@ember/service';
export const TYPE_TARGET_TCP = 'tcp';
export const TYPE_TARGET_SSH = 'ssh';
export const TYPES_TARGET = Object.freeze([TYPE_TARGET_TCP, TYPE_TARGET_SSH]);
export default class TargetModel extends GeneratedTargetModel {
// =attributes
// =services
@attr('number', {
isNestedAttribute: true,
description: 'The default port a target should use if present.',
})
default_port;
@service store;
// =attributes
/**
* @type Array
@@ -314,7 +322,7 @@ export default class TargetModel extends GeneratedTargetModel {
* @type {boolean}
*/
get isTCP() {
return this.type === 'tcp';
return this.type === TYPE_TARGET_TCP;
}
/**
@@ -322,6 +330,6 @@ export default class TargetModel extends GeneratedTargetModel {
* @type {boolean}
*/
get isSSH() {
return this.type === 'ssh';
return this.type === TYPE_TARGET_SSH;
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedUserModel from '../generated/models/user';
import { attr } from '@ember-data/model';
import { computed } from '@ember/object';
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedWorkerModel from '../generated/models/worker';
import { attr } from '@ember-data/model';
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class AccountSerializer extends ApplicationSerializer {
+13 -5
View File
@@ -1,7 +1,11 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import RESTSerializer from '@ember-data/serializer/rest';
import { underscore } from '@ember/string';
import { get } from '@ember/object';
import { copy } from 'ember-copy';
/**
* Manages serialization/normalization of data to/from the API.
@@ -39,6 +43,10 @@ export default class ApplicationSerializer extends RESTSerializer {
serializeAttribute(snapshot, json, key, attribute) {
const { type, options } = attribute;
let value = super.serializeAttribute(...arguments);
// Remove secret attributes that are null or empty
if (options.isSecret) {
if (type === 'string' && !json[key]) delete json[key];
}
// Convert empty strings to null.
if (type === 'string' && json[key] === '') json[key] = null;
// Do not serialize read-only attributes.
@@ -125,7 +133,7 @@ export default class ApplicationSerializer extends RESTSerializer {
);
// Copy the data rooted under `items` in the existing payload into the new
// payload under the expected root key name.
transformedPayload[payloadKey] = copy(payload.items, true);
transformedPayload[payloadKey] = structuredClone(payload.items);
// Return the result of normalizing the transformed payload.
return super.normalizeArrayResponse(
store,
@@ -152,7 +160,7 @@ export default class ApplicationSerializer extends RESTSerializer {
*/
normalizeSingleResponse(store, primaryModelClass, payload, id, requestType) {
// Copy payload (mostly to prevent mocking issues)
payload = copy(payload, true);
payload = structuredClone(payload);
// Check for and normalize missing arrays
payload = this.normalizeMissingArrays(store, primaryModelClass, payload);
// Setup a new payload data structure.
@@ -207,7 +215,7 @@ export default class ApplicationSerializer extends RESTSerializer {
* @return {Object}
*/
normalize(typeClass, hash) {
let normalizedHash = copy(hash, true);
let normalizedHash = structuredClone(hash);
const scopeID = get(normalizedHash, 'scope.id');
const scopeType = get(normalizedHash, 'scope.type');
if (scopeID) normalizedHash.scope.scope_id = scopeID;
@@ -296,7 +304,7 @@ export default class ApplicationSerializer extends RESTSerializer {
id,
requestType
) {
const newPayload = copy(payload, true);
const newPayload = structuredClone(payload);
primaryModelClass.attributes.forEach((attribute) => {
const {
+8 -3
View File
@@ -1,5 +1,10 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
import { copy } from 'ember-copy';
import { TYPE_AUTH_METHOD_OIDC } from 'api/models/auth-method';
export default class AuthMethodSerializer extends ApplicationSerializer {
// =methods
@@ -12,7 +17,7 @@ export default class AuthMethodSerializer extends ApplicationSerializer {
*/
serialize(snapshot) {
switch (snapshot.record.type) {
case 'oidc':
case TYPE_AUTH_METHOD_OIDC:
return this.serializeOIDC(...arguments);
default:
return this.serializeDefault(...arguments);
@@ -86,7 +91,7 @@ export default class AuthMethodSerializer extends ApplicationSerializer {
* @return {Object}
*/
normalize(typeClass, hash, ...rest) {
let normalizedHash = copy(hash, true);
let normalizedHash = structuredClone(hash);
// switch (normalizedHash.type) {
// case 'oidc':
// normalizedHash = this.normalizeOIDC(normalizedHash);
@@ -1,4 +1,13 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
import {
TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC,
TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE,
} from '../models/credential-library';
export default class CredentialLibrarySerializer extends ApplicationSerializer {
// =properties
@@ -13,12 +22,41 @@ export default class CredentialLibrarySerializer extends ApplicationSerializer {
* @method serialize
* @param {Snapshot} snapshot
*/
serialize() {
serialize(snapshot) {
switch (snapshot.record.type) {
case TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC:
return this.serializeVaultGeneric(...arguments);
case TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE:
default:
return super.serialize(...arguments);
}
}
serializeAttribute(snapshot, json, key, attribute) {
super.serializeAttribute(...arguments);
const { options } = attribute;
const { type } = snapshot.record;
// If an attribute has a `for` option, it must match the
// record's `type`, else the attribute is excluded
// from serialization.
if (options?.for && options.for !== type) {
if (options.isNestedAttribute) {
delete json.attributes[key];
} else {
delete json[key];
}
}
}
serializeVaultGeneric() {
const serialized = super.serialize(...arguments);
if (serialized.attributes) {
// Serialize `http_request_body` only if `http_method` is POST
if (!serialized.attributes?.http_method?.match(/post/i))
delete serialized.attributes.http_request_body;
// Set `http_request_body` only if `http_method` is POST
// otherwise set to null to have the field removed
if (!serialized.attributes?.http_method?.match(/post/i)) {
serialized.attributes.http_request_body = null;
}
}
return serialized;
}
@@ -1,6 +1,9 @@
import ApplicationSerializer from './application';
import { copy } from 'ember-copy';
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class CredentialStoreSerializer extends ApplicationSerializer {
/**
* @override
@@ -20,8 +23,6 @@ export default class CredentialStoreSerializer extends ApplicationSerializer {
serializeVault() {
const serialized = super.serialize(...arguments);
if (serialized.attributes) {
// Token cannot be unset. If it's falsy, it must be removed.
if (!serialized.attributes?.token) delete serialized.attributes.token;
// Client certificate key cannot be unset when certificate is set.
// If it's falsy, it must be removed.
if (
@@ -41,7 +42,7 @@ export default class CredentialStoreSerializer extends ApplicationSerializer {
}
normalize(typeClass, hash, ...rest) {
const normalizedHash = copy(hash, true);
const normalizedHash = structuredClone(hash);
const normalized = super.normalize(typeClass, normalizedHash, ...rest);
// Remove secret fields as we don't track them after being created/updated
normalized.data.attributes.token = '';
+21 -39
View File
@@ -1,6 +1,9 @@
import ApplicationSerializer from './application';
import { copy } from 'ember-copy';
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class CredentialSerializer extends ApplicationSerializer {
/**
* @override
@@ -13,54 +16,33 @@ export default class CredentialSerializer extends ApplicationSerializer {
*/
serializeScopeID = false;
serialize(snapshot) {
switch (snapshot.record.type) {
case 'username_password':
return this.serializeUsernamePassword(...arguments);
case 'ssh_private_key':
default:
return this.serializeSSHPrivateKey(...arguments);
serialize() {
const serialized = super.serialize(...arguments);
if (serialized.type === 'json') {
delete serialized.attributes.username;
if (serialized?.attributes?.json_object) {
serialized.attributes.object = JSON.parse(
serialized.attributes.json_object
);
delete serialized.attributes.json_object;
}
} else {
delete serialized.attributes.json_object;
}
}
serializeUsernamePassword() {
const serialized = super.serialize(...arguments);
// Remove non-username_password type attributes
delete serialized.attributes.private_key;
delete serialized.attributes.private_key_passphrase;
// Remove password from the payload if null
// or empty string. This allows the user to only update
// the username without providing the password again.
// Users cannot unset the password, they would have
// to delete the credential entirely.
if (!serialized?.attributes?.password)
delete serialized.attributes.password;
return serialized;
}
serializeSSHPrivateKey() {
const serialized = super.serialize(...arguments);
// Remove non-ssh_private_key type attributes
delete serialized.attributes.password;
// Remove private_key and/or private_key_passphrase from the payload
// if null or empty string. This allows the user to only update
// the username without providing the private key and passphrase again.
// Users cannot unset the private key or passphrase, they would have
// to delete the credential entirely.
if (!serialized?.attributes?.private_key_passphrase)
delete serialized.attributes.private_key_passphrase;
if (!serialized?.attributes?.private_key)
delete serialized.attributes.private_key;
return serialized;
}
normalize(typeClass, hash, ...rest) {
const normalizedHash = copy(hash, true);
const normalizedHash = structuredClone(hash);
const normalized = super.normalize(typeClass, normalizedHash, ...rest);
// Remove secret fields as we don't track them after being created/updated
normalized.data.attributes.password = '';
normalized.data.attributes.private_key = '';
normalized.data.attributes.private_key_passphrase = '';
normalized.data.attributes.json_object = '';
return normalized;
}
}
@@ -1,30 +0,0 @@
import JSONSerializer from '@ember-data/serializer/json';
export default class FragmentHostSourceSerializer extends JSONSerializer {
// =methods
/**
* Serializes an account claim to string.
* @param {Snapshot} snapshot
* @return {string}
*/
serialize(snapshot) {
const from = snapshot.attr('from');
const to = snapshot.attr('to');
return `${from}=${to}`;
}
/**
* Normalizes account claim strings into JSON API objects.
* @param {Model} typeClass
* @param {string} value
* @return {object}
*/
normalize(typeClass, value) {
const normalizedHash = {
from: value.split('=')[0],
to: value.split('=')[1],
};
return super.normalize(typeClass, normalizedHash);
}
}
@@ -1,26 +0,0 @@
import JSONSerializer from '@ember-data/serializer/json';
export default class FragmentAuthMethodAttributesSerializer extends JSONSerializer {
/**
* If an attribute is annotated as readOnly in the model, don't serialize it.
* Otherwise delegate to default attribute serializer.
*
* @override
* @method serializeAttribute
* @param {Snapshot} snapshot
* @param {Object} json
* @param {String} key
* @param {Object} attribute
*/
serializeAttribute(snapshot, json, key, attribute) {
const { type, options } = attribute;
let value = super.serializeAttribute(...arguments);
// Convert empty strings to null.
if (type === 'string' && json[key] === '') json[key] = null;
// Do not serialize read-only attributes.
if (options.readOnly) delete json[key];
// Client secret cannot be unset. If it's falsy, it must be removed.
if (key === 'client_secret' && !json[key]) delete json[key];
return value;
}
}
@@ -1,24 +0,0 @@
import JSONSerializer from '@ember-data/serializer/json';
export default class FragmentStringSerializer extends JSONSerializer {
// =methods
/**
* Serializes a to string.
* @param {Snapshot} snapshot
* @return {string}
*/
serialize(snapshot) {
return snapshot.attr('value');
}
/**
* Normalizes from strings.
* @param {Model} typeClass
* @param {string} value
* @return {object}
*/
normalize(typeClass, value) {
return super.normalize(typeClass, { value });
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class GroupSerializer extends ApplicationSerializer {
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
const fieldsByType = {
+26 -5
View File
@@ -1,9 +1,13 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
import { copy } from 'ember-copy';
const fieldByType = {
aws: ['preferred_endpoints', 'filters', 'sync_interval_seconds'],
azure: ['preferred_endpoints', 'filter', 'sync_interval_seconds'],
azure: ['preferred_endpoints', 'filter_string', 'sync_interval_seconds'],
};
export default class HostSetSerializer extends ApplicationSerializer {
// =properties
@@ -69,6 +73,15 @@ export default class HostSetSerializer extends ApplicationSerializer {
delete json.attributes[key];
}
}
if (key === 'filter_string') {
const { filter_string } = json.attributes;
if (filter_string) {
json.attributes.filter = json.attributes.filter_string;
}
delete json.attributes.filter_string;
}
return value;
}
@@ -79,11 +92,19 @@ export default class HostSetSerializer extends ApplicationSerializer {
* TODO: remove once API consistently returns arrays.
*/
normalize(typeClass, hash, ...rest) {
const normalizedHash = copy(hash, true);
const normalizedHash = structuredClone(hash);
if (typeof normalizedHash?.attributes?.filters === 'string') {
normalizedHash.attributes.filters = [normalizedHash.attributes.filters];
}
const normalized = super.normalize(typeClass, normalizedHash, ...rest);
return normalized;
// Change name from filter to filter_string
if (normalizedHash?.attributes?.filter) {
normalizedHash.attributes.filter_string =
normalizedHash.attributes.filter;
delete normalizedHash.attributes.filter;
}
return super.normalize(typeClass, normalizedHash, ...rest);
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class HostSerializer extends ApplicationSerializer {
+28 -1
View File
@@ -1,5 +1,9 @@
import ApplicationSerializer from './application';
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class ManagedGroupSerializer extends ApplicationSerializer {
// =properties
@@ -7,4 +11,27 @@ export default class ManagedGroupSerializer extends ApplicationSerializer {
* @type {boolean}
*/
serializeScopeID = false;
serialize() {
const serialized = super.serialize(...arguments);
if (serialized.attributes.filter_string !== undefined) {
serialized.attributes.filter = serialized.attributes.filter_string;
}
delete serialized.attributes.filter_string;
return serialized;
}
normalize(typeClass, hash, ...rest) {
const normalizedHash = structuredClone(hash);
if (normalizedHash?.attributes?.filter) {
normalizedHash.attributes.filter_string =
normalizedHash.attributes.filter;
delete normalizedHash.attributes.filter;
}
return super.normalize(typeClass, normalizedHash, ...rest);
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
import { get } from '@ember/object';
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class SessionSerializer extends ApplicationSerializer {
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class TargetSerializer extends ApplicationSerializer {
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class UserSerializer extends ApplicationSerializer {
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class WorkerSerializer extends ApplicationSerializer {
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Service from '@ember/service';
import { inject as service } from '@ember/service';
+5
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Service from '@ember/service';
import { getOwner } from '@ember/application';
import { get } from '@ember/object';
Loaded 100 of 1882 files, more files were not shown because too many files have changed in this diff. Show more