* PM-8367 - WIP - initial comp creation
* PM-8367 - Majority of new registration self hosted env config dialog working
* PM-8367 - RegistrationEnvSelectorComponent - add method handleSelfHostedEnvConfigDialogResult and add toast for happy path.
* PM-8367 - Add validation TODO
* PM-8367 - RegistrationSelfHostedEnvConfigDialogComponent - Add validator
* PM-8367 - RegEnvSelector - Only show self hosted if the client is browser or desktop since we will be using the selector on web as well.
* PM-8367 - Registration start comp - add env selector
* PM-8367 - Registration start - add proper import for standalone comps.
* PM-8367 - Registration Start - get storybook fixed with registration env selector
* PM-8367 - Add self hosted server to web translations only for storybook
* PM-8367 - Add more storybook examples and update docs (WIP - need to test self hosted selection)
* PM-8367 - Registration Start - update stories
* PM-8367 - Env Selector now emits selected region so that parent comps can listen to it if needed.
* PM-8367 - Registration Start - wire up handler for selectedRegionChange so that the parent comp can successfully track isSelfHost and hide / show the terms / privacy policy checkbox
* PM-8367 - TODO cleanup
* PM-8367 - Registration start docs - stage gate is two words.
* PM-8367 - Per working session with Will, move top level provided services to app level instead of module level to solve dialog null injector errors.
* PM-8367 - Storybook working for self hosted env dialog
* PM-8367 - Add dialog scroll feature to bitDialog and implement in self hosted env dialog.
* PM-8367 - Revert bit dialog changes and scroll implementation.
* PM-8367 - Tweak registration start docs
* PM-8367 - Remove unused changeDetectorRef
* PM-8367 - Add docs per PR feedback
* PM-7392 - EncryptSvc - add new method for detecting if a simple string is an enc string.
* PM-7392 - TokenSvc - add checks when setting and retrieving the access token to improve handling around the access token encryption.
* PM-7392 - (1) Clean up token svc (2) export access token key type for use in tests.
* PM-7392 - Get token svc tests passing; WIP more tests to come for new scenarios.
* PM-7392 - Access token secure storage to disk fallback WIP but mostly functional besides weird logout behavior.
* PM-7392 - Clean up unnecessary comment
* PM-7392 - TokenSvc - refresh token disk storage fallback
* PM-7392 - Fix token service tests in prep for adding tests for new scenarios.
* PM-7392 - TokenSvc tests - Test new setRefreshToken scenarios
* PM-7392 - TokenSvc - getRefreshToken should return null or a value - not undefined.
* PM-7392 - Fix test name.
* PM-7392 - TokenSvc tests - clean up test names that reference removed refresh token migrated flag.
* PM-7392 - getRefreshToken tests done.
* PM-7392 - Fix error quote
* PM-7392 - TokenSvc tests - setAccessToken new scenarios tested.
* PM-7392 - TokenSvc - getAccessToken - if secure storage errors add error to log.
* PM-7392 - TokenSvc tests - getAccessToken - all new scenarios tested
* PM-7392 - EncryptSvc - test new stringIsEncString method
* PM-7392 - Main.ts - fix circ dep issue.
* PM-7392 - Main.ts - remove comment.
* PM-7392 - Don't re-invent the wheel and simply use existing isSerializedEncString static method.
* PM-7392 - Enc String - (1) Add handling for Nan in parseEncryptedString (2) Added null handling to isSerializedEncString. (3) Plan to remove encrypt service implementation
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* PM-7392 - Remove encrypt service method
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* PM-7392 - Actually fix circ dep issues with Justin. Ty!
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* PM-7392 - TokenSvc - update to use EncString instead of EncryptSvc + fix tests.
* PM-7392 - TokenSvc - (1) Remove test code (2) Refactor decryptAccessToken method to accept access token key and error on failure to pass required decryption key to method.
* PM-7392 - Per PR feedback and discussion, do not log the user out if hte refresh token cannot be found. This will allow users to continue to use the app until their access token expires and we will error on trying to refresh it. The app will then still work on a fresh login for 55 min.
* PM-7392 - API service - update doAuthRefresh error to clarify which token cannot be refreshed.
* PM-7392 - Fix SetRefreshToken case where a null input would incorrectly trigger a fallback to disk.
* PM-7392 - If the access token cannot be refreshed due to a missing refresh token or API keys, then surface an error to the user and log it so it isn't a silent failure + we get a log.
* PM-7392 - Fix CLI build errors
* PM-7392 - Per PR feedback, add missing tests (thank you Jake for writing these!)
Co-authored-by: Jake Fink <jfink@bitwarden.com>
* PM-7392 - Per PR feedback, update incorrect comment from 3 releases to 3 months.
* PM-7392 - Per PR feedback, remove links.
* PM-7392 - Per PR feedback, move tests to existing describe.
* PM-7392 - Per PR feedback, adjust all test names to match naming convention.
* PM-7392 - ApiService - refreshIdentityToken - log error before swallowing it so we have a record of it.
* PM-7392 - Fix copy for errorRefreshingAccessToken
* PM-7392 - Per PR feedback, move error handling toast responsibility to client specific app component logic reached via messaging.
* PM-7392 - Swap logout reason from enum to type.
* PM-7392 - ApiService - Stop using messaging to trigger toast to let user know about refresh access token errors; replace with client specific callback logic.
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* PM-7392 - Per PR feedback, adjust enc string changes and tests.
* PM-7392 - Rename file to be type from enum
* PM-7392 - ToastService - we need to await the activeToast.onHidden observable so return the activeToast from the showToast.
* PM-7392 - Desktop AppComp - cleanup messaging
* PM-7392 - Move Logout reason custom type to auth/common
* PM-7392 - WIP - Enhancing logout callback to consider the logout reason + move show toast logic into logout callback
* PM-7392 - Logout callback should simply pass along the LogoutReason instead of handling it - let each client's message listener handle it.
* PM-7392 - More replacements of expired with logoutReason
* PM-7392 - More expired to logoutReason replacements
* PM-7392 - Build new handlers for displaying the logout reason for desktop & web.
* PM-7392 - Revert ToastService changes
* PM-7392 - TokenSvc - Replace messageSender with logout callback per PR feedback.
* PM-7392 - Desktop App comp - replace toast usage with simple dialog to guarantee users will see the reason for them being logged out.
* PM-7392 - Web app comp - fix issue
* PM-7392 - Desktop App comp - don't show cancel btn on simple dialogs.
* PM-7392 - Desktop App comp - Don't open n simple dialogs.
* PM-7392 - Fix browser build
* PM-7392 - Remove logout reason from CLI as each logout call handles messaging on its own.
* PM-7392 - Previously, if a security stamp was invalid, the session was marked as expired. Restore that functionality.
* PM-7392 - Update sync service logoutCallback to include optional user id.
* PM-7392 - Clean up web app comp
* PM-7392 - Web - app comp - only handle actually possible web logout scenarios.
* PM-7392 - Browser Popup app comp - restore done logging out message functionality + add new default logout message
* PM-7392 - Add optional user id to logout callbacks.
* PM-7392 - Main.background.ts - add clarifying comment.
* PM-7392 - Per feedback, use danger simple dialog type for error.
* PM-7392 - Browser Popup - add comment clarifying expectation of seeing toasts.
* PM-7392 - Consolidate invalidSecurityStamp error handling
* PM-7392 - Per PR feedback, REFRESH_ACCESS_TOKEN_ERROR_CALLBACK can be completely sync. + Refactor to method in main.background.
* PM-7392 - Per PR feedback, use a named callback for refreshAccessTokenErrorCallback in CLI
* PM-7392 - Add TODO
* PM-7392 - Re-apply bw.ts changes to new service-container.
* PM-7392 - TokenSvc - tweak error message.
* PM-7392 - Fix test
* PM-7392 - Clean up merge conflict where I duplicated dependencies.
* PM-7392 - Per discussion with product, change default logout toast to be info
* PM-7392 - After merge, add new logout reason to sync service.
* PM-7392 - Remove default logout message per discussion with product since it isn't really visible on desktop or browser.
* PM-7392 - address PR feedback.
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Jake Fink <jfink@bitwarden.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Added select-payment-method.component in shared lib
Because we're going to be implementing the same functionality for providers and orgs/users, I wanted to start moving some of this shared functionality into libs so it can be accessed in both web and bit-web. Additionally, the Stripe and Braintree functionality has been moved into their own services for more central management.
* Added generalized manage-tax-information component to shared lib
* Added generalized add-account-credit-dialog component to shared libs
* Added generalized verify-bank-account component to shared libs
* Added dialog for selection of provider payment method
* Added provider-payment-method component
* Added provider-payment-method component to provider layout
* add initial type filter
- use `bit-select` while the chip component is being developed
* get cipherTypes$ from service
- integrate with user settings
* initial add of folder selection
* initial add of vault selection
* initial add of collections filter
* update `VaultPopupListFilterService` to `VaultPopupListFiltersService`
* integrate hasFilterApplied$
* intermediate commit of integration to the filters component
* do not return the tree when the value is null
* return null when the updated option is null
* update vault-popup-list to conform to the chip select structure
* integration of bit-chip-select
* move "no folder" option to the end of the list
* show danger icon for deactivated organizations
* show deactivated warning when the filtered org is disabled
* update documentation
* use pascal case for constants
* store filter values as full objects rather than just id
- This allows secondary logic to be applied when filters are selected
* move filter form into service to be the source of truth
* fix tests after adding "jest-preset-angular/setup-jest"
* remove logic to have dynamic cipher type filters
* use ProductType enum
* invert conditional for less nesting
* prefer `decryptedCollections$` over getAllDecrypted
* update comments
* use a `filterFunction$` observable rather than having to pass filters back to the service
* fix children testing
* remove check for no folder
* reset filter form when filter component is destroyed
* add takeUntilDestroyed for organization valueChanges
* allow takeUntilDestroyed to use internal destroy ref
- The associated unit tests needed to be configured with TestBed rather than just `new Service()` for this to work
* use controls object for type safety
* add "jest-preset-angular/setup-jest" to browser app
* use flushPromises rather than await a dummy promise
* move the import of `page-script` into beforeAll rather than the describe scope
* invoke the sendMessage callback rather than relying on a promise comparison
* Create and register @bitwarden/generator-core
- Create libs/tools/generator/core
- Register new library within tsconfigs
- Register new library within eslint.configs
* Create and register @bitwarden/generator-extensions
- Create libs/tools/generator/extensions
- Register new library within tsconfigs
- Register new library within eslint.configs
* Create and register @bitwarden/generator-components
- Create libs/tools/generator/components
- Register new library within tsconfigs
- Register new library within eslint.configs
* Update libs/tools/generator/components/package.json
Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com>
* Update libs/tools/generator/extensions/package.json
Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com>
* Add empty barrel files for new libs
* Fix extension of test.environment
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com>
* Introduce additional options heading
Text will be needed for the UI changes later on anyway
* Move enableContextMenuItem from options.component to autofill.component
* Move copy TOTP automatically from options.component to autofill.component
* Move clearClipboard from options.component to autofill.component
* Move showCardsCurrentTab from options.component to autofill.component
* Move showIdentitiesCurrentTab from options.component to autofill.component
* Remove options.component as all controls have been migrated
Delete options.component
Import within AppModule
Delete obsolete route
Remove animation/page transition
Remove button from settings.component.html
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* use deep linked url for org invite instead of separate state
* remove organization invite state & fix tests
* clear login redirect for SSO JIT users since they are accepted when setting MP
* create accept org invite service and consolidate components in module
* finish switch to accept org invite service
* move logic to accept org service
* the rest of the owl
* clear org invite along with deep linked route
* pr feedback
* fix test and add error to catch null invite
* pr feedback
* clear stored invite if it doesn't match provided one
* Move/replace submit and userVerification logic from web into the BaseExportComponent
Add "@bitwarden/auth" as dependency to the vault-export-ui package
New submit logic also checks for password-encrypted exports which will be need for future UI updates on browser and desktop
* Create export-desktop component using shared recipe
Create new export component that uses the shared export.component from @bitwarden/vault-export-ui
* Update imports within AppModule
Remove old ExportComponent
Remove ExportScopeCalloutComponent as it's part of the BaseExportComponent
* Open new component when clicking on Export Vault menu item
* Add missing entries to messages.json
* Delete old export.component
* Remove duplicate verifyUser-method
* Change placeholder example
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Move/replace submit and userVerification logic from web into the BaseExportComponent
Add "@bitwarden/auth" as dependency to the vault-export-ui package
New submit logic also checks for password-encrypted exports which will be need for future UI updates on browser and desktop
* Create export-browser component using shared recipe
- Create new export component that uses the shared export.component from @bitwarden/vault-export-ui
* Update imports within AppModule
* Switch to route to the new component
* Add missing entries to messages.json
* Delete old export.component
* Remove duplicate verifyUser-method
* Change placeholder example
* Add documentation to protected members of ExportBrowserComponent
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* add hostname to footer via env service
* add logic for showing/hiding environment
* add docs
* add web env-selector
* refactor to use one slot for env-selector
* add storybook docs
* add env hostname to stories
* remove sample route
* [PM-8322] Firefox Inline Autofill Menu Not Propagation Correctly When Switching Tabs
* [PM-8322] Firefox Inline Autofill Menu Not Propagation Correctly When Switching Tabs
* Add missing RouterModule to the CurrentAccountComponent (#9295)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* [PM-6825] Browser Refresh - Initial List Items (#9199)
* [PM-6825] Add temporary vault page header
* [PM-6825] Expose cipherViews$ observable
* [PM-6825] Refactor getAllDecryptedForUrl to expose filter functionality for reuse
* [PM-6825] Introduce VaultPopupItemsService
* [PM-6825] Introduce initial VaultListItem and VaultListItemsContainer components
* [PM-6825] Add VaultListItems to VaultV2 component
* [PM-6825] Introduce autofill-vault-list-items.component to encapsulate autofill logic
* [PM-6825] Add temporary Vault icon
* [PM-6825] Add empty and no results states to Vault tab
* [PM-6825] Add unit tests for vault popup items service
* [PM-6825] Negate noFilteredResults placeholder
* [PM-6825] Cleanup new Vault components
* [PM-6825] Move new components into its own module
* [PM-6825] Fix missing button type
* [PM-6825] Add booleanAttribute to showAutofill input
* [PM-6825] Replace empty refresh BehaviorSubject with Subject
* [PM-6825] Combine *ngIfs for vault list items container
* [PM-6825] Use popup-section-header component
* [PM-6825] Use small variant for icon buttons
* [PM-6825] Use anchor tag for vault items
* [PM-6825] Consolidate vault-list-items-container to include list item component functionality directly
* [PM-6825] Add Tailwind classes to new Vault icon
* [PM-6825] Remove temporary header comment
* [PM-6825] Fix auto fill suggestion font size and padding
* [PM-6825] Use tailwind for vault icon styling
* [PM-6825] Add libs/angular to tailwind.config content
* [PM-6825] Cleanup missing i18n
* [PM-6825] Make VaultV2 standalone and cleanup Browser App module
* [PM-6825] Use explicit type annotation
* [PM-6825] Use property binding instead of interpolation
* [PM-7076] Create settings-v2.component (#9213)
* Create settings-v2.component
Create new settings page
Add routing based on extension refresh flag
* Wrap anchors around the icons
* Add account-switcher to settings page
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* [PM-8289] Inline menu content script does not update when user updates setting (#9279)
* [PM-8289] Inline menu content script does not update whne user updates setting
* [PM-8289] Fixing issue present within Jest tests
* [PM-8289] Triggering a reload of autofill scripts when a user logs into their account
---------
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Shane Melton <smelton@bitwarden.com>
* Change `object` to `Record<string, unknown>`
* Change `object` to `Record<string, unknown>` Pt. 2
* Update ForegroundSyncService
- Manage finish message in the listener to more gaurantee a message back
- Make the timeout much longer
- Allow it to throw if the background sync service threw
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Create the send-ui library package
Create folder
Create package.json
Create jest config
Create tsconfig and tsconfig.spec.json
Create README
Add empty barrel file for exporting future members
* Register @bitwarden/send-ui with all clients and libs
* Register with eslint
* Fix linting issue with README
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>