Compare commits

..
488 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
Zhihe Li 7dfaff1538 fix: 🐛 Fix raw api output not displaying codemirror properly (#1354)
✅ Closes: ICU-6249
2022-09-28 14:49:09 -04:00
Zhihe Li e09b4fffe7 chore: 🤖 Update version and changelog for desktop (#1353) 2022-09-27 15:39:39 -04:00
Zhihe Li 3deec2ed50 fix: 🐛 Sort workers when filtering is enabled as well (#1352) 2022-09-27 09:15:42 -04:00
Dharini Jeeva 3fc22b4aa3 fix: 🐛 clear token on normalization (#1351)
* fix: 🐛 clear token on normalization
2022-09-26 18:25:02 -07:00
Cameron PereraandSusmitha Girumala 0cba914045 chore: 🤖 remove unused ssh-target feature flag (#1346)
Co-authored-by: Susmitha Girumala <susmitha@hashicorp.com>
2022-09-26 12:35:25 -05:00
Zhihe LiandCarlos Alcaide Corvo 4c4d4e2351 Fix bug dc token env (#1350)
* Add Boundary password as env variable. WIP

* Add Boundary password as env variable to the spawn process

* fix: 🐛 Fix token flag when connecting a target

Fix a token flag when connecting to a target. Now it uses an env
variable

* Add rest env variables to child processes

Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2022-09-26 12:39:49 -04:00
Zhihe Li e2fff61416 fix: 🐛 Add back div to fix tag icon badge layout (#1349) 2022-09-22 17:57:40 -04:00
Zhihe Li 82e531e836 feat: 🎸 Update workers list to be sorted (#1348)
✅ Closes: ICU-6185
2022-09-22 13:24:33 -04:00
Cameron Perera e6d68c2e4a refactor: 💡 fix routing for static credentials from targets (#1347)
* refactor: 💡 fix routing for static credentials from targets

✅ Closes: ICU-6155

* chore: 🤖 Add comment to isStatic credential helper method
2022-09-21 15:10:28 -05:00
Zhihe Li 9e55f5f157 chore: 🤖 Enable BYOW feature (#1345) 2022-09-21 09:30:07 -04:00
Zhihe Li eb539b9c5b Icu 6036 update filter dropdown for tags in list view (#1337)
✅ Closes: ICU-6036
2022-09-20 20:51:06 -04:00
Dharini JeevaandCameron Perera 5224512da0 Icu 6153 unknown credential support (#1344)
* feat: 🎸 Add support for unknown credential types

✅ Closes: ICU-6153

* fix: 🐛 add unknown cred type

* refactor: 💡 move credential type logic to a component

* chore: 🤖 fix component name

* fix: 🐛 update component name, remove unused translated string

* fix: 🐛 file name

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-09-20 19:31:16 -05:00
Zhihe Li 6aec408003 feat: 🎸 Make checkbox equality checks more general (#1335) 2022-09-20 20:13:26 -04:00
Randall Morey f937bbf282 fix: 🐛 stop sending scope_id on cred libraries (#1343) 2022-09-20 18:24:18 -04:00
Zhihe Li 7996d5439c chore: 🤖 Update public worker address wording (#1340) 2022-09-20 17:04:17 -04:00
Dharini Jeeva 3f2a17f59c chore: 🤖 update host catalog ui (#1342)
* chore: 🤖 update host catalog/hosts/host-set azure texts
2022-09-20 13:23:29 -07:00
Dharini Jeeva 24a99d0fb7 chore: 🤖 Host Set Updates (#1333)
host set text updates
2022-09-20 09:51:29 -07:00
Zhihe Li fdc4a13194 Icu 6034 update tags in create page to support multi input fields (#1325)
* feat: 🎸 Change tags to be multi part input fields

✅ Closes: ICU-6034
2022-09-20 10:56:18 -04:00
Devon Anderson 70bfd4c181 feat: 🎸 Update Detail Page to show Tags (#1327)
* feat: 🎸 Update Detail Page to show Tags

Update detailed worker view page to show tags in key:value pair format

✅ Closes: ICU-6037

* refactor: 💡 Fix duplicate yaml variables, and view

Refactor detailed view to have space after comma for value array, and
removed duplicate yaml variables for worker_tags

✅ Closes: ICU-6037

* change title and description translation variables
2022-09-20 09:11:57 -04:00
lisbet-alvarez 10a81f8590 refactor: 💡 translation fix (#1338) 2022-09-19 16:01:14 -07:00
Zhihe Li c75abc11dc feat: 🎸 Add optional icon for dropdown section (#1332) 2022-09-19 16:28:19 -04:00
Dharini Jeeva e17db2e0d6 Update fieldset (#1334)
* chore: 🤖 add helpertext to fieldset and update text
2022-09-19 13:07:31 -07:00
Cameron Perera d2b67fa76c chore: 🤖 enable SSH Targets and Static Credential Store support (#1336) 2022-09-19 09:50:59 -05:00
Cameron Perera 3af439f1e6 refactor: 💡 Update Host Catalog form labels and help text (#1331)
✅ Closes: ICU-6107
2022-09-16 15:14:26 -07:00
Cameron Perera f143ba3d58 refactor: 💡 Update Quick Setup Success screen button route (#1330)
Route to Target details screen now

✅ Closes: ICU-6096
2022-09-16 14:25:45 -05:00
Zhihe Li 82bbe798fd feat: 🎸 update the tags badge in workers list view (#1326)
* feat: 🎸 update the tags badge in workers list view

✅ Closes: ICU-6035
2022-09-16 14:53:29 -04:00
Dharini JeevaandCameron Perera 346e0d356a chore: 🤖 update quicksetup svg (#1329)
Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-09-16 13:02:30 -05:00
Cameron Perera f603c405a7 refactor: 💡 Update Quick Setup resource names (#1328)
* refactor: 💡 Update Quick Setup resource names

✅ Closes: ICU-6094

* refactor: 💡 Fix target quick setup name
2022-09-16 12:17:36 -05:00
Dharini Jeeva 8eeab7e87b Icu 5991 UI add worker filter form field for vault type credential stores (#1318)
* chore: 🤖 add worker_filter to vault cred store
2022-09-14 12:06:34 -07:00
Randall Morey 3d32200cf3 chore: 🤖 disable features (#1317) 2022-09-14 09:49:06 -04:00
Cameron Perera 29d41efade chore: 🤖 Add new flag for vault-worker-filter, ENT/HCP only (#1316)
✅ Closes: ICU-6054
2022-09-13 14:09:10 -07:00
Devon Anderson 8efa3168c8 feat: 🎸 Update worker model (#1313)
* feat: 🎸 Update worker model

Update worker modeel for `release_version` field

✅ Closes: ICU-6044

* refactor: 💡 update mirage factory

Update mirage factory for worker and `release_version`

✅ Closes: ICU-6044

* feat: 🎸 Update detailed worker view (#1315)

Update detailer worker view to include read-only `release_version` field

✅ Closes: ICU-6046

* feat: 🎸 Update workers list-view (#1314)

Update workers list-view to include `release-version`

✅ Closes: ICU-6045
2022-09-13 16:49:48 -04:00
Cameron Perera cd9d3e91e5 refactor: 💡 Add worker_filter to vault credential stores (#1310)
* refactor: 💡 Add worker_filter to vault credential stores

Add worker_filter attribute to vault type credential store model

✅ Closes: ICU-5988

* refactor: 💡 Add worker_filter mirage mock for credential store (#1312)

✅ Closes: ICU-5990
2022-09-13 15:23:28 -05:00
Devon AndersonandZhihe Li 3c49dc1c48 feat: 🎸 Feature flag for oss and hcp binary (#1305)
* feat: 🎸 Feature flag for `oss` and `hcp` binary

Create feature flag for `oss` and `hcp` to change specific input fields
based on binary editions

✅ Closes: ICU

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

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

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

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

* refactor: 💡 Quick refactor

Refactor `create-worker-led/index.js`, and test.

✅ Closes: ICU-5903

* refactor: 💡 refactor for better readability

Refactor code for better readability

* refactor: 💡 rename filter function

rename array filter function to be more descriptive

✅ Closes: ICU-5903

* changed params name for  `convertCommaSeparatedValuesToArray`

* add ending new line

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

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

* refactor: 💡 yaml refactor

yaml refactor

* refactor: 💡 revert en-us.yaml file

revert en-us.yaml file

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-09-12 16:04:29 -04:00
Zhihe Li e6767b1e14 Chore/enable yaml formatting (#1307) 2022-09-12 15:17:21 -04:00
Carlos Alcaide Corvo 3347668b41 chore: 🤖 Add feature flags for dev and test environments (#1306) 2022-09-12 15:58:08 +02:00
Zhihe Li 34da192ef9 chore: 🤖 Enable stylistic linting rules (#1298) 2022-09-07 16:21:27 -04:00
Dharini Jeeva d930c3da3a chore: 🤖 enable ssh-target for production (#1302)
* chore: 🤖 enable ssh-target for production
2022-09-07 09:48:29 -07:00
lisbet-alvarez 0a2305bba9 feat: 🎸 Enable Static Credentials flag for Production (#1301)
✅ Closes: ICU-5952
2022-09-06 13:23:02 -07:00
Zhihe Li 86ab7331af fix: 🐛 Fix tag bug from moving where workers list is loaded (#1284)
* fix: 🐛 Fix tag bug from moving where workers list is loaded

* style: 💄 Remove unused import

* refactor: 💡 Use new setting to turn off auto refresh for filter
2022-09-06 13:45:22 -04:00
Dharini Jeeva c351452d71 test: 💍 acceptance tests for injected credentials (#1297)
test: 💍 acceptance tests for injected application credentials
2022-09-02 13:10:27 -07:00
Dharini Jeeva 8952541203 Add injected credentials tab (#1295)
* chore: 🤖 introduce injected application credentials on the UI
2022-09-02 12:29:39 -07:00
Devon Anderson 128b0ff492 refactor: 💡 Add tab navigation to detailed worker view page (#1288)
Added tab navigation to detailed worker view page.

✅ Closes: ICU-5901
2022-09-02 10:48:23 -04:00
Zhihe Li ccf462019b chore: 🤖 Add eol-last rule (#1296)
* chore: 🤖 Add eol-last rule

* style: 💄 Add newlines for core

* style: 💄 Add newlines to EOF in rose

* style: 💄 Add newlines for admin

* style: 💄 Add newlines in desktop templates
2022-09-01 17:43:30 -04:00
Zhihe Li a69d01c9fc Chore/enable quote rule (#1294)
* chore: 🤖 Add quote rule to use single quotes in templates
2022-09-01 16:39:56 -04:00
Randall MoreyandSusmitha Girumala a2e27b09c3 refactor: 💡 add standalone server mocks to auth tests (#1283)
* refactor: 💡 replace ember notify with flash in notify decorator

* refactor: 💡 remove embery-notify and replace last instance

* chore: 🤖 upgrade ember dependencies in anticipation of ember 4

* refactor: 💡 add standalone server mocks to auth tests

Co-authored-by: Susmitha Girumala <susmitha@hashicorp.com>
2022-09-01 15:40:00 -04:00
Randall Morey 3ff89279e6 chore: 🤖 add refreshRouteOnChange option to resource filters (#1289) 2022-09-01 13:27:34 -04:00
Dharini Jeeva 2614b311a1 Icu 5578 - introduce injected application credential on the api (#1269)
* chore: 🤖 include injected cred sources to the target model
2022-09-01 10:07:36 -07:00
Cameron Perera bd0854b0f6 refactor: 💡 update password input field to be a password type (#1291) 2022-08-31 17:26:47 -05:00
Cameron Perera e019b825ac refactor: 💡 update passphrase field to a password text input (#1292)
Update passphrase field to a text input to allow for adding a password
type
2022-08-31 17:08:34 -05:00
Zhihe Li 6fd0301635 chore: 🤖 Remove "ember-template-lint-plugin-prettier" (#1293)
* chore: 🤖 Remove "ember-template-lint-plugin-prettier"
2022-08-31 17:17:14 -04:00
Randall Morey 96cf75bfdb chore: 🤖 upgrade ember dependencies in anticipation of ember 4 (#1280)
* refactor: 💡 replace ember notify with flash in notify decorator

* refactor: 💡 remove embery-notify and replace last instance

* chore: 🤖 upgrade ember dependencies in anticipation of ember 4
2022-08-31 11:41:50 -07:00
Randall Morey 4a6ed0b509 refactor: 💡 replace ember notify with flash in notify decorator (#1272)
* refactor: 💡 replace ember notify with flash in notify decorator

* refactor: 💡 remove embery-notify and replace last instance
2022-08-31 10:24:25 -07:00
Randall MoreyandZhihe Li cde6abd445 refactor: 💡 convert brokered cred IDs array to simple attribute (#1259)
* refactor: 💡 convert brokered cred IDs array to simple attribute

* fix: 🐛 missing test assertion

* fix: 🐛 simplify computed

* refactor: 💡 convert host sources array to simple attribute (#1260)

* refactor: 💡 convert host source IDs array to simple attribute

* fix: 🐛 host source tests

* Refactor role fragment arrays (#1262)

* refactor: 💡 convert grant strings to regular attribute

* refactor: 💡 convert principals array to simple attribute

* Update ui/admin/app/routes/scopes/scope/roles/role.js

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

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

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

* fix: 🐛 remove unused import

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-08-31 09:55:59 -07:00
Cameron Perera 83c7b76f48 refactor: 💡 Update passphrase to private_key_passphrase (#1290)
✅ Closes: ICU-5916
2022-08-30 20:40:31 -05:00
lisbet-alvarezandZhihe Li cb3104a624 test: 💍 Add acceptance tests for deleting an spk credential (#1274)
✅ Closes: ICU-5654

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-08-30 13:01:38 -07:00
lisbet-alvarez f1f7be4067 test: 💍 clean-up acceptance test for list-view of credentials (#1278)
✅ Closes: ICU-5650
2022-08-30 12:44:17 -07:00
lisbet-alvarez 0ae2451b9c test: 💍 Add acceptance test for updating an spk credential (#1273)
* test: 💍 Add acceptance test for updating an spk credential

✅ Closes: ICU-5652
2022-08-30 12:20:52 -07:00
Dharini Jeeva 069a864cbb chore: 🤖 add abilities for injected app cred sources (#1285)
* chore: 🤖 add abilities for injected app cred sources
2022-08-30 12:01:59 -07:00
Dharini Jeeva a3337b3771 Add injected application credential support (#1282)
* fix: 🐛 credential application injection translations
2022-08-30 10:52:21 -07:00
Dharini Jeeva 9ee89585ec Remove unused console logs (#1286)
* fix: 🐛 remove unused logs
2022-08-30 09:49:34 -07:00
Devon Anderson 03b603be54 refactor: 💡 Disable read-only fields when editing worker (#1287)
Refactor detailed worker to not hide read-only fields when editing, but
leave them disabled

✅ Closes: ICU-5902
2022-08-30 12:11:19 -04:00
bc7ed3f0ed ICU 5247 detailed worker view and ICU 5248 edit worker view (#1246)
* feat: 🎸 Add list view for workers

✅ Closes: ICU-5251

* feat: 🎸 Add route for worker detail and include links in table

* refactor: 💡 Updated id display in table and fixed worker route

* test: 💍 Add workers list test

* feat: 🎸 Add worker detailed view and edit view

Added worker detailed view and editable form view for name and
description of worker

✅ Closes: ICU-5247 ICU-5248

* refactor: 💡 fixed conflict merge

fixed merge conflicts for scope/workers/worker

✅ Closes: ICU-5247

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

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>

* Update ui/admin/app/templates/scopes/scope/workers/worker/index.hbs

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>

* test: 💍 Test for worker/update-test.js

Created update-test.js and refactored worker/form.hbs for correct
display of last_seen

✅ Closes: ICU-5247

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

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

* Update ui/admin/app/templates/scopes/scope/workers/worker/index.hbs

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

* Update ui/admin/tests/acceptance/workers/read-test.js

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

* refactor: 💡 code refactor and test creation

Refactored code for detailed worker view, created controller for
detailew worker view to display worker name in breadcrumbs, added test
for `delete`, `update`.

✅ Closes: ICU-5247

* refactor: 💡 Refactor test

Refactor update-test.js and clean up code.

✅ Closes: ICU-5247

* refactor: 💡 fixed workers/update-test.js

added local variable for better test coverage for cancel test in
workers/update-test.js

✅ Closes: ICU-5247

* refactor: 💡 fix test

Refactored yaml file for `last_seen.description`

✅ Closes: ICU-5247

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

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

* removed `type` from  `<form.textarea/>` component

* Update ui/admin/app/controllers/scopes/scope/workers/worker.js

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

* spacing for linter

* refactor: 💡 Refactor test

Refactored `worker/read-test.js` to to test correct authorization

✅ Closes: ICU-5247

* ci: 🎡 Fixed lint

fixed lint

✅ Closes: ICU-5247

* refactor: 💡 Added custom relatvie date to field

Added custom relative date to `last_status_time` input for worker view.

✅ Closes: ICU-5247

* refactor: 💡 refactored yaml file

changed delete dropdown for worker to `actions.delete`

✅ Closes: ICU-5247

* Removed unused services from workers.js

* merge changes from main

* fix lint

* fix lint

* Update index.hbs

lint issues

* refactor: 💡 fixed lint for hbs

fixed linting issues for hbs files

✅ Closes: ICU-5247 ICU-5249

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-08-29 10:24:41 -04:00
lisbet-alvarezandZhihe Li 0dff900795 test: 💍 Add acceptance tests for reading an spk credential (#1275)
Acceptance tests for spk type credentials added to read-test.js

✅ Closes: ICU-5653

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-08-26 09:54:10 -07:00
Devon AndersonandZhihe Li a3517e53a8 chore: 🤖 create relative date helper (#1276)
* chore: 🤖 create relative date helper

Create a relative date helper that outputs "time" ago format.

✅ Closes: ICU-5847

* Update addons/core/addon/helpers/relative-datetime-live.js

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

* refactor: 💡 refactor test for relative-date-helper

refactor test for relative-datetime-live helper

✅ Closes: ICU-5847

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-08-26 12:22:24 -04:00
Zhihe Li 3130831ae0 feat: 🎸 Add create worker page (#1244)
* feat: 🎸 Add create worker page

✅ Closes: ICU-5246
2022-08-26 11:50:53 -04:00
Zhihe Li dd0d37241c feat: 🎸 Add code editor to api response display (#1271)
✅ Closes: ICU-5767
2022-08-26 11:01:23 -04:00
Cameron Perera 9a10b68bbe refactor: 💡 update credential serializer to delete password (#1277)
* refactor: 💡 update credential serializer to delete password

update credential serializer to delete password attribute if empty
string or null allowing the user to update just the username if needed.

✅ Closes: ICU-5731

* refactor: 💡 update serializer comments and test names
2022-08-25 17:02:48 -05:00
Zhihe Li 30b9f65251 chore: 🤖 Update electron to v16 (#1267)
✅ Closes: ICU-4018
2022-08-25 12:04:59 -04:00
fb981c02ea Icu 5651 create spk type (#1266)
Add functionality for creating a ssh private key credential and add
corresponding acceptance tests.

✅ Closes: ICU-5651

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
Co-authored-by: Randall Morey <randall@randallmorey.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2022-08-24 15:50:48 -07:00
Zhihe Li 1ee83dd1e6 chore: 🤖 Cleanup rose (#1270)
* refactor: 💡 Clean up use of classnames in rose

* fix: 🐛 Fix form action story using wrong disabled field
2022-08-22 16:17:06 -04:00
Dharini Jeeva 359614517e fix: 🐛 add translation string (#1268) 2022-08-18 15:50:53 -07:00
Dharini Jeeva 9a8665a314 Refactor credential sources to brokered credential sources (#1264)
* chore: 🤖 refactor credential sources to brokered credential source
2022-08-18 09:11:38 -07:00
Dharini Jeeva f4f7c0e343 fix: 🐛 disable scope (#1265) 2022-08-18 08:23:43 -07:00
lisbet-alvarezandCameron Perera dae5174d2f feat: 🎸 Update the credentials route to support both types (#1263)
Add query param to the credential route in order to support the new ssh
private key type

✅ Closes: ICU-5649

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-08-17 14:48:52 -07:00
Cameron Perera 53eef5caeb feat: 🎸 Add SSH Private Key mirage support (#1261)
* feat: 🎸 Add SSH Private Key mirage support

Update mirage to mock SSH Private key credential types

✅ Closes: ICU-5647

* refactor: 💡 remove default case in credential mirage mock
2022-08-17 13:20:21 -05:00
Cameron Perera 50038cdf85 Icu 5646 serializer (#1257)
* feat: 🎸 Update Credential Serializer

Add support for SSH Private Key credentials

✅ Closes: ICU-5646

* test: 💍 Add normalize test for ssh private key credentials

* refactor: 💡 remove deletion of hmac attributes in serializer
2022-08-16 14:35:33 -05:00
Randall Morey 7386b2c9ed refactor: 💡 deauth should delete the auth token (#1256) 2022-08-15 11:22:27 -07:00
Dharini Jeeva e3324ad64a chore: 🤖 rename application_credentials_sources_ids to brokered (#1255) 2022-08-15 09:48:12 -07:00
Cameron Perera 39c0835a99 feat: 🎸 Update credential model with ssh private key attributes (#1254)
✅ Closes: ICU-5645
2022-08-12 15:56:19 -05:00
lisbet-alvarez 29e3e8b843 feat: 🎸 Enable SSH Targets for development (#1239)
Enable SSH Targets for development ENV. Already enabled for testing ENV.

✅ Closes: ICU-5553
2022-08-12 10:33:05 -07:00
lisbet-alvarez 72b7b85ad1 chore: 🤖 remove filter feature flag (#1252)
✅ Closes: ICU-5599
2022-08-12 10:02:05 -07:00
Dharini Jeeva 9a1d1225ca chore: 🤖 remove unused oidc-account-crud feature flag (#1249) 2022-08-12 09:43:19 -07:00
Dharini Jeeva 33728a6496 chore: 🤖 remove managed_groups feature flag (#1253) 2022-08-12 09:27:02 -07:00
lisbet-alvarez bf2a6aeb6a chore: 🤖 remove oidc-crud feature flag (#1248)
* chore: 🤖 remove oidc-crud feature flag

✅ Closes: ICU-5597

* Update environment.js to resolve confilicts
2022-08-11 16:01:47 -07:00
Dharini Jeeva 746426fc82 chore: 🤖 cleanup feature flags - OIDC (#1245)
* chore: 🤖 cleanup OIDC feature flag
2022-08-11 15:37:44 -07:00
Randall Morey d8b5056094 fix: 🐛 fixes host set attributes field types (#1251) 2022-08-11 16:10:42 -04:00
lisbet-alvarez bdc2238f17 chore: 🤖 add got package to resolutions (#1243) 2022-08-11 12:41:34 -07:00
Zhihe Li 1842631056 fix: 🐛 Add feature flag for BYOW (#1250) 2022-08-11 13:47:22 -04:00
lisbet-alvarez 6f2a04d4c6 chore: 🤖 add async to resolutions (#1242) 2022-08-10 12:28:55 -07:00
Randall Morey e0b59b7d8b fix: 🐛 icu-5258 filter field is not sent in payload (#1238) 2022-08-10 11:58:12 -07:00
lisbet-alvarez fbf6b2c201 chore: 🤖 chore(deps): upgrade got package version (#1241)
add got to resolutions
2022-08-10 10:41:39 -07:00
lisbet-alvarez 7b212efcf2 chore: 🤖 Add terser to resolutions (#1237)
* chore: 🤖 bump terser from 4.8.0 to 4.8.1

* chore: 🤖 Update all terser dependency instances to 5.14.2
2022-08-10 10:15:13 -07:00
Dharini Jeeva ecb34d7427 chore: 🤖 dependency update (#1240) 2022-08-10 09:46:48 -07:00
Zhihe Li 4ab7304411 feat: 🎸 Added list view for workers (#1234)
* feat: 🎸 Add list view for workers

✅ Closes: ICU-5251
2022-08-09 16:12:56 -04:00
Devon AndersonandDharini Jeeva 62077d3c25 feat: 🎸 Add worker serializer (#1230)
* feat: 🎸 Add worker serializer

Add worker serializer that focus' on `config_tags.type` and
`canonical_tags.type`.
[API](https://docs.google.com/document/d/1G-lfl8gk9NfoKFImSpHb90E3xC3CSEVDwVy3bJ9eOhA/edit#heading=h.9e06o4b8etpi)

✅ Closes: ICU-5241

* refactor: 💡 refactored `models/worker.js`

Because `canonical_tags` and `config_tags` are `readOnly` attributes, we
could use `attr` decorator instead of `fragment`.

✅ Closes: ICU-5241

* refactored `model/worker.js and deleted un-needed files

* refactor: 💡 Refactored model/worker.js and created test

Refactored model/worker.js to include custom method for POST route for
adding new worker.

BREAKING CHANGE: 🧨 no

✅ Closes: ICU-5241

* refactor: 💡 Refactored custom POST route method for worker

Refactored custom method on `model/worker.js` to include serialization
for `worker_genrated_auth_token`

BREAKING CHANGE: 🧨 no

✅ Closes: ICU-5241

* refactor: 💡 Refactor test

Refactor model/worker-test.js and serializers/worker.js

BREAKING CHANGE: 🧨 no

✅ Closes: ICU-5241

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

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>

* update worker.js documentation block

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-08-09 15:34:42 -04:00
Dharini Jeeva 1f0baceb5e Icu 5476 refactor target model serializer and mirage (#1235)
chore: 🤖 refactor target model to support credentials
2022-08-08 09:21:07 -07:00
Cameron Perera 2cda4f639e refactor: 💡 update onSubmit for add-credential-sources (#1233)
Remove submit action from form component and pass selected credential
IDs directly to the submit method
2022-08-04 14:53:44 -05:00
Cameron Perera 9f09f01f36 Icu 5253 add query to include credentials (#1227)
* refactor: 💡 add-credential-sources to include credentials

* refactor: 💡 update add-credential-sources template

Update to how AddCredentialSources form is rendered in the template

✅ Closes: ICU-5253

* refactor: 💡 Update add-credential-sources method signatures

* refactor: 💡 change how add-credential-source form is rendered

* refactor: 💡 Remove duplicate add-credential-sources message

Remove the duplicate No Credential Credential Sources message from
add-credential-sources form

* refactor: 💡 Move filter logic to controller

Move credential source filter logic from route to controller for
add-credential-sources

* test: 💍 Verify all available credential sources are listed
2022-08-02 11:55:26 -05:00
dependabot[bot]andRandall Morey c8a76078ec chore(deps): bump json-pointer from 0.6.1 to 0.6.2 (#1224)
Bumps [json-pointer](https://github.com/manuelstofer/json-pointer) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/manuelstofer/json-pointer/releases)
- [Commits](https://github.com/manuelstofer/json-pointer/commits)

---
updated-dependencies:
- dependency-name: json-pointer
  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: Randall Morey <randall@randallmorey.com>
2022-08-01 14:35:23 -07:00
Zhihe Li 96b0ae3b06 Icu 5245 add workers tab to navigation and initial overview (#1229)
* feat: 🎸 Add initial workers UI navigation page

✅ Closes: ICU-5245
2022-08-01 16:04:41 -04:00
Cameron Perera bc6f849270 fix: 🐛 Fix routing issue for new credential stores (#1232) 2022-08-01 14:41:24 -05:00
Carlos Alcaide Corvo 2fcfab7c1c refactor: 💡 Deprecate faker to use @faker-js (#1223) 2022-08-01 14:25:07 -04:00
lisbet-alvarez 210296f298 refactor: 💡 Remove helper text for Username & Password (#1231)
Remove helper text for username and password fields in Credential form
as requested in a previous conversation.

✅ Closes: ICU-5459
2022-08-01 10:47:36 -07:00
Randall Morey c675f790ef fix: 🐛 change password route should not error (#1228) 2022-07-29 15:18:57 -07:00
Zhihe Li b722fa361b * feat: 🎸 Add code-editor component (#1207)
* feat: 🎸 Add code-editor component

Added code editor component which was taken from HCP, tweaked styles and
imports to use boundary assets

✅ Closes: ICU-5167
2022-07-29 17:18:07 -04:00
Randall Morey 40184006cd chore: 🤖 introduce hcp edition for naming consistency (#1225) 2022-07-29 10:10:40 -07:00
Randall Morey ec56d2fbbe fix: 🐛 role discard should not error (#1226) 2022-07-28 17:49:51 -07:00
Randall Morey bfc433dc38 feat: 🎸 add scope filtering to role/add-principals route (#1211)
* feat: 🎸 add scope filtering to role/add-principals route

* fix: 🐛 remove unnecessary helper

* feat: 🎸 add scope filtering to group add-members route
2022-07-28 17:34:03 -07:00
lisbet-alvarez f6e1fb0e3b Icu 5330 credentials crudl tests (#1219)
* test: 💍 Add credentials CRUDL tests

* fix: 🐛 Deleted empty files

* test: 💍 Add missing tests for credentials

* test: 💍 Revise tests in read-test.js

✅ Closes: ICU-5330
2022-07-28 15:34:03 -07:00
Zhihe Li 2b58e82d6d feat: 🎸 Add worker mirage mocks (#1217)
✅ Closes: ICU-5240
2022-07-28 14:57:53 -04:00
Zhihe Li a84e8c693e feat: 🎸 Add worker model (#1213)
✅ Closes: ICU-5239
2022-07-28 14:33:23 -04:00
Michele Degges dcf24478bd [CI-only] Add build job for HCPb variant (#1221)
This new job mirrors the enterprise build job, but lets us keep the existing logic laid out in https://github.com/hashicorp/boundary/blob/main/.github/workflows/build.yml#L136 to download the right UI artifacts based on the boundary variant/edition.
2022-07-28 08:39:01 -07:00
Carlos Alcaide Corvo 04d14005c0 Fix runtime-settings to not access directly the private variable (#1220) 2022-07-27 11:14:59 -07:00
Carlos Alcaide Corvo 4fcb005a1f Refactor origin to cluster (#1210) 2022-07-27 10:25:01 -07:00
lisbet-alvarez 40ba4286d3 refactor: 💡 Edit a credentail (#1218)
Password input field is now only viewable after user clicks on "Edit
Form"

✅ Closes: ICU-5180
2022-07-27 09:20:03 -07:00
Dharini Jeeva 409e68de1e chore: 🤖 add delete and patch mirage request for credential (#1216) 2022-07-26 13:35:04 -07:00
Cameron Perera 32ba330889 fix: 🐛 spelling error in getting started on desktop redirect (#1215) 2022-07-26 13:39:39 -05:00
lisbet-alvarez f00da3d8d7 test: 💍 credential store CRUDL tests (#1212)
Revised acceptance tests to reflect two types of credential stores

✅ Closes: ICU-5329

* test: 💍 credential store CRUDL tests

* test: 💍 small addition to type of cred. store

* test: 💍 Add missing vault cred. store type tests

* fix: 🐛 rename variable in read-test.js
2022-07-26 10:02:29 -07:00
Cameron Perera f51c56b4a1 feat: 🎸 Add doc link to Credential screens (#1214)
✅ Closes: ICU-5317
2022-07-26 11:04:01 -05:00
Cameron Perera d996d085a1 Icu 5335 add doc link for credential store screens (#1208)
* feat: 🎸 Add doc links to Credential Store screens

✅ Closes: ICU-5335

* test: 💍 Add tests for Credential Store doc links
2022-07-25 12:03:21 -05:00
9274849622 feat: 🎸 display credentials for static credential store (#1205)
* feat: 🎸 Create Credential Model in API

✅ Closes: ICU-5229

* feat: 🎸 update credential model

Add attributes to credential model

✅ Closes: ICU-5229

* feat: 🎸 no verify

✅ Closes: ICU-5230

* feat: 🎸 Add credential serializer and tests

✅ Closes: ICU-5230

* feat: 🎸 Add credential serializer

Credential serializer along with unit tests were added.

✅ Closes: ICU-5230

* feat: 🎸 Credential serializer & unit tests

✅ Closes: ICU-5230

* chore: 🤖 lint

* chore: 🤖 lint

* chore: 🤖 lint

* feat: 🎸 display credentials for static credential store

* chore: 🤖 update translated string

* feat: 🎸 create a credential

* fix: 🐛 add dropdown link for create new credential

* Update new.js

* Update credentials.js

* chore: 🤖 remove the commented block

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
Co-authored-by: Lisbet Alvarez <lisbet.alvarez@hashicorp.com>
Co-authored-by: lisbet-alvarez <107949262+lisbet-alvarez@users.noreply.github.com>
2022-07-25 11:42:34 -05:00
Cameron Perera ae0ce2bfad fix: 🐛 Add missing mirage config urls for credentials (#1209) 2022-07-22 12:29:53 -05:00
lisbet-alvarezandCameron Perera 27a676774c Icu 5232 credential mirage mocks (#1204)
* feat: 🎸 Add mirage mocks for credential

✅ Closes: ICU-5232

* chore: 🤖 Update Credential Store factory to handle credentials

✅ Closes: ICU-5232

* feat: 🎸 Added mirage mocks for credential

✅ Closes: ICU-5232

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-07-21 13:48:16 -07:00
Randall MoreyandDharini Jeeva 379609217b fix: 🐛 roles and principals on projects should be visible (#1202)
* fix: 🐛 roles and principals on projects should be visible

* Update ui/admin/app/routes/scopes/scope/roles/role/index.js

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-07-21 13:09:03 -07:00
Dharini Jeeva b31a513ec1 Create static credentials tab (#1203)
Create static credentials tab  (#1203)
2022-07-21 10:03:13 -07:00
lisbet-alvarezandCameron Perera 821b9b56a7 Icu 5230 credential serializer (#1200)
* feat: 🎸 Create Credential Model in API

✅ Closes: ICU-5229

* feat: 🎸 update credential model

Add attributes to credential model

✅ Closes: ICU-5229

* feat: 🎸 no verify

✅ Closes: ICU-5230

* feat: 🎸 Add credential serializer and tests

✅ Closes: ICU-5230

* feat: 🎸 Add credential serializer

Credential serializer along with unit tests were added.

✅ Closes: ICU-5230

* feat: 🎸 Credential serializer & unit tests

✅ Closes: ICU-5230

* fix: 🐛 Resolved commit conflicts

✅ Closes: ICU-5230

* fix: 🐛 deleted password_hmac from inside the serializer

✅ Closes: ICU-5230

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-07-20 12:34:18 -07:00
Randall Morey c1e1b42672 Feature cross scope role principals (#1199)
* chore: 🤖 add scope column to role principals and group members

* chore: 🤖 add recursion and filtering to user and group mocks

* feat: 🎸 expose groups and roles on projects

* feat: 🎸 enable cross-scope assignment of group members

* chore: 🤖 query group members in a single call via filtering

* chore: 🤖 query role prinicipals in two calls via filtering

* chore: 🤖 use const instead of let

* feat: 🎸 support adding cross-scope principals to roles
2022-07-19 15:18:30 -07:00
lisbet-alvarezandCameron Perera bd0189cf10 Icu 5229 credential model (#1197)
* feat: 🎸 Create Credential Model in API

✅ Closes: ICU-5229

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-07-19 13:02:04 -07:00
Randall Morey ca1b2ce278 Chore optimize iam queries (#1198)
* chore: 🤖 add scope column to role principals and group members

* chore: 🤖 add recursion and filtering to user and group mocks

* feat: 🎸 expose groups and roles on projects

* feat: 🎸 enable cross-scope assignment of group members

* chore: 🤖 query group members in a single call via filtering

* chore: 🤖 query role prinicipals in two calls via filtering

* chore: 🤖 use const instead of let
2022-07-19 12:11:16 -07:00
Dharini Jeeva bc76d49729 create static credential store form and route updates (#1195)
* chore: 🤖 static cred store support to route and templates
2022-07-19 09:29:43 -07:00
Randall Morey 94530cec9c Feature cross scope group members (#1196)
* chore: 🤖 add scope column to role principals and group members

* chore: 🤖 add recursion and filtering to user and group mocks

* feat: 🎸 expose groups and roles on projects

* feat: 🎸 enable cross-scope assignment of group members
2022-07-18 16:36:43 -07:00
Randall Morey 31cf696902 Feature expose roles groups in projects - ICU-4512 (#1192)
* chore: 🤖 add scope column to role principals and group members

* chore: 🤖 add recursion and filtering to user and group mocks

* feat: 🎸 expose groups and roles on projects
2022-07-18 16:15:51 -07:00
Randall Morey c2083aefab chore: 🤖 add recursion and filtering to user and group mocks - ICU-4528 (#1190)
* chore: 🤖 add scope column to role principals and group members

* chore: 🤖 add recursion and filtering to user and group mocks
2022-07-18 15:53:34 -07:00
Randall MoreyandCarlos Alcaide Corvo 817d2a44e1 chore: 🤖 add scope column to role principals and group members (#1184)
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2022-07-18 14:26:26 -07:00
Randall Morey bdabcc119e Refactor base scope fragment (#1166)
* refactor: 💡 migrate managed-group off fragments

* refactor: 💡 migrate credential-store off fragments

* refactor: 💡 migrate credential-library off fragments

* refactor: 💡 migrate account off fragments

* refactor: 💡 convert base model scope field to simple attr

* fix: 🐛 skip broken test
2022-07-18 11:30:53 -07:00
Dharini Jeeva b6a811cbbd fix: 🐛 filter out scopes with no auth methods (#1115)
* fix: 🐛 filter out scopes with no authenticatable auth methods
2022-07-18 09:08:09 -07:00
Dharini Jeeva 6c3e5ba4a8 chore: 🤖 add static credential store support (#1191)
* chore: 🤖 add static credential store support to the API layer
2022-07-15 13:24:04 -07:00
lisbet-alvarez b18f21e6f9 feat: 🎸 Read a credential store (#1193)
This change includes making static type credential stores clickable when
listing all credential stores, along with view the individual credential
store.

✅ Closes: ICU-5173
2022-07-15 12:39:45 -07:00
lisbet-alvarezandCameron Perera ed7e24b328 refactor: 💡 existing vault form field to radio group (#1189)
Refactored existing vault form field to use radio card instead. This
change is seen on details tab of a static credential store.

✅ Closes: ICU-5171

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-07-14 15:53:12 -07:00
Carlos Alcaide Corvo 66d115ab06 fix: 🐛 Add Hawk to resolutions (#1186) 2022-07-14 10:29:25 -07:00
Cameron Perera 9ad8eb93c7 refactor: 💡 Remove credential-store feature flag references (#1188) 2022-07-14 09:42:09 -05:00
lisbet-alvarez 970101d5dc feat: 🎸 Added the static-credentials feature flag (#1187)
The static-credentials feature flag was added and set to true only for
dev and test modes.

✅ Closes: ICU-5203
2022-07-13 14:11:02 -07:00
Cameron PereraandDharini Jeeva 985566d8eb docs: ✏️ Create README for translations (#1182)
✅ Closes: ICU-3872

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-07-13 11:17:13 -05:00
Carlos Alcaide Corvo 7234a3841a fix: 🐛 Add shell-quote to resolutions (#1185) 2022-07-12 14:55:31 -07:00
Dharini Jeeva 28c9e600aa Update content security (#1173)
* chore: 🤖 upgrade ember content security policy
2022-07-12 10:12:06 -07:00
Carlos Alcaide Corvo 163bbc9fb8 refactor: 💡 Refactor default values for target creation (#1180) 2022-07-12 08:36:35 -07:00
Carlos Alcaide Corvo b54e68cb86 chore: 🤖 Update ember-auto-import (#1178) 2022-07-12 08:09:49 -07:00
78585d999b feat: 🎸 switch to new token type parameter (#1082)
Boundary is deprecating the use of the token_type
parameter to the Authenticate endpoint, instead
replacing it with the new type parameter.

See https://github.com/hashicorp/boundary/commit/80b2c9230fa84605d9aaf7c862f780b50690a36e
for more context.

Co-authored-by: Randall Morey <randall@randallmorey.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
2022-07-11 16:39:20 -07:00
Carlos Alcaide Corvo ef9513fea9 fix: 🐛 Fix lock file discrepancy (#1183) 2022-07-11 14:47:04 -07:00
Dharini Jeeva 92fdacb635 test: 💍 onboarding tests (#1181) 2022-07-11 10:47:26 -07:00
Carlos Alcaide Corvo d16c50e33f chore: 🤖 Update ember-cli (#1176) 2022-07-11 09:49:50 -07:00
Zhihe Li 22e8971a5b chore: 🤖 Update git hook to not use commitizen on merges (#1177) 2022-07-07 15:58:39 -04:00
Carlos Alcaide Corvo f5c183a0bd chore: 🤖 Update Sinon to v14 (#1175) 2022-07-07 11:59:31 -07:00
Carlos Alcaide Corvo 49303469cb fix: 🐛 Fix ember-electron incorrect per dep (#1174) 2022-07-07 11:38:43 -07:00
Carlos Alcaide Corvo 6f8afbb7af Chore update eslint and plugins update (#1171) 2022-07-07 11:18:51 -07:00
Carlos Alcaide Corvo 923526ad26 chore: 🤖 Update electron to v15 (#1172) 2022-07-07 11:03:50 -07:00
Dharini Jeeva c21b8fdb64 chore: 🤖 update changelog (#1170)
* chore: 🤖 update changelog and bump up the binary version to 0.9.1
2022-07-06 13:13:57 -07:00
Carlos Alcaide CorvoandRandall Morey 60005f0233 chore: 🤖 Update @babel/plugin-proposal-decorators (#1157)
Update @babel/plugin-proposal-decorators

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-30 08:52:07 -04:00
Randall Morey da89e2f82e fix: 🐛 unable to filter for terminated sessions (#1169)
* fix: 🐛 unable to filter for terminated sessions

* fix: 🐛 reenable sessions mocks
2022-06-29 20:42:12 -04:00
Carlos Alcaide CorvoandRandall Morey c9d6f37343 chore: 🤖 Update @ember/test-helpers (#1159)
Update @ember/test-helpers

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 17:35:17 -04:00
Carlos Alcaide CorvoandRandall Morey 85e4b46821 Chore update doctoc (#1165)
* chore: 🤖 Update doc toc

Update doc toc

* chore: 🤖 Fix doctoc within core

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 16:26:36 -04:00
Carlos Alcaide CorvoandRandall Morey d464419e47 chore: 🤖 Update Cross OS (#1164)
Update Cross OS

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 15:28:46 -04:00
Carlos Alcaide CorvoandRandall Morey 021803942f chore: 🤖 Update babel-loader (#1163)
Update babel-loader

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 15:10:41 -04:00
Randall Morey eeba8dceb6 fix: 🐛 merge conflict in yarn.lock (#1168) 2022-06-29 14:10:59 -04:00
Carlos Alcaide CorvoandRandall Morey 8764633111 chore: 🤖 Update @hashicorp/flight-icons (#1162)
Update @hashicorp/flight-icons

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 13:00:27 -04:00
Carlos Alcaide CorvoandRandall Morey 9becadd3f1 chore: 🤖 Update @glimmer (#1161)
Update @glimmer

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 12:08:00 -04:00
Carlos Alcaide CorvoandRandall Morey 9f45a9a955 chore: 🤖 Update @ember/render-modifiers (#1158)
Update @ember/render-modifiers

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 11:34:31 -04:00
Carlos Alcaide CorvoandRandall Morey 51b94f7ac8 Chore update babel eslint parser (#1155)
* chore: 🤖 Fix merging conflicts

* chore: 🤖 Fix merging conflicts

Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-06-29 10:51:41 -04:00
Randall Morey 890cfe5168 Refactor attributes fragments (#1156)
* refactor: 💡 migrate managed-group off fragments

* refactor: 💡 migrate credential-store off fragments

* refactor: 💡 migrate credential-library off fragments

* refactor: 💡 migrate account off fragments
2022-06-28 19:30:26 -04:00
Dharini Jeeva fe225653ec fix: 🐛 overflow dropdown ui issue (#1160) 2022-06-28 13:13:09 -07:00
Carlos Alcaide Corvo dce7447880 chore: 🤖 Upgrade @babel/core (#1153)
Upgrade @babel/core
2022-06-28 11:08:16 -07:00
Carlos Alcaide Corvo 330c3de256 Chore upgrade desktop dependencies 2 (#1152) 2022-06-28 10:27:47 -07:00
Carlos Alcaide Corvo 2d15a62990 fix: 🐛 Lock file discrepancy (#1154)
Lock file discrepancy
2022-06-27 14:38:51 -07:00
Zhihe Li 62af6e2f6e Use precommit hooks (#1150)
* chore: 🤖 Add husky and hooks

* chore: 🤖 Add lint staged for fixing lint issues

* chore: 🤖 Use prettier and disable conflicting prettier rules

* docs: ✏️ Update commit documentation in README
2022-06-27 14:35:52 -04:00
Carlos Alcaide Corvo f50acc9913 Chore upgrade desktop dependencies (#1151) 2022-06-27 09:33:10 -07:00
Dharini Jeeva 2900692c6c chore: bump up release version and Update change log (#1141)
* chore: 🤖 update to changelog and release version
2022-06-20 13:15:34 -07:00
Cameron PereraandDharini Jeeva 193a7e9600 refactor: 💡 Remove template file to fix onboarding flow titles (#1148)
Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-06-20 12:01:25 -05:00
Dharini Jeeva 6b3091ea1b chore: 🤖 update to credential source (#1146) 2022-06-20 09:45:50 -07:00
Randall Morey 26baf8a80b fix: grant scope field should be functional (#1147) 2022-06-20 12:28:13 -04:00
Randall Moreyanddharini 4ef66fdd29 Add minimum support for static credential stores to admin UI (#1145)
* cred store read ability

* filter out static cred stores and credentials from credential libraries

* chore: 🤖 finish up minimum static cred store support

Co-authored-by: dharini <dharini@hashicorp.com>
2022-06-18 10:56:25 -04:00
Cameron Perera 52904dc639 Chore add onboarding role (#1142)
* chore: generate a role authorized to access the generated onboarding target
2022-06-16 16:11:11 -07:00
Cameron Perera f3a5ef5b7c refactor: 💡 Update routing to use project id in quick-start (#1140)
✅ Closes: ICU-4821
2022-06-15 15:06:09 -05:00
Randall Morey 7d8012ef1f chore: apply darker color theme to sidebar (#1139)
* chore: apply darker color theme to sidebar

* chore: hide global footer for now due to sidebar change
2022-06-15 14:27:08 -05:00
Cameron Perera 18434d4203 chore: 🤖 Disable ssh feature work (#1138)
Disable ssh feature
2022-06-15 10:42:49 -07:00
Cameron Perera d7e458ab85 refactor: 💡 Remove default value for IP address and port (#1137)
* refactor: 💡 Remove default value for IP address and port
2022-06-14 20:39:50 -07:00
Cameron Perera c5416e770a feat: 🎸 Add Controller URL component to Success screen (#1135)
* feat: 🎸 Add Controller URL component to Success screen

✅ Closes: ICU-4785

* style: 💄 Update Success screen styles to match wireframe

* refactor: 💡 Update class names to be more descriptive

* refactor: 💡 Update styles for Success card

* test: 💍 Fix failing test
2022-06-14 16:36:11 -05:00
Dharini Jeeva 2bb1c9cfec Chore onboarding route (#1136)
* fix: onboarding redirects
2022-06-14 14:21:48 -07:00
Dharini Jeeva 8bdd4416fc transition to target lists when the resource creation is successful (#1134)
* feat: 🎸  redirect the user to target lists within the project after successfully creating a resource.
2022-06-14 12:32:04 -07:00
Cameron Pereraanddharini a5da593f07 Create successful resource creation screen (#1132)
* feat: 🎸 Create successful resource creation screen

Create a screen with helpful information about Boundary once resources
have been created for the user

✅ Closes: ICU-4558

* style: 💄 remove stale comment

* chore: 🤖 resolve conflicts and merge main

Co-authored-by: dharini <dharini@hashicorp.com>
2022-06-14 09:33:51 -05:00
Randall MoreyandCameron Perera 15dc735322 chore: move onboarding to top level (#1131)
* chore: move onboarding to top level

* chore: add types

* Update ui/admin/app/routes/onboarding.js

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

* fix: broken paths

* chore: fix broken success route and simplify error handling

* fix: tests

Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
2022-06-13 16:38:18 -04:00
Dharini Jeeva d69b0f90d8 Icu 4556 create a quick setup screen (#1129)
* feat: 🎸 Create a resource onboarding form
2022-06-10 15:43:20 -07:00
Cameron Perera 0bb5989259 feat: 🎸 Create form to choose onboarding guide path (#1124)
* feat: 🎸 Create onboarding welcome form
2022-06-09 15:47:07 -07:00
Carlos Alcaide Corvo 106999746f docs: ✏️ Update docs for yarn scripts (#1101) 2022-06-08 14:05:56 -07:00
Carlos Alcaide Corvo d60ae81bdc Fix rose peer dependencies (#1128)
Fix Rose peer dependency warnings
2022-06-08 09:25:28 -07:00
Carlos Alcaide Corvo c7cb1fbbd8 chore: 🤖 Update electron from 13 to 14 (#1125)
Update electron from 13 to 14
2022-06-08 09:09:18 -07:00
Dharini Jeeva 8a05dbbc56 create new image component (#1127)
* feat:  create image component
2022-06-08 08:45:59 -07:00
Randall Morey dc78fe9028 Chore include terminated (#1126)
* chore: 🤖 add include_terminated=true when filtering terminated

* chore: 🤖 add include_terminated=true when filtering terminated
2022-06-07 15:40:33 -04:00
Randall MoreyandDharini Jeeva 24f630f084 Chore onboarding routing logic (#1123)
* chore: 🤖 stub out onboarding routes

* chore: initial onboarding routing logic

* chore: initial routing logic and resource creation

* chore: route "manual" to new org

* Update en-us.yaml

* fix: linting

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-06-03 13:25:53 -04:00
Cameron Perera d4ac887f7a Create CODEOWNERS file (#1122)
* chore: Create CODEOWNERS file

* chore: update CODEOWNERS

* chore: 🤖 finalize CODEOWNERS changes
2022-06-03 09:44:45 -05:00
Randall Morey 9fe8ce2c00 chore: 🤖 stub out onboarding routes (#1118) 2022-06-02 08:48:34 -04:00
Randall Morey af3cfb7298 chore: 🤖 generate more realistic mock IDs (#1117)
* chore: 🤖 generate more realistic mock IDs

* Update id.js
2022-06-01 14:02:18 -04:00
Zhihe Li df609dcf2c refactor: 💡 Update deprecated new window handler (#1111)
✅ Closes: ICU-4037
2022-05-20 12:53:52 -04:00
Zhihe Li 1b9f774937 fix: 🐛 Use more common hasOwnProperty and don't modify payload (#1112) 2022-05-19 17:52:10 -04:00
Randall Morey 509215f787 chore: 🤖 display auth method names in auth form, if available (#1113) 2022-05-19 15:56:48 -04:00
Carlos Alcaide Corvo 698160d423 refactor: 💡 Rename Admin UI enterprise artifact (#1110)
Rename Admin UI generated artifact for the enterprise edition.
2022-05-17 07:03:22 -07:00
Cameron PereraandDharini Jeeva 12b18510b9 refactor: 💡 Update language to use Sign In and Sign Out (#1109)
* refactor: 💡 Update language to use Sign In and Sign Out

Update authenticate/deauthenticate language to sign in and sign out
respectively

✅ Closes: ICU-3941

* refactor: 💡 Change translation keys back to (de)authenticate

Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
2022-05-16 17:28:45 -05:00
aa52b6f9bc fix: 🐛 Update validateOrigin to throw error on bad request (#1107)
* fix: 🐛 Update validateOrigin to throw error on bad request

If the result from netRequestPromise is successful but a not a 200
response, validateOrigin will throw an error

✅ Closes: ICU-4238

* Update ui/desktop/electron-app/src/models/runtime-settings.js

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

* refactor: 💡 Add comment as to why we don't throw error for 3xxs

* Update ui/desktop/electron-app/src/models/runtime-settings.js

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

* Update ui/desktop/electron-app/src/models/runtime-settings.js

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

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
Co-authored-by: Randall Morey <randall@randallmorey.com>
2022-05-16 12:20:56 -05:00
Dharini Jeeva ee47f8e19e fix: 🐛 add featureflag to target creation template (#1108)
* fix: 🐛 add featureflag to target creation template

* refactor: 💡 remove else block
2022-05-13 10:57:52 -07:00
Zhihe Li 97196368cb Fix Users page not updating fields correctly (#1105)
* fix: 🐛 Normalize update responses to track removed fields

✅ Closes: ICU-4189
2022-05-12 10:16:14 -04:00
Carlos Alcaide Corvo 7e792d3f76 Refactor UI generated artifacts creation. (#1104)
* Refactor UI generated artifacts creation. Now we generate OSS and enterprise specific artifacts

* Split builds in two separate jobs
2022-05-11 13:28:30 -07:00
Randall Morey f4df337761 chore: update github actions validator to depend on previous jobs (#1081) 2022-05-06 10:32:11 -04:00
Cameron Perera de44863d02 chore: 🤖 Add lzma-native to resolutions (#1103)
* chore: 🤖 Add lzma-native and appdmg to resolutions

* chore: 🤖 Remove appdmg resolution from electron-app

Tested that CI steps passed.
2022-05-05 17:35:53 -05:00
Cameron Perera e3f9feb474 Update polling interval to 300 seconds (5 minutes) (#1102)
Update polling interval to 300 seconds (5 minutes)
2022-05-05 11:43:07 -05:00
Carlos Alcaide Corvo 57410b7bb6 refactor: 💡 Avoid lint warning (#1095)
* refactor: 💡 Avoid lint warning
2022-05-05 08:28:41 -07:00
Carlos Alcaide Corvo 5e2c6ca0fd feat: 🎸 Add feature editions (#1094)
* feat: 🎸 Add feature editions
2022-05-05 07:42:02 -07:00
1926 changed files with 45834 additions and 18025 deletions

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
# Anyone attached to this rule will always been assigned to a pull request
* @hashicorp/boundary-ui
+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/**/*
+66 -15
View File
@@ -9,38 +9,89 @@ 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:
name: Build Admin UI
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'
key: node-modules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
node-modules-
- uses: actions/setup-node@v3
- name: Build
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: '16.x'
if: steps.node-modules-cache.outputs.cache-hit != 'true'
- run: yarn run build:ui:admin
- name: Upload artifact
uses: actions/upload-artifact@v3
node-version: 16
- run: yarn run build:ui:admin:oss
- name: Upload artifact admin-ui
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: admin-ui
path: ./ui/admin/dist/
path: ./ui/admin/dist/
- name: Upload artifact OSS admin UI
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: admin-ui-oss
path: ./ui/admin/dist/
build-admin-ui-enterprise:
name: Build Admin UI Enterprise
needs: [dependencies]
runs-on: ubuntu-latest
steps:
- 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-
- name: Build
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: 16
- run: yarn run build:ui:admin:enterprise
- name: Upload artifact enterprise admin UI
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: admin-ui-ent
path: ./ui/admin/dist/
build-admin-ui-hcp:
name: Build Admin UI HCP
needs: [dependencies]
runs-on: ubuntu-latest
steps:
- 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-
- name: Build
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: 16
- run: yarn run build:ui:admin:hcp
- name: Upload artifact HCP admin UI
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 }}"
+18 -21
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,54 +24,51 @@ 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:
name: Lint
needs: [dependencies]
needs: [dependencies, compliance]
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:
name: Test
needs: [dependencies]
needs: [lint]
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/}"
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn compliance:licenses
npx lint-staged
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
# Don't run commitizen for merge or squash commits
if [ "${COMMIT_SOURCE}" = merge ] || [ "${COMMIT_SOURCE}" = squash ];then
exit 0
fi
# This is to allow interaction with the terminal for commitizen
exec < /dev/tty && npx git-cz --hook || true
+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
+7 -7
View File
@@ -66,7 +66,6 @@ List of available project commands. `yarn run <command-name>`
|---------------------|---|
| build | Builds Admin UI. |
| test | Runs tests in CI mode. |
| commit | Replaces `git commit`, ensures compliance, audit, lint, and test checks pass before commit is allowed and normalizes commit messages across authors. |
| lint | Runs ember-template-lint on all of the hbs, js, and sass files. |
| compliance:audit | Checks for issues using `yarn audit` with moderate and above criticality.|
| compliance:licenses | Checks that all dependencies have OSS-compatible licenses. |
@@ -160,15 +159,16 @@ You will need to turn `off` mirage and run it: `$ ENABLE_MIRAGE=false yarn start
In login screen, authenticate using generated admin login name and password.
Enter the origin of your Boundary dev instance, by default is: `http://localhost:9200`.
Enter the cluster URL of your Boundary dev instance, by default is: `http://localhost:9200`.
### Committing
Instead of the default `git commit`, we prescribe a custom command that ensures
linting and other checks pass before a commit may be completed. It also ensures
that all contributors author consistent commit messages. To get started with a
commit, stage your files as usual. Then run `yarn commit` and follow the
on-screen instructions to author your message.
We use `husky` and `lint-staged` to ensure linting and other checks pass before a
commit is completed. Simply do a `yarn install` to make sure the hooks are installed.
Use a normal `git commit` to go through the checks, if you need to skip these checks,
use `git commit --no-verify` to bypass them. However, a consistent commit message will
still be enforced even if you use `--no-verify`.
#### License Checking
+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
+15 -20
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
'use strict';
module.exports = {
@@ -14,11 +19,7 @@ module.exports = {
// end of babel-config
},
plugins: ['ember'],
extends: [
'eslint:recommended',
'plugin:ember/recommended',
'plugin:prettier/recommended',
],
extends: ['eslint:recommended', 'plugin:ember/recommended', 'prettier'],
env: {
browser: true,
},
@@ -33,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,
+6 -1
View File
@@ -1,5 +1,10 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
'use strict';
module.exports = {
extends: 'octane',
extends: ['recommended', 'stylistic'],
};
+9 -2
View File
@@ -47,21 +47,28 @@ List of available project commands. `yarn run <command-name>`
| build:development | Builds the dummy app in development mode. |
| build | Builds the dummy app for production. |
| lint | Runs all lint commands. |
| lint:fix | Runs automatic lint fixes for all type of file. |
| lint:hbs | Runs lint for `hbs` template files. |
| lint:hbs:fix | Runs automatic lint fixes for `hbs` template files. |
| lint:js | Lints `js` files. |
| lint:js:fix | Runs automatic lint fixes for `js` files. |
| format | Runs all auto-formatters. |
| format:js | Auto-formats `js` files using Prettier. |
| start | Runs the dummy app local server. |
| test | Runs all tests. |
| test:all | Runs tests across multiple Ember versions with ember-try. |
| test:ember-compatibility | Runs tests across multiple Ember versions with ember-try. |
| precommit | Runs all lint and format. |
| doc:toc | Automatically generates a table of contents for this README file. |
Additional commands in the monorepo package may affect this projects.
## Linting
* `yarn lint:fix`
* `yarn lint:hbs`
* `yarn lint:hbs:fix`
* `yarn lint:js`
* `yarn lint:js --fix`
* `yarn lint:js:fix`
## Formatting
+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');
}
}
@@ -0,0 +1,20 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for credential.
*/
export default class CredentialLibraryAbility extends ModelAbility {
// =permissions
/**
* Only "known" credential library types may be read.
* @type {boolean}
*/
get canRead() {
return !this.model.isUnknown && this.hasAuthorizedAction('read');
}
}
@@ -0,0 +1,27 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
import { inject as service } from '@ember/service';
/**
* Provides abilities for credential store.
*/
export default class CredentialStoreAbility extends ModelAbility {
// =services
@service features;
// =permissions
/**
* Only "known" credential store types may be read.
* @type {boolean}
*/
get canRead() {
return this.features.isEnabled('static-credentials')
? this.hasAuthorizedAction('read')
: !this.model.isStatic && this.hasAuthorizedAction('read');
}
}
+20
View File
@@ -0,0 +1,20 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for credential.
*/
export default class CredentialAbility extends ModelAbility {
// =permissions
/**
* Only "known" credential types may be read.
* @type {boolean}
*/
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);
}
}
+14 -1
View File
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
@@ -30,10 +35,18 @@ export default class TargetAbility extends ModelAbility {
/**
* @type {boolean}
*/
get canAddCredentialSources() {
get canAddBrokeredCredentialSources() {
return this.hasAuthorizedAction('add-credential-sources');
}
/**
* @type {boolean}
*/
get canAddInjectedApplicationCredentialSources() {
return (
this.model.isSSH && this.hasAuthorizedAction('add-credential-sources')
);
}
/**
* @type {boolean}
*/
+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;
}
}
+20
View File
@@ -0,0 +1,20 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ModelAbility from './model';
/**
* Provides abilities for workers.
*/
export default class WorkerAbility extends ModelAbility {
// =permissions
/**
* @type {boolean}
*/
get canCreateWorkerLed() {
return this.hasAuthorizedCollectionAction('create:worker-led');
}
}
+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';
@@ -43,4 +48,20 @@ export default class GeneratedAccountModel extends BaseModel {
description: 'Current version number of this resource.',
})
version;
// =attributes (password)
@attr('string', {
for: 'password',
isNestedAttribute: true,
description: 'The account login name',
})
login_name;
// =attributes (OIDC)
@attr('string', { for: 'oidc', isNestedAttribute: true }) subject;
@attr('string', { for: 'oidc', isNestedAttribute: true }) issuer;
@attr('string', { for: 'oidc', isNestedAttribute: true, readOnly: true })
email;
@attr('string', { for: 'oidc', isNestedAttribute: true, readOnly: true })
full_name;
}
@@ -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';
@@ -44,4 +49,82 @@ export default class GeneratedCredentialLibraryModel extends BaseModel {
description: 'Current version number of this resource.',
})
version;
//= attributes (vault)
@attr('string', {
for: 'vault-generic',
isNestedAttribute: true,
description:
'The HTTP method the library uses when requesting credentials from Vault.',
defaultValue: () => 'GET',
})
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`.',
})
http_request_body;
@attr('string', {
isNestedAttribute: true,
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';
@@ -39,4 +44,91 @@ export default class GeneratedCredentialStoreModel extends BaseModel {
description: 'Current version number of this resource.',
})
version;
// =attributes (vault)
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description:
"The address to Vault server. This should be a complete URL such as 'https://127.0.0.1:8200'",
})
address;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description: 'The namespace within Vault to use.',
})
namespace;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description:
"A PEM-encoded CA certificate to verify the Vault server's TLS certificate.",
})
ca_cert;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description:
'Name to use as the SNI host when connecting to Vault via TLS.',
})
tls_server_name;
@attr('boolean', {
for: 'vault',
isNestedAttribute: true,
description: 'Whether or not to skip TLS verification.',
})
tls_skip_verify;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
isSecret: true,
description: 'A token used for accessing Vault.',
})
token;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description: 'The Vault token hmac.',
readOnly: true,
})
token_hmac;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description:
'A PEM-encoded client certificate to use for TLS authentication to the Vault server.',
})
client_certificate;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description:
"A PEM-encoded private key matching the client certificate from 'client_certificate'.",
})
client_certificate_key;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description: 'The Vault client certificate key hmac.',
readOnly: true,
})
client_certificate_key_hmac;
@attr('string', {
for: 'vault',
isNestedAttribute: true,
description:
'Filters to the worker(s) who can handle Vault requests for this cred store.',
})
worker_filter;
}
@@ -0,0 +1,95 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
/**
* A credential is a data structure containing one or more secrets that binds an
* identity to a set of permissions or capabilities on a host for a session.
*/
export default class GeneratedCredentialModel extends BaseModel {
// =attributes
@attr('string', {
description:
'The ID of the Credential Store of which this Credential is a part.',
})
credential_store_id;
@attr('string', {
description: 'The type of the resource, to help differentiate schemas',
})
type;
@attr('string', {
description: 'Optional name for identification purposes',
})
name;
@attr('string', {
description: 'Optional user-set description for identification purposes',
})
description;
@attr('date', {
description: 'The time this resource was created\nOutput only.',
readOnly: true,
})
created_time;
@attr('date', {
description: 'The time this resource was last updated\nOutput only.',
readOnly: true,
})
updated_time;
@attr('number', {
description: 'Current version number of this resource.',
})
version;
// =attributes (username_password, ssh_private_key)
@attr('string', {
for: ['username_password', 'ssh_private_key'],
isNestedAttribute: true,
description: 'The username for credential.',
})
username;
// =attributes (username_password)
@attr('string', {
for: 'username_password',
isNestedAttribute: true,
isSecret: true,
description: 'The password for credential.',
})
password;
// =attributes (ssh_private_key)
@attr('string', {
for: 'ssh_private_key',
isNestedAttribute: true,
isSecret: true,
description: 'The private key for credential.',
})
private_key;
@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';
@@ -44,4 +49,13 @@ export default class GeneratedManagedGroupModel extends BaseModel {
'The ID of the Auth Method that is associated with this ManagedGroup',
})
auth_method_id;
// =attributes (OIDC)
@attr('string', {
isNestedAttribute: true,
description:
'The boolean expression filter to use to determine membership. Comes in from API as "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';
+36 -1
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';
@@ -30,7 +35,6 @@ export default class GeneratedTargetModel extends BaseModel {
@attr('number', {
description: '',
defaultValue: 1,
})
session_connection_limit;
@@ -40,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,
@@ -61,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';
@@ -0,0 +1,75 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import BaseModel from '../../models/base';
import { attr } from '@ember-data/model';
/**
* Worker contains all fields related to a worker resource
*/
export default class GeneratedWorkerModel extends BaseModel {
// =attributes
@attr('string', {
description: 'Optional name for identification purposes.',
})
name;
@attr('string', {
description: 'Optional user-set description for identification purposes.',
})
description;
@attr('date', {
description: 'The time this resource was created\nOutput only.',
readOnly: true,
})
created_time;
@attr('date', {
description: 'The time this resource was last updated\nOutput only.',
readOnly: true,
})
updated_time;
@attr('number', {
description: 'Current version number of this resource.',
})
version;
@attr('string', {
description: 'The address that this worker is reachable at.\nOutput only.',
readOnly: true,
})
address;
@attr('date', {
description:
'The time this worker was last reported its status.\nOutput only.',
readOnly: true,
})
last_status_time;
@attr('string', {
description:
'The version of the Boundary binary the worker is running.\nOutput only.',
readOnly: true,
})
release_version;
@attr('number', {
description:
'The number of connections that this worker is currently handling.\nOutput only.',
readOnly: true,
})
active_connection_count;
@attr('string', {
description:
'The type of the worker, denoted by how it authenticates: pki or kms.\nOutput only.',
readOnly: true,
})
type;
}
@@ -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';
/**
+29 -10
View File
@@ -1,34 +1,53 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedAccountModel from '../generated/models/account';
import { fragment } from 'ember-data-model-fragments/attributes';
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
/**
* Attributes of this resource, if any, represented as a JSON fragment.
* @type {FragmentAccountAttributesModel}
* @type {boolean}
*/
@fragment('fragment-account-attributes', { defaultValue: {} }) attributes;
get isPassword() {
return this.type === TYPE_AUTH_METHOD_PASSWORD;
}
/**
* @type {boolean}
*/
@equal('type', 'password') isPassword;
get isOIDC() {
return this.type === TYPE_AUTH_METHOD_OIDC;
}
/**
* @type {boolean}
*/
@equal('type', 'oidc') isOIDC;
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('attributes.{email,full_name,login_name}')
get accountName() {
const { email, full_name, login_name } = this.attributes;
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 {}
+19 -5
View File
@@ -1,7 +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 { fragment } from 'ember-data-model-fragments/attributes';
import { computed } from '@ember/object';
import { inject as service } from '@ember/service';
/**
* Base model class provides common functionality for all models.
@@ -26,13 +31,16 @@ import { computed } from '@ember/object';
* 2) Or as an ID: `record.scopeID`.
*/
export default class BaseModel extends Model {
// =services
@service store;
// =relationships
/**
* Scope of this resource, if any, represented as a JSON fragment.
* @type {FragmentScope}
*/
@fragment('fragment-scope') scope;
@attr() scope;
// =attributes
@@ -51,10 +59,18 @@ 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();
json.scope_id = model.id;
json.type = model.type;
json.isGlobal = model.isGlobal;
json.isOrg = model.isOrg;
json.isProject = model.isProject;
this.scope = json;
}
}
@@ -85,7 +101,6 @@ export default class BaseModel extends Model {
/**
* @type {boolean}
*/
@computed('hasDirtyAttributes', 'isSaving')
get canSave() {
return this.hasDirtyAttributes && !this.isSaving;
}
@@ -93,7 +108,6 @@ export default class BaseModel extends Model {
/**
* @type {boolean}
*/
@computed('canSave')
get cannotSave() {
return !this.canSave;
}
+50 -15
View File
@@ -1,30 +1,65 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedCredentialLibraryModel from '../generated/models/credential-library';
import { attr } from '@ember-data/model';
import { fragment } from 'ember-data-model-fragments/attributes';
/**
* Enum options for credential library.
*/
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_CREDENTIAL_LIBRARY = Object.freeze([
TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC,
TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE,
]);
export default class CredentialLibraryModel extends GeneratedCredentialLibraryModel {
// =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_http_method;
@attr('string', { readOnly: true }) attributes_http_request_body;
@attr('string', { readOnly: true }) attributes_path;
// =attributes
/**
* Attributes of this resource, if any, represented as a JSON fragment.
* @type {FragmentCredentialLibraryAttributesModel}
* True if credential is an unknown type.
* @type {boolean}
*/
@fragment('fragment-credential-library-attributes', { defaultValue: {} })
attributes;
get isUnknown() {
return !TYPES_CREDENTIAL_LIBRARY.includes(this.type);
}
/**
* True if credential is a vault type.
* @type {boolean}
*/
get isVault() {
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;
}
}
+12 -23
View File
@@ -1,34 +1,23 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedCredentialStoreModel from '../generated/models/credential-store';
import { attr } from '@ember-data/model';
import { fragment } from 'ember-data-model-fragments/attributes';
import { equal } from '@ember/object/computed';
export const types = ['static', 'vault'];
export default class CredentialStoreModel extends GeneratedCredentialStoreModel {
// =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_address;
@attr('string', { readOnly: true }) attributes_namespace;
@attr('string', { readOnly: true }) attributes_ca_cert;
@attr('string', { readOnly: true }) attributes_tls_server_name;
@attr('string', { readOnly: true }) attributes_tls_skip_verify;
@attr('string', { readOnly: true }) attributes_token;
@attr('string', { readOnly: true }) attributes_client_certificate;
@attr('string', { readOnly: true }) attributes_client_certificate_key;
// =attributes
/**
* Attributes of this resource, if any, represented as a JSON fragment.
* @type {FragmentAuthMethodAttributesModel}
*/
@fragment('fragment-credential-store-attributes', { defaultValue: {} })
attributes;
/**
* @type {boolean}
*/
@equal('type', 'vault') isVault;
/**
* @type {boolean}
*/
@equal('type', 'static') isStatic;
}
+41
View File
@@ -0,0 +1,41 @@
/**
* 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', '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}
*/
get isStatic() {
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}
*/
get isUnknown() {
return !types.includes(this.type);
}
}
@@ -1,17 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
export default class FragmentAccountAttributesModel extends Fragment {
// =attributes (password)
@attr('string', {
for: 'password',
description: 'The account login name',
})
login_name;
// =attributes (OIDC)
@attr('string', { for: 'oidc' }) subject;
@attr('string', { for: 'oidc' }) issuer;
@attr('string', { for: 'oidc', readOnly: true }) email;
@attr('string', { for: 'oidc', readOnly: true }) full_name;
}
@@ -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,25 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
import { options } from './credential-library';
export default class FragmentCredentialLibraryAttributesModel extends Fragment {
//= attributes (vault)
@attr('string', {
description:
'The HTTP method the library uses when requesting credentials from Vault.',
defaultValue: () => options.http_method[0],
})
http_method;
@attr('string', {
description:
'The body of the HTTP request the library sends to Vault when requesting credentials. Only valid if `http_method` is set to `POST`.',
})
http_request_body;
@attr('string', {
description: 'The path in Vault to request credentials from.',
})
path;
}
@@ -1,72 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
export default class FragmentCredentialStoreAttributesModel extends Fragment {
// =attributes (vault)
@attr('string', {
for: 'vault',
description:
"The address to Vault server. This should be a complete URL such as 'https://127.0.0.1:8200'",
})
address;
@attr('string', {
for: 'vault',
description: 'The namespace within Vault to use.',
})
namespace;
@attr('string', {
for: 'vault',
description:
"A PEM-encoded CA certificate to verify the Vault server's TLS certificate.",
})
ca_cert;
@attr('string', {
for: 'vault',
description:
'Name to use as the SNI host when connecting to Vault via TLS.',
})
tls_server_name;
@attr('boolean', {
for: 'vault',
description: 'Whether or not to skip TLS verification.',
})
tls_skip_verify;
@attr('string', {
for: 'vault',
description: 'A token used for accessing Vault.',
})
token;
@attr('string', {
for: 'vault',
description: 'The Vault token hmac.',
readOnly: true,
})
token_hmac;
@attr('string', {
for: 'vault',
description:
'A PEM-encoded client certificate to use for TLS authentication to the Vault server.',
})
client_certificate;
@attr('string', {
for: 'vault',
description:
"A PEM-encoded private key matching the client certificate from 'client_certificate'.",
})
client_certificate_key;
@attr('string', {
for: 'vault',
description: 'The Vault client certificate key hmac.',
readOnly: true,
})
client_certificate_key_hmac;
}
@@ -1,16 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
export default class FragmentHostSourceModel extends Fragment {
// =attributes
@attr('string', {
description: 'ID of the related host source',
})
host_source_id;
@attr('string', {
description: 'ID of the catalog to which the host set belongs',
})
host_catalog_id;
}
@@ -1,12 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
export default class FragmentManagedGroupAttributesModel extends Fragment {
// =attributes (OIDC)
@attr('string', {
description:
'The boolean expression filter to use to determine membership.',
})
filter;
}
@@ -1,21 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { attr } from '@ember-data/model';
export default class FragmentPrincipal extends Fragment {
// =attributes
@attr('string', {
description: 'ID of the related scope',
})
scope_id;
@attr('string', {
description: 'ID of the related principal (user or group)',
})
principal_id;
@attr('string', {
description: 'Type of the related principal (user or group)',
})
type;
}
-42
View File
@@ -1,42 +0,0 @@
import Fragment from 'ember-data-model-fragments/fragment';
import { computed } from '@ember/object';
import { attr } from '@ember-data/model';
import { scopeTypes } from './scope';
export default class FragmentScope extends Fragment {
// =attributes
@attr('string', {
description: 'ID of the related scope',
})
scope_id;
@attr('string', {
description: 'The type of the resource',
})
type;
/**
* @type {boolean}
*/
@computed('type')
get isGlobal() {
return this.type === scopeTypes.global;
}
/**
* @type {boolean}
*/
@computed('type')
get isOrg() {
return this.type === scopeTypes.org;
}
/**
* @type {boolean}
*/
@computed('type')
get isProject() {
return this.type === scopeTypes.project;
}
}
@@ -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 -11
View File
@@ -1,18 +1,15 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedManagedGroupModel from '../generated/models/managed-group';
import { attr } from '@ember-data/model';
import { fragment } from 'ember-data-model-fragments/attributes';
import { A } from '@ember/array';
export default class ManagedGroupModel extends GeneratedManagedGroupModel {
// =attributes
// =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_filter;
/**
* Members is read-only under normal circumstances. But members can
* be persisted via calls to `addMembers()` or `removeMembers()`.
@@ -23,7 +20,4 @@ export default class ManagedGroupModel extends GeneratedManagedGroupModel {
emptyArrayIfMissing: true,
})
member_ids;
@fragment('fragment-managed-group-attributes', { defaultValue: {} })
attributes;
}
+141 -3
View File
@@ -1,7 +1,20 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedRoleModel from '../generated/models/role';
import { fragmentArray, array } from 'ember-data-model-fragments/attributes';
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
/**
@@ -11,7 +24,7 @@ export default class RoleModel extends GeneratedRoleModel {
* see obvious. Instead, the application layer is expected to load referenced
* users and groups as needed.
*/
@fragmentArray('fragment-principal', {
@attr('principal-array', {
readOnly: true,
emptyArrayIfMissing: true,
})
@@ -21,8 +34,133 @@ export default class RoleModel extends GeneratedRoleModel {
* Grant strings are read-only. But grants can be persisted via a dedicated
* call to `saveGrantStrings(grants)`.
*/
@array('string', { readOnly: true }) grant_strings;
@attr({ readOnly: true, emptyArrayIfMissing: true }) grant_strings;
/**
* Convenience for looking up the grant scope, if loaded.
*/
get grantScope() {
return this.grant_scope_id
? this.store.peekRecord('scope', this.grant_scope_id)
: 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';
+24 -4
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'];
/**
*
@@ -13,7 +21,7 @@ class SessionCredential {
/**
*
*/
static Library = class Library {
static Source = class Source {
id;
name;
description;
@@ -42,7 +50,7 @@ class SessionCredential {
// =attributes
rawCredential;
library;
source;
#payloadSecret;
/**
@@ -72,14 +80,18 @@ class SessionCredential {
// =methods
constructor(cred) {
const { id, name, description, type } = cred.credential_library;
this.library = new SessionCredential.Library(id, name, description, type);
const { id, name, description, type } = cred.credential_source;
this.source = new SessionCredential.Source(id, name, description, type);
this.#payloadSecret = cred.secret;
this.rawCredential = cred;
}
}
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}
*/
+147 -38
View File
@@ -1,35 +1,51 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedTargetModel from '../generated/models/target';
import { attr } from '@ember-data/model';
import { fragmentArray } from 'ember-data-model-fragments/attributes';
import { computed } from '@ember/object';
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 {
// =services
@service store;
// =attributes
@attr('number', {
isNestedAttribute: true,
description: 'The default port a target should use if present.',
})
default_port;
/**
* @type {[FragmentHostSourceModel]}
* @type Array
*/
@fragmentArray('fragment-host-source', {
@attr('host-source-id-array', {
readOnly: true,
emptyArrayIfMissing: true,
})
host_sources;
/**
* Credential source ids are read only and can be
* persisted via a dedicated call to `addCredentialSources()`.
* Brokered Credential source ids are read only and can be
* persisted via a dedicated call to `addBrokeredCredentialSources()`.
*/
@fragmentArray('fragment-string', {
@attr('string-array', {
readOnly: true,
emptyArrayIfMissing: true,
})
application_credential_source_ids;
brokered_credential_source_ids;
/**
* Injected Application Credential source ids are read only and can be
* persisted via a dedicated call to `addInjectedApplicationCredentialSources()`.
*/
@attr('string-array', {
readOnly: true,
emptyArrayIfMissing: true,
})
injected_application_credential_source_ids;
/**
* An array of resolved host set and host catalog instances. Model instances
@@ -37,7 +53,6 @@ export default class TargetModel extends GeneratedTargetModel {
* instances). Unresolvable instances are excluded from the array.
* @type {[{model: HostSetModel, hostCatalog: HostCatalogModel}]}
*/
@computed('host_sources.[]', 'store')
get hostSets() {
return this.host_sources
.map(({ host_source_id, host_catalog_id }) => ({
@@ -48,17 +63,38 @@ export default class TargetModel extends GeneratedTargetModel {
}
/**
* An array of resolved credential library instances. Model instances
* An array of resolved credential library and credential instances. Model instances
* must already be loaded into the store (this method will not load unloaded
* instances). Unresolvable instances are excluded from the array.
* @type {[CredentialLibraryModel]}
* @type {[CredentialLibraryModel, CredentialModel]}
*/
@computed('application_credential_source_ids.[]', 'store')
get credentialLibraries() {
return this.application_credential_source_ids
.map((source) =>
this.store.peekRecord('credential-library', source.value)
)
get brokeredCredentialSources() {
return this.brokered_credential_source_ids
.map((source) => {
if (source.value.startsWith('cred')) {
return this.store.peekRecord('credential', source.value);
} else {
return this.store.peekRecord('credential-library', source.value);
}
})
.filter(Boolean);
}
/**
* An array of resolved credential library and credential instances. Model instances
* must already be loaded into the store (this method will not load unloaded
* instances). Unresolvable instances are excluded from the array.
* @type {[CredentialLibraryModel, CredentialModel]}
*/
get injectedApplicationCredentialSources() {
return this.injected_application_credential_source_ids
.map((source) => {
if (source.value.startsWith('cred')) {
return this.store.peekRecord('credential', source.value);
} else {
return this.store.peekRecord('credential-library', source.value);
}
})
.filter(Boolean);
}
@@ -150,17 +186,20 @@ export default class TargetModel extends GeneratedTargetModel {
}
/**
* Adds credential libraries via the `add-credential-sources` method.
* Adds credential sources via the `add-credential-sources` method.
* See serializer and adapter for more information.
* @param {[string]} credentialLibraryIDs
* @param {[string]} brokeredCredentialSourceIDs
* @param {object} options
* @param {object} options.adapterOptions
* @return {Promise}
*/
addCredentialSources(credentialLibraryIDs, options = { adapterOptions: {} }) {
addBrokeredCredentialSources(
brokeredCredentialSourceIDs,
options = { adapterOptions: {} }
) {
const defaultAdapterOptions = {
method: 'add-credential-sources',
credentialLibraryIDs,
brokeredCredentialSourceIDs,
};
// There is no "deep merge" in ES.
return this.save({
@@ -173,20 +212,46 @@ export default class TargetModel extends GeneratedTargetModel {
}
/**
* Delete credential libraries via the `remove-credential-sources` method.
* Adds credential sources via the `add-credential-sources` method.
* See serializer and adapter for more information.
* @param {[string]} credentialLibraryIDs
* @param {[string]} injectedApplicationCredentialSourceIDs
* @param {object} options
* @param {object} options.adapterOptions
* @return {Promise}
*/
removeCredentialSources(
credentialLibraryIDs,
addInjectedApplicationCredentialSources(
injectedApplicationCredentialSourceIDs,
options = { adapterOptions: {} }
) {
const defaultAdapterOptions = {
method: 'add-credential-sources',
injectedApplicationCredentialSourceIDs,
};
// There is no "deep merge" in ES.
return this.save({
...options,
adapterOptions: {
...defaultAdapterOptions,
...options.adapterOptions,
},
});
}
/**
* Delete credential libraries and credentials via the `remove-credential-sources` method.
* See serializer and adapter for more information.
* @param {[string]} brokeredCredentialSourceIDs
* @param {object} options
* @param {object} options.adapterOptions
* @return {Promise}
*/
removeBrokeredCredentialSources(
brokeredCredentialSourceIDs,
options = { adapterOptions: {} }
) {
const defaultAdapterOptions = {
method: 'remove-credential-sources',
credentialLibraryIDs,
brokeredCredentialSourceIDs,
};
// There is no "deep merge" in ES.
return this.save({
@@ -199,21 +264,65 @@ export default class TargetModel extends GeneratedTargetModel {
}
/**
* Delete a single credential library set via the `remove-credential-sources` method.
* @param {number} credentialLibraryID
* Delete a single credential library/credential set via the `remove-credential-sources` method.
* @param {number} brokeredCredentialSourceID
* @param {object} options
* @return {Promise}
*/
removeCredentialSource(credentialLibraryID, options) {
return this.removeCredentialSources([credentialLibraryID], options);
removeBrokeredCredentialSource(brokeredCredentialSourceID, options) {
return this.removeBrokeredCredentialSources(
[brokeredCredentialSourceID],
options
);
}
/**
* Delete credential libraries and credentials via the `remove-credential-sources` method.
* See serializer and adapter for more information.
* @param {[string]} injectedApplicationCredentialSourceIDs
* @param {object} options
* @param {object} options.adapterOptions
* @return {Promise}
*/
removeInjectedApplicationCredentialSources(
injectedApplicationCredentialSourceIDs,
options = { adapterOptions: {} }
) {
const defaultAdapterOptions = {
method: 'remove-credential-sources',
injectedApplicationCredentialSourceIDs,
};
// There is no "deep merge" in ES.
return this.save({
...options,
adapterOptions: {
...defaultAdapterOptions,
...options.adapterOptions,
},
});
}
/**
* Delete a single credential library/credential set via the `remove-credential-sources` method.
* @param {number} injectedApplicationCredentialSourceID
* @param {object} options
* @return {Promise}
*/
removeInjectedApplicationCredentialSource(
injectedApplicationCredentialSourceID,
options
) {
return this.removeInjectedApplicationCredentialSources(
[injectedApplicationCredentialSourceID],
options
);
}
/**
* True if the target type is tcp.
* @type {boolean}
*/
get isTCP() {
return this.type === 'tcp';
return this.type === TYPE_TARGET_TCP;
}
/**
@@ -221,6 +330,6 @@ export default class TargetModel extends GeneratedTargetModel {
* @type {boolean}
*/
get isSSH() {
return this.type === 'ssh';
return this.type === TYPE_TARGET_SSH;
}
}
+6 -1
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';
@@ -40,7 +45,7 @@ export default class UserModel extends GeneratedUserModel {
* There are many options, so we fallback in order of precedence.
* @type {string}
*/
@computed('email,full_name,login_name,displayName')
@computed('email', 'full_name', 'login_name')
get accountName() {
const { email, full_name, login_name } = this;
return email || full_name || login_name;
+93
View File
@@ -0,0 +1,93 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import GeneratedWorkerModel from '../generated/models/worker';
import { attr } from '@ember-data/model';
export default class WorkerModel extends GeneratedWorkerModel {
// =attributes
/**
* Names are optional on models in our API. Thus we need to fallback on ID
* for display purposes.
* @type {string}
*/
get displayName() {
return this.name || this.id;
}
/**
* Returns whether the worker is a pki worker.
* @type {boolean}
*/
get isPki() {
return this.type === 'pki';
}
/**
* Returns the number of config tags present on the worker.
* @type {number}
*/
get tagCount() {
if (!this.config_tags) {
return 0;
}
return Object.values(this.config_tags).reduce(
(previousCount, currentTags) => previousCount + currentTags.length,
0
);
}
/**
* Returns the config tags as an array of key/value pair objects.
* @type {[object]}
*/
getConfigTagList() {
if (!this.config_tags) {
return null;
}
return Object.entries(this.config_tags).flatMap(([key, value]) =>
value.map((tag) => ({ key, value: tag }))
);
}
@attr({
description:
'The deduplicated union of the tags reported by the worker ' +
'from its configuration and any tags added through other means.\nOutput only.',
readOnly: true,
})
canonical_tags;
@attr({
description:
"The tags set in the worker's configuration file.\nOutput only.",
readOnly: true,
})
config_tags;
/**
* Method to modify the adapter to handle custom POST route for creating worker.
* @param {string} workerGeneratedAuthToken
* @param {object} options
* @param {object} options.adapterOptions
* @return {Promise}
*/
createWorkerLed(workerGeneratedAuthToken, options = { adapterOptions: {} }) {
const defaultAdapterOptions = {
method: 'create:worker-led',
workerGeneratedAuthToken,
};
return super.save({
...options,
adapterOptions: {
...defaultAdapterOptions,
...options.adapterOptions,
},
});
}
}
+6 -1
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 {
@@ -38,7 +43,7 @@ export default class AccountSerializer extends ApplicationSerializer {
delete serialized.attributes;
if (isNew) {
serialized.attributes = {};
const { issuer, subject } = snapshot.attr('attributes').record;
const { issuer, subject } = snapshot.record;
if (issuer) serialized.attributes.issuer = issuer;
if (subject) serialized.attributes.subject = subject;
}
+67 -10
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.
@@ -96,7 +104,7 @@ export default class ApplicationSerializer extends RESTSerializer {
delete serialized.scope;
// And serialize `scope_id`
if (this.serializeScopeID) {
const scope_id = snapshot?.attr('scope')?.attr('scope_id');
const scope_id = snapshot?.attr('scope')?.scope_id;
if (scope_id) serialized.scope_id = scope_id;
}
return serialized;
@@ -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,
@@ -137,7 +145,7 @@ export default class ApplicationSerializer extends RESTSerializer {
}
/**
* In our API, singluar resources are _unrooted_, whereas Ember Data expects
* In our API, singular resources are _unrooted_, whereas Ember Data expects
* them to be rooted under their model name, e.g. `{modelName: {…}}`.
* This method makes this transformation to accommodate Ember Data.
*
@@ -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.
@@ -199,19 +207,24 @@ export default class ApplicationSerializer extends RESTSerializer {
}
/**
* One consequence of using model fragments to represent the embedded scope
* is that they cannot have `id` fields. We still need to know scope IDs,
* so we copy the `scope.id` value into the `scope.scope_id` field.
* Hydrates the incoming scope JSON with additional boolean fields and
* delegates nested attributes and secrets normalization.
* @override
* @see FragmentScope
* @param {Model} typeClass
* @param {Object} hash
* @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;
if (scopeType) {
normalizedHash.scope.type = scopeType;
normalizedHash.scope.isGlobal = scopeType === 'global';
normalizedHash.scope.isOrg = scopeType === 'org';
normalizedHash.scope.isProject = scopeType === 'project';
}
normalizedHash = this.normalizeNestedAttributes(typeClass, normalizedHash);
normalizedHash = this.normalizeNestedSecrets(typeClass, normalizedHash);
return super.normalize(typeClass, normalizedHash);
@@ -268,4 +281,48 @@ export default class ApplicationSerializer extends RESTSerializer {
});
return hash;
}
/**
* If the API returns an updated response with removed fields, we need to
* explicitly set any read only field that is on the model but wasn't
* returned in the response to `null`.
* This will let ember data know the field was removed, otherwise
* it won't touch the removed field and will use the old value.
*
* @override
* @param {object} store
* @param {object} primaryModelClass
* @param {object} payload
* @param {?string} id
* @param {string} requestType
* @return {object}
*/
normalizeUpdateRecordResponse(
store,
primaryModelClass,
payload,
id,
requestType
) {
const newPayload = structuredClone(payload);
primaryModelClass.attributes.forEach((attribute) => {
const {
name,
options: { readOnly },
} = attribute;
if (readOnly && !Object.prototype.hasOwnProperty.call(newPayload, name)) {
newPayload[name] = null;
}
});
return super.normalizeUpdateRecordResponse(
store,
primaryModelClass,
newPayload,
id,
requestType
);
}
}
+8 -4
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);
@@ -81,13 +86,12 @@ export default class AuthMethodSerializer extends ApplicationSerializer {
*
* TODO: generalize this so that all zero values are reified.
* @override
* @see FragmentScope
* @param {Model} typeClass
* @param {Object} hash
* @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,3 +1,63 @@
import ApplicationSerializer from './application';
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
export default class CredentialLibrarySerializer extends ApplicationSerializer {}
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
/**
* @type {boolean}
*/
serializeScopeID = false;
/**
* @override
* @method serialize
* @param {Snapshot} snapshot
*/
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) {
// 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,3 +1,51 @@
import ApplicationSerializer from './application';
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
export default class CredentialStoreSerializer extends ApplicationSerializer {}
import ApplicationSerializer from './application';
export default class CredentialStoreSerializer extends ApplicationSerializer {
/**
* @override
* @method serialize
* @param {Snapshot} snapshot
*/
serialize(snapshot) {
switch (snapshot.record.type) {
case 'vault':
return this.serializeVault(...arguments);
case 'static':
default:
return this.serializeStatic(...arguments);
}
}
serializeVault() {
const serialized = super.serialize(...arguments);
if (serialized.attributes) {
// Client certificate key cannot be unset when certificate is set.
// If it's falsy, it must be removed.
if (
!serialized.attributes?.client_certificate_key &&
serialized.attributes?.client_certificate
)
delete serialized.attributes.client_certificate_key;
}
return serialized;
}
serializeStatic() {
const serialized = super.serialize(...arguments);
// Delete attributes for static cred store
delete serialized.attributes;
return serialized;
}
normalize(typeClass, hash, ...rest) {
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 = '';
return normalized;
}
}
@@ -0,0 +1,48 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationSerializer from './application';
export default class CredentialSerializer extends ApplicationSerializer {
/**
* @override
* @method serialize
* @param {Snapshot} snapshot
*/
/**
* @type {boolean}
*/
serializeScopeID = false;
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;
}
return serialized;
}
normalize(typeClass, hash, ...rest) {
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,26 +0,0 @@
import JSONSerializer from '@ember-data/serializer/json';
export default class FragmentAccountAttributesSerializer 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,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,27 +0,0 @@
import JSONSerializer from '@ember-data/serializer/json';
export default class FragmentCredentialLibraryAttributesSerializer extends JSONSerializer {
/**
* If an attribute is annotated as readOnly in the model, don't serialize it.
* Otherwise delegate to default attribute serializer.
* Only serialize http_request_body when `http_method` is set to `POST`.
* @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];
// Do not serialize http_request_body unless http_method is POST
if (key === 'http_request_body' && !json['http_method']?.match(/post/i))
delete json[key];
return value;
}
}
Loaded 100 of 1926 files, more files were not shown because too many files have changed in this diff. Show more