mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 07:43:35 +00:00
SM-310 [] Secrets (#3355)
* [SM-63] Secrets List overview (#3239) The purpose of this PR is to create a new component for the Secrets Manager project where all the secrets associated to a specific organization ID can be viewed. * [SM-63] Secrets List overview (#3239) The purpose of this PR is to create a new component for the Secrets Manager project where all the secrets associated to a specific organization ID can be viewed. * [SM-63] Display dates based off Figma (#3358) * Display dates based off Figma * Swapping date to medium format * [SM-185] Use feature flags for secrets (#3409) * Fix SM lint errors (#3526) * Fix SM lint errors * Update bitwarden_license/bit-web/src/app/sm/secrets/secrets.component.ts Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * [SM-65] Create/Edit Secrets Dialog (#3376) The purpose of this PR is to add a Create/Edit Secrets dialog component. * [SM-198] Empty Secrets View (#3585) * SM-198 Empty Secrets View * [SM-64] Soft delete secrets (#3549) * Soft delete secrets * SM-95-ProjectList (#3508) * Adding project list and creating a shared module for secrets * updates to style , temporarily using secrets results until API portion is completed * removing non project related options from the list, updting api call to call projects now * Adding view project option from drop down * Changes requested by Thomas * Changes requested by Thomas * suggested fixes * fixes after merge from master * Adding decrypting to project list * Update bitwarden_license/bit-web/src/app/sm/shared/sm-shared.module.ts Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Update bitwarden_license/bit-web/src/app/sm/projects/project.service.ts Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Update bitwarden_license/bit-web/src/app/sm/projects/project.service.ts Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * fix to projectRequest so name is type EncString instead of string * lint + prettier fixes * Oscar's suggestions - Removing this. from projectList * updating to use bitIconButton * Updating to use BitIconButton Co-authored-by: CarleyDiaz-Bitwarden <103955722+CarleyDiaz-Bitwarden@users.noreply.github.com> Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Fix double edit secret dialog (#3645) * Fix typescript errors on secrets init (#3649) * Resolve breaking changes * Remove unecessary class * SM-198 Update empty list text. (#3652) * [SM-267] Minor visual fixes (#3673) * SM-96: Add/Edit Project for SM (#3616) * SM-96: Initial add for Add/Edit project * Update secrets.module.ts * Small fixes based on PR comments * SM-96: Small fixes + fix new project creation * Fully fix create / edit project * SM-96: Update toast text * Remove message with exclamation * SM-96: Fix broken build * SM-96: Remove disabled on save buttons for SM dialogs & switch to early exits * SM-96: Run linter * [SM-186] Service Accounts - Overview (#3653) * SM-186 Service Accounts Overview * Remove duplicate titles (#3659) * [SM-187] Create Service Account Dialog (#3710) * SM-187 Create Service Account Dialog * Fix renamed paths * SM Modal Updates (#3776) * Add type=button to cancel button on sm dialogs * Update new secret/project modal titles to match design * Add loading spinner for project and secret edit modals * Add max length to project name * Use Tailwind CSS class instead of custom and remove click handler * Fix spinner * Add buttonType=primary to project dialog save button * Fix loading change for secret dialog and use tw-text-center Co-authored-by: Hinton <hinton@users.noreply.github.com> * [SM-113] Delete Projects Dialog (#3777) * SM-113 Add Delete Projects Dialog * [SM-306] Migrate secrets dialog to async form (#3849) * [SM-310] Prepare secrets manager for merge to master (#3885) * Remove Built In Validator on Project Delete (#3909) Handle all Project Delete validation through custom validator * [SM-312] Mark all inputs as touched when submitting (#3920) * Use new icon for no item (#3917) * Create navigation component (#3881) * [SM-150] Project / Secret mapping (#3912) * wip * removing added file * updates * handling projects and secrets mapping in UI * moving files and fixing errors * Update bitwarden_license/bit-web/src/app/secrets-manager/secrets/secrets-list.component.html Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Decrypt the name * fixing the secrets-list.component bug * renaming file and view name * lint fixes * removing secret with projects list response, and other misc name changes * Adding back things I shouldnt have deleted * Update bitwarden_license/bit-web/src/app/secrets-manager/secrets/responses/secret-with-projects-list.response.ts Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * updating button (#3779) * [SM-300] Access Tokens (#3955) * [SM-301] fix: associate labels with inputs (#4058) * fix: wrap input in label * fix: update all label in projects and service accounts * [SM-196] Create Access Token Dialog (#4095) * Add create access token dialog * Use ServiceAccountView for access token creation * Set version to readonly for access token * DRY up Expiration Date & bug fix * Break out expiration options component * Move expiration-options to layout; Match FIGMA * Create Generic Key generator * Add getByServiceAccountId * Change to use keyMaterial and not the full key * Use access token id, not service account * Remove generic key generator * Swap to service account name placeholder * Swap ExpirationOptions to a CVA * No longer masking according to FIGMA * Remove schema comment * Code review updates * Update required logic and approach * Move ExpirationOptionsComponent into access Co-authored-by: Hinton <hinton@users.noreply.github.com> * SM-99: Individual Project / Secrets Tab (#4011) Co-authored-by: Hinton <hinton@users.noreply.github.com> * Fixes for the demo (#4159) * [SM-360] Add support for never expiring access tokens (#4150) * Add support for never expiring access tokens * Render performance fixes * Update bitwarden_license/bit-web/src/app/secrets-manager/service-accounts/access/dialogs/expiration-options.component.ts Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * [SM-360] Fix access token display dialog for never expiring tokens (#4164) * Fix access token display dialog * Add disableClose to access token display dialog * [SM-299] Add license checks (#4078) * [SM-69] feature: create org-switcher, bit-nav-item, bit-nav-group, bit-nav-divider (#4073) * feat: create nav-item, nav-group, org-switcher * add tree variant; add stories; move to component library * render button if no link is present * fix routerLinkActive; add template comments; fix styles * update storybook stories * rename to route * a11y fixes * update stories * simplify tree nesting * rename nav-base component * add divider; finish org-switcher; add overview page skeleton * add nav-divider story * code review * rename components to CL naming scheme * fix iconButton focus color * apply code review changes * fix strict template route param * add ariaLabel input; update org-switcher a11y * add two way binding for nav-group open state; update stories * add toggle control to org-switcher * [SM-310] Disable Secrets Manager in QA (#4199) Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com> Co-authored-by: Thomas Avery <tavery@bitwarden.com> Co-authored-by: CarleyDiaz-Bitwarden <103955722+CarleyDiaz-Bitwarden@users.noreply.github.com> Co-authored-by: cd-bitwarden <106776772+cd-bitwarden@users.noreply.github.com> Co-authored-by: Colton Hurst <colton@coltonhurst.com> Co-authored-by: Will Martin <contact@willmartian.com>
This commit is contained in:
@@ -5,8 +5,7 @@ import { AccountApiService } from "@bitwarden/common/abstractions/account/accoun
|
||||
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
||||
import { LogService } from "@bitwarden/common/abstractions/log.service";
|
||||
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
|
||||
|
||||
import { Verification } from "../../../../../libs/common/src/types/verification";
|
||||
import { Verification } from "@bitwarden/common/types/verification";
|
||||
|
||||
@Component({
|
||||
selector: "app-delete-account",
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
},
|
||||
"flags": {
|
||||
"showTrial": true,
|
||||
"secretsManager": true,
|
||||
"showPasswordless": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
},
|
||||
"flags": {
|
||||
"showTrial": true,
|
||||
"secretsManager": false,
|
||||
"showPasswordless": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,12 @@ import {
|
||||
BadgeModule,
|
||||
ButtonModule,
|
||||
CalloutModule,
|
||||
DialogModule,
|
||||
FormFieldModule,
|
||||
IconButtonModule,
|
||||
IconModule,
|
||||
MenuModule,
|
||||
NavigationModule,
|
||||
TableModule,
|
||||
TabsModule,
|
||||
} from "@bitwarden/components";
|
||||
@@ -36,46 +38,55 @@ import "./locales";
|
||||
CommonModule,
|
||||
DragDropModule,
|
||||
FormsModule,
|
||||
InfiniteScrollModule,
|
||||
JslibModule,
|
||||
ReactiveFormsModule,
|
||||
InfiniteScrollModule,
|
||||
RouterModule,
|
||||
ToastrModule,
|
||||
JslibModule,
|
||||
|
||||
// Component library
|
||||
AsyncActionsModule,
|
||||
AvatarModule,
|
||||
BadgeModule,
|
||||
ButtonModule,
|
||||
CalloutModule,
|
||||
ToastrModule,
|
||||
BadgeModule,
|
||||
ButtonModule,
|
||||
MenuModule,
|
||||
DialogModule,
|
||||
FormFieldModule,
|
||||
IconModule,
|
||||
TabsModule,
|
||||
TableModule,
|
||||
AvatarModule,
|
||||
IconButtonModule,
|
||||
IconModule,
|
||||
MenuModule,
|
||||
NavigationModule,
|
||||
TableModule,
|
||||
TabsModule,
|
||||
|
||||
// Web specific
|
||||
],
|
||||
exports: [
|
||||
CommonModule,
|
||||
AsyncActionsModule,
|
||||
DragDropModule,
|
||||
FormsModule,
|
||||
InfiniteScrollModule,
|
||||
JslibModule,
|
||||
ReactiveFormsModule,
|
||||
InfiniteScrollModule,
|
||||
RouterModule,
|
||||
ToastrModule,
|
||||
JslibModule,
|
||||
|
||||
// Component library
|
||||
AsyncActionsModule,
|
||||
AvatarModule,
|
||||
BadgeModule,
|
||||
ButtonModule,
|
||||
CalloutModule,
|
||||
ToastrModule,
|
||||
BadgeModule,
|
||||
ButtonModule,
|
||||
MenuModule,
|
||||
DialogModule,
|
||||
FormFieldModule,
|
||||
IconModule,
|
||||
TabsModule,
|
||||
TableModule,
|
||||
AvatarModule,
|
||||
IconButtonModule,
|
||||
IconModule,
|
||||
MenuModule,
|
||||
NavigationModule,
|
||||
TableModule,
|
||||
TabsModule,
|
||||
|
||||
// Web specific
|
||||
],
|
||||
providers: [DatePipe],
|
||||
bootstrap: [],
|
||||
|
||||
@@ -5487,6 +5487,258 @@
|
||||
"multiSelectClearAll": {
|
||||
"message": "Clear all"
|
||||
},
|
||||
"projects":{
|
||||
"message": "Projects"
|
||||
},
|
||||
"lastEdited":{
|
||||
"message": "Last Edited"
|
||||
},
|
||||
"editSecret":{
|
||||
"message": "Edit Secret"
|
||||
},
|
||||
"addSecret":{
|
||||
"message": "Add Secret"
|
||||
},
|
||||
"copySecretName":{
|
||||
"message": "Copy Secret Name"
|
||||
},
|
||||
"copySecretValue":{
|
||||
"message": "Copy Secret Value"
|
||||
},
|
||||
"deleteSecret":{
|
||||
"message": "Delete Secret"
|
||||
},
|
||||
"deleteSecrets":{
|
||||
"message": "Delete Secrets"
|
||||
},
|
||||
"project":{
|
||||
"message": "Project"
|
||||
},
|
||||
"editProject":{
|
||||
"message": "Edit Project"
|
||||
},
|
||||
"viewProject":{
|
||||
"message": "View Project"
|
||||
},
|
||||
"deleteProject":{
|
||||
"message": "Delete Project"
|
||||
},
|
||||
"deleteProjects":{
|
||||
"message": "Delete Projects"
|
||||
},
|
||||
"secret":{
|
||||
"message": "Secret"
|
||||
},
|
||||
"serviceAccount":{
|
||||
"message": "Service Account"
|
||||
},
|
||||
"serviceAccounts":{
|
||||
"message": "Service Accounts"
|
||||
},
|
||||
"new":{
|
||||
"message": "New"
|
||||
},
|
||||
"secrets":{
|
||||
"message":"Secrets"
|
||||
},
|
||||
"nameValuePair":{
|
||||
"message":"Name/Value Pair"
|
||||
},
|
||||
"secretEdited":{
|
||||
"message":"Secret edited"
|
||||
},
|
||||
"secretCreated":{
|
||||
"message":"Secret created"
|
||||
},
|
||||
"newSecret":{
|
||||
"message":"New Secret"
|
||||
},
|
||||
"newServiceAccount":{
|
||||
"message":"New Service Account"
|
||||
},
|
||||
"importSecrets":{
|
||||
"message":"Import Secrets"
|
||||
},
|
||||
"secretsNoItemsTitle":{
|
||||
"message":"No secrets to show"
|
||||
},
|
||||
"secretsNoItemsMessage":{
|
||||
"message": "To get started, add a new secret or import secrets."
|
||||
},
|
||||
"serviceAccountsNoItemsTitle":{
|
||||
"message":"Nothing to show yet"
|
||||
},
|
||||
"serviceAccountsNoItemsMessage":{
|
||||
"message": "Create a new Service Account to get started automating secret access."
|
||||
},
|
||||
"searchSecrets":{
|
||||
"message":"Search Secrets"
|
||||
},
|
||||
"deleteServiceAccounts":{
|
||||
"message":"Delete Service Accounts"
|
||||
},
|
||||
"deleteServiceAccount":{
|
||||
"message":"Delete Service Account"
|
||||
},
|
||||
"viewServiceAccount":{
|
||||
"message":"View Service Account"
|
||||
},
|
||||
"searchServiceAccounts":{
|
||||
"message":"Search Service Accounts"
|
||||
},
|
||||
"addProject":{
|
||||
"message": "Add Project"
|
||||
},
|
||||
"projectEdited":{
|
||||
"message":"Project edited"
|
||||
},
|
||||
"projectSaved":{
|
||||
"message":"Project saved"
|
||||
},
|
||||
"projectCreated":{
|
||||
"message":"Project created"
|
||||
},
|
||||
"projectName":{
|
||||
"message":"Project Name"
|
||||
},
|
||||
"newProject":{
|
||||
"message":"New Project"
|
||||
},
|
||||
"softDeleteSecretWarning":{
|
||||
"message":"Deleting secrets can affect existing integrations."
|
||||
},
|
||||
"softDeletesSuccessToast":{
|
||||
"message":"Secrets sent to trash"
|
||||
},
|
||||
"serviceAccountCreated":{
|
||||
"message":"Service Account Created"
|
||||
},
|
||||
"smAccess":{
|
||||
"message":"Access"
|
||||
},
|
||||
"projectCommaSecret":{
|
||||
"message":"Project, Secret"
|
||||
},
|
||||
"serviceAccountName":{
|
||||
"message": "Service account name"
|
||||
},
|
||||
"newSaSelectAccess":{
|
||||
"message": "Type or Select Projects or Secrets"
|
||||
},
|
||||
"newSaTypeToFilter":{
|
||||
"message": "Type to Filter"
|
||||
},
|
||||
"deleteProjectsToast":{
|
||||
"message": "Projects deleted"
|
||||
},
|
||||
"deleteProjectToast":{
|
||||
"message": "The project and all associated secrets have been deleted"
|
||||
},
|
||||
"deleteProjectDialogMessage": {
|
||||
"message": "Deleting project $PROJECT$ is permanent and irreversible.",
|
||||
"placeholders": {
|
||||
"project": {
|
||||
"content": "$1",
|
||||
"example": "project name"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteProjectInputLabel": {
|
||||
"message": "Type \"$CONFIRM$\" to continue",
|
||||
"placeholders": {
|
||||
"confirm": {
|
||||
"content": "$1",
|
||||
"example": "Delete 3 Projects"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteProjectConfirmMessage":{
|
||||
"message": "Delete $PROJECT$",
|
||||
"placeholders": {
|
||||
"project": {
|
||||
"content": "$1",
|
||||
"example": "project name"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteProjectsConfirmMessage":{
|
||||
"message": "Delete $COUNT$ Projects",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteProjectsDialogMessage":{
|
||||
"message": "Deleting projects is permanent and irreversible."
|
||||
},
|
||||
"projectsNoItemsTitle":{
|
||||
"message": "No projects to display"
|
||||
},
|
||||
"projectsNoItemsMessage":{
|
||||
"message": "Add a new project to get started organizing secrets."
|
||||
},
|
||||
"smConfirmationRequired":{
|
||||
"message": "Confirmation required"
|
||||
},
|
||||
"bulkDeleteProjectsErrorMessage":{
|
||||
"message": "The following projects could not be deleted:"
|
||||
},
|
||||
"softDeleteSuccessToast":{
|
||||
"message":"Secret sent to trash"
|
||||
},
|
||||
"searchProjects":{
|
||||
"message":"Search Projects"
|
||||
},
|
||||
"accessTokens": {
|
||||
"message": "Access tokens"
|
||||
},
|
||||
"createAccessToken": {
|
||||
"message": "Create access token"
|
||||
},
|
||||
"expires": {
|
||||
"message": "Expires"
|
||||
},
|
||||
"canRead": {
|
||||
"message": "Can Read"
|
||||
},
|
||||
"accessTokensNoItemsTitle": {
|
||||
"message": "No access tokens to show"
|
||||
},
|
||||
"accessTokensNoItemsDesc": {
|
||||
"message": "To get started, create an access token"
|
||||
},
|
||||
"downloadAccessToken": {
|
||||
"message": "Download or copy before closing."
|
||||
},
|
||||
"expiresOnAccessToken": {
|
||||
"message": "Expires on:"
|
||||
},
|
||||
"accessTokenCallOutTitle": {
|
||||
"message": "Access tokens are not stored and cannot be retrieved"
|
||||
},
|
||||
"copyToken": {
|
||||
"message": "Copy token"
|
||||
},
|
||||
"accessToken": {
|
||||
"message": "Access token"
|
||||
},
|
||||
"accessTokenExpirationRequired": {
|
||||
"message": "Expiration date required"
|
||||
},
|
||||
"accessTokenCreatedAndCopied": {
|
||||
"message": "Access token created and copied to clipboard"
|
||||
},
|
||||
"accessTokenPermissionsBetaNotification": {
|
||||
"message": "Permissions management is unavailable for beta."
|
||||
},
|
||||
"revokeAccessToken": {
|
||||
"message": "Revoke Access Token"
|
||||
},
|
||||
"submenu": {
|
||||
"message": "Submenu"
|
||||
},
|
||||
"from": {
|
||||
"message": "From"
|
||||
},
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
/* eslint-disable-next-line @typescript-eslint/ban-types */
|
||||
export type Flags = {
|
||||
showTrial?: boolean;
|
||||
secretsManager?: boolean;
|
||||
showPasswordless?: boolean;
|
||||
} & SharedFlags;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user