* Add export-web.component
Introduce new export-web component
Delete old component
export.module - With export-web being standalone there's no need for a importModule
Change routing to load new component
* Prepare export.component to receive a orgId via the hosting-component
* Remove unused onSaved as it's replaced by onSuccessfulExport
* Refactor org-vault-export.component
Introduce new org-vault-export.component.html as the old component relied on the markup from password manager
Refactor org-vault-export.component
Retrieve organizationId from Route and pass it into the shared export.component
Ensure when exporting from AC to include all data from the selected org
org-vault-export.module - With the new component being standalone there's no need for a importModule
Change routing to load new org-vault-export component
* PM-8641 - Add success toast to base-export component
This ensures a success toast is shown on all clients consistently
Add missing entries into clients messages.json
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* [deps] Platform: Update argon2 to v0.40.1
* Update inclusion in context isolation
* Ensure node-gyp available for mac builds
Mac runners seem to have progressed above python 3.12, which removed `distutils`. We need to ensure it's installed for node-gyp compilations.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* utilizing locale service in duo
* refactor launchDuoUri method
* Add cookie information back in ext. and desktop to support backwards compatibility
* Update duo-redirect.ts
fixing comment
* Removed - button on passkeys and uris when user has view only access, disabled cog button and made input fields on uris readonly when user has view only access
(cherry picked from commit 077edd77c1)
* switched to use viewonly to hide remove button
(cherry picked from commit dbd854494f)
* Migrate all tools owned toasts to use CL ToastService instead of PlatformUtilsService
* Fix test that was missing a mock
* Fix double checking file and file-content selection
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* setup for InputPasswordComponent and basic story
* add all input fields
* add translated error messages
* update validation
* add password-callout
* update hint text
* use PolicyService in component
* setup SetPasswordComponent
* remove div
* add default button text
* add mocks for InputPassword storybook
* simplify ngOnInit
* change param and use PolicyApiService
* check for breaches and validate against policy
* user toastService
* use useValue for mocks
* hash before emitting
* validation cleanup and use PreloadedEnglishI18nModule
* add ngOnDestroy
* create validateFormInputsDoNotMatch fn
* update validateFormInputsComparison and add deprecation jsdocs
* rename validator fn
* fix bugs in validation fn
* cleanup and re-introduce services/logic
* toggle password inputs together
* update hint help text
* remove SetPassword test
* remove master key creation / hashing
* add translations to browser/desktop
* mock basic password-strength functionality
* add check for controls
* hash before emitting
* type the EventEmitter
* use DEFAULT_KDF_CONFIG
* emit master key
* clarify comment
* update password mininum help text to match org policy requirement
* PM-7324 - Register new registration start comp at signup route on web
* PM-7324 - Add registerSendVerificationEmail logic in API service layer.
* PM-7324 - Update registration start comp to actually send information to API and trigger email.
* PM-7324 - progress on opt in for marketing emails redesign.
* PM-7324 - Add feature flag and feature flag guard to sign up route.
* PM-7324 - RegistrationEnvSelector - emit initial value
* PM-7324 - Registration Start comp - wire up setReceiveMarketingEmailsByRegion logic.
* PM-7324 - Registration start html - use proper link for email pref management.
* PM-7324 - Translate text
* PM-7324 - Design pass
* PM-7324 - design pass v2
* PM-7324 - Update Tailwind config to add availability of anon layout to desktop and browser extension
* PM-7324 - Desktop - AppRoutingModule - Add new signup route protected by the email verification feature flag.
* PM-7324 - BrowserExtension - AppRoutingModule - Add signup route protected by feature flag
* PM-7324 - Feature flag all register page navigations to redirect users to the new signup page.
* PM-7324 - Update AnonLayoutWrapperComponent constructor logic to avoid passing undefined values into I18nService.t method
* PM-7324 - Accept org invite web comp - adjust register url and qParams
* PM-7324 - Add AnonLayoutWrapperData to desktop & browser since we don't need titleId.
* PM-7324 - Revert anon layout wrapper comp changes as they were made separately and merged to main.
* PM-7234 - Fix registration start component so the login route works for the browser extension.
* PM-7324 - Registration start story now building again + fix storybook warning around BrowserAnimationsModule
* PM-7324 - Registration Start - add missing tw-text-main to fix dark mode rendering.
* PM-7324 - Update storybook docs
* PM-7324 - Get stub of registration finish component so that the verify email has something to land on.
* PM-7324 - Registration start - receive marketing materials should never be required.
* PM-7324 - Add finish signup route + required translations to desktop & browser.
* PM-7324 - AnonLayoutWrapperComponent - Resolve issues where navigating to a sibling anonymous route wouldn't update the AnonLayoutWrapperData.
* PM-7324 - Remove unnecessary array
* PM-7324 - Per PR feedback, improve setReceiveMarketingEmailsByRegion
* PM-7324 - Per PR feedback, inject login routes via route data
* PM-7324 - Document methods in account api service
* PM-7324 - PR feedback - jsdoc tweaks
* Clone Initial Data In `runMigrator`
- When using test cases, mutating the input data causes problems.
* Migrate `minimizeOnCopy` & `browserIntegrationEnabled`
* Update From Main
* Move Fingerprint Setting
- No Migration Yet
* Add Fingerprint to Migrations
* Convert Messaging to `async`
* Switch to calling `Boolean` for Map Function
* Catch Errors
* Remove LogService
* 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>
* 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>
* 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>
* PM-5086 - WIP start on registration start component
* PM-5086 - more WIP progress on registration start comp
* PM-5086 - Setup secondary component
* PM-5086 - (1) Validation working (2) States implemented (3) 2nd state for check email mostly completed except for correct icon
* PM-5086 - Registration Start - check email state - update icon to be correct from figma.
* PM-5086 - Refactor self hosted conditional + actually hide the checkbox if it is self hosted.
* PM-5086 - WIP good progress on getting browser & desktop creating account on logic working.
* PM-5086 - Accessibility pass + WIP on region selector
* PM-5086 - Accessibility pass with Danielle
* PM-5086 - Migrate env selector logic to own component.
* PM-5086 - Update AnonLayoutWrapperComp import
* PM-5086 - Remove unncessary focus.
* PM-5086 - WIP first draft of registration env selector; name might change to differentiate it from existing env selector.
* PM-5086 - Rename env selector to be more clear and use registration-env-selector instead.
* PM-5086 - (1) Export registration env selector (2) Change comp name not just file name.
* PM-5086 - Create new registration page stub
* PM-5086 - Fix build issue where select module was missing from new registration env selector.
* PM-5086 - Registration --> registration start.
* PM-5086 - Add missing translation from registration-start-secondary-component to desktop & browser.
* PM-5086 - Add missing translations
* PM-5086 - Registration Env Selector - forms require form groups. duh.
* PM-5086 - Registration Env Selector - working now.
* PM-5086 - Registration Start desktop mostly working with env selector issues.
* PM-5086 - Registration start - get self hosted env dialog to close on close click. Backdrop click doesn't work but escape does still.
* PM-5086 - TODO: figure out if there is a better way to get the dialog to close.
* PM-5086 - Registration start - get goBack working to properly re-show env selector
* PM-5086 - Self Hosted Env Comp - re-emit current env on close so that select based env selectors can reset
* PM-5086 - RegistrationEnvSelector - Refactor init logic to also listen for env updates so that the user's choices on the self hosted settings dialog get communicated to this comp
* PM-5086 - Registration Start Desktop - Don't allow users to close dialog via escape as we need them to either close or save to get the env service to set the env correctly.
* PM-5086 - Browser Registration Start Page stub
* PM-5086 - Registration Start comp - storybook added
* PM-5086 - Remove links to start-registration as we aren't ready to implement that yet.
* PM-5086 - Revert environment comp changes.
* PM-5086 - Delete registration start pages.
* PM-5086 - Test removing PreloadedEnglishI18nModule to see if it fixes test failures
* PM-5086 - Try to resolve issues w/ importing PreloadedEnglishI18nModule into RegistrationStartComponent storybook stories file.
* PM-5086 - Allow translations to be imported for all libs.
* PM-5086 - Remove comment from JSON
* PM-5086 - TODO cleanup
* PM-5086 - Per PR feedback, fix display issues by using correct classes.
* PM-5086 - Fix SVG per PR feedback
* PM-5086 - Remove unnecessary methods
* PM-5086 - RegistrationEnvSelectorComponent - per PR feedback, properly type null in form group
* [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
* 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
* Remove import/passing of the unneeded UserVerificationService
* Remove app-user-verification from browser and desktop components as the new UI is opened as a self-contained dialog
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* replace `PasswordGeneratorService` with `legacyPasswordGenerationServiceFactory`
* replace `UsernameGeneratorService` with `legacyUsernameGenerationServiceFactory`
* migrate generator options and history
* apply policy immediately once available
* suppress duplicate policy emissions
* run password generation response code in `ngZone`
Process reload is the means by which we protect user keys in memory. once an account locks, it triggers a process reload (assuming no other accounts are unlocked), that frees renderer memory.
However, if the user is not unlocked, it is not protected by the process reload, so we may keep user keys in memory.
* Do not initialize symmetric crypto keys with null
* Require new message on invalid native message encryption
Handling of this error is to require the user to retry, so the promise needs to resolve.