* Don't put subscription to our server when it's existing
* Only update server when subscription-user associations change
---------
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Add comments to AuditService Abstraction
* Replace throttle usage with rxjs mergeMap with concurrent limit
* Add test cases for audit service
* Remove throttle
* Relax UUID validation
* Remove unneeded word boundaries
* Compress given the duplicated three parts
* Revert "Added separate function for GUID validation for passkeys (#6806)"
* Get userId from response if available
This is a small improvement for the Auth team which avoids inspection of the access token, sometimes.
* Initialize sdk clients with a userId
* return both Cipher and encryptedFor when encrypting a cipher
Update cipher api requests to include encryptedFor attribute
* Prefer named types with documentation
* Update sdk to latest
* Fixup types
* Fixup tests
* Revert getting userId from identity token response
---------
Co-authored-by: Shane <smelton@bitwarden.com>
* move `fullSync` contents to private methods in prep to storing the respective promise
* store in-flight sync so multiple calls to the sync service are avoided
* Revert "store in-flight sync so multiple calls to the sync service are avoided"
This reverts commit 233c8e9d4b.
* Revert "move `fullSync` contents to private methods in prep to storing the respective promise"
This reverts commit 3f686ac6a4.
* store inflight API calls for sync service
- This avoids duplicate network requests in a relatively short amount of time but still allows consumers to call `fullSync` if needed
* add debug log for duplicate sync
* first draft at an idea dependency graph
* ignore existing errors
* remove conflicting rule regarding internal platform logic in libs
* review: allow components to import from platform
* PM-20540 - TwoFactorAuthComponent - Refactor determineDefaultSuccessRoute to rely on user's auth status as the loginStrategyService's state is cleared after successful AuthN
* PM-20540 - DeepLinkGuard - Refactor to exempt login-initiated so that TDE + unlock with MP + deep link works.
* doc: Add documentation and change folder structure.
* test: add test for new excluded route.
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
* Add new encrypt service functions
* Undo changes
* Cleanup
* Fix build
* Fix comments
* Switch encrypt service to use SDK functions
* Add cose migration on userkey rotation
* Update sdk
* Set featureflag to default disabled
* Add tests
* Update sdk to build 168
* Make changes according to feedback
* Passed in userId on RemovePasswordComponent.
* Added userId on other references to KeyConnectorService methods
* remove password component refactor, test coverage, enabled strict
* explicit user id provided to key connector service
* redirect to / instead when user not logged in or not managing organization
* key connector service explicit user id
* key connector service no longer requires account service
* key connector service missing null type
* cli convert to key connector unit tests
* remove unnecessary SyncService
* error toast not showing on ErrorResponse
* bad import due to merge conflict
* bad import due to merge conflict
* missing loading in remove password component for browser extension
* error handling in remove password component
* organization observable race condition in key-connector
* usesKeyConnector always returns boolean
* unit test coverage
* key connector reactive
* reactive key connector service
* introducing convertAccountRequired$
* cli build fix
* moving message sending side effect to sync
* key connector service unit tests
* fix unit tests
* unit tests in wrong place after KM code ownership move
* infinite page reload
* failing unit tests
* failing unit tests
---------
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
* update names of vault nudge service and their corresponding files, convert components using showNudge$ to instead target spotlight and badges directly with new observables. Core logic for dismiss remains the same
* Created mappings for client domain object to SDK
* Add abstract decrypt observable
* Added todo for future consideration
* Added implementation to cipher service
* Added adapter and unit tests
* Created cipher encryption abstraction and service
* Register cipher encryption service
* Added tests for the cipher encryption service
* changed signature
* Updated feature flag name
* added new function to be used for decrypting ciphers
* Added new encryptedKey field
* added new function to be used for decrypting ciphers
* Manually set fields
* Added encrypted key in attachment view
* Fixed test
* Updated references to use decrypt with feature flag
* Added dependency
* updated package.json
* lint fix
* fixed tests
* Fixed small mapping issues
* Fixed test
* Added function to decrypt fido2 key value
* Added function to decrypt fido2 key value and updated test
* updated to use sdk function without prociding the key
* updated localdata sdk type change
* decrypt attachment content using sdk
* Fixed dependency issues
* updated package.json
* Refactored service to handle getting decrypted buffer using the legacy and sdk implementations
* updated services and component to use refactored version
* Updated decryptCiphersWithSdk to use decryptManyLegacy for batch decryption, ensuring the SDK is only called once per batch
* Fixed merge conflicts
* Fixed merge conflicts
* Fixed merge conflicts
* Fixed lint issues
* Moved getDecryptedAttachmentBuffer to cipher service
* Moved getDecryptedAttachmentBuffer to cipher service
* ensure CipherView properties are null instead of undefined
* Fixed test
* ensure AttachmentView properties are null instead of undefined
* Linked ticket in comment
* removed unused orgKey
* fix(enums-eslint): Enum Rule for ESLint - Added enums in the warnings for eslint.
* fix(enums-eslint): Enum Rule for ESLint - Updated to error in both places for enums.
* fix(enums-eslint): Enum Rule for ESLint - Added new eslint plugin for warning on enums.
* fix(enums-eslint): Enum Rule for ESLint - Changed based on suggestion.
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
* refactor(browser-platform-utils): Remove Deprecation and Fix Code - Changed usages of firefox to private and moved the usages to the preferred public method and removed the deprecations.
* fix(enums-eslint): Enum Rule for ESLint - Updated to error and added disable rules for all other places.
* fix(enums-eslint): Enum Rule for ESLint - Undid other changes by accident
* remove NewDeviceVerificationGuard and all associated entities. New Device verification feature has rolled out in production, this guard is no longer needed.
* remove unused properties from the vault profile service
* Improve dev logging
* Define decrypt with sdk flag
* Use SDK's pure crypto functions for decryption
feature flagged by `use-sdk-for-decryption`
* Avoid pushing decryption requests to web workers for SDK
web workers are able to use the SDK, but they require the SDK module to be initialized. If this is eventually seen as desired, we'll need client-specific worker scripts.
* Apply suggestions from code review
Co-authored-by: Bernd Schoolmann <mail@quexten.com>
* fixup! Apply suggestions from code review
* fixup: Update feature flag state in config callbacks
* Apply suggestions from code review
Co-authored-by: Bernd Schoolmann <mail@quexten.com>
---------
Co-authored-by: Bernd Schoolmann <mail@quexten.com>
* [PM-18707] Use different BroadcasterSubscriptionId in base view component to avoid collision with desktop view component
* [PM-18707] Use userId instead of payloadUserId for cipher notification syncs
* [PM-19032] Live Sync on Desktop (#13851)
* migrate the vault-items to an observables rather than async/promises
- this helps keep data in sync with the service state and avoids race conditions
* migrate the view component to an observables rather than async/promises
- this helps keep data in sync with the service state and avoids race conditions
* decrypt saved cipher from server
* bump timeout for upserting ciphers
* mark `go` as async in desktop vault
- previously it was a floating promise
* Revert "mark `go` as async in desktop vault"
This reverts commit fd28f40b18.
* Revert "bump timeout for upserting ciphers"
This reverts commit e963acc377.
* move vault utilities to `common` rather than `lib` to avoid circular dependencies
* use `perUserCache$` for `cipherViews$` to avoid new subscriptions from being created
* use userId from observable rather than locally set to be the most up to date
* [PM-18707] Add clearBuffer$ input to perUserCache$ helper so that the internal share replay buffers can be cleared
* [PM-18707] Rework forceCipherViews$ to clearBuffer$ refactor
- Add dependency for cipherDecryptionKeys$ for the cipherViews so that decryption is never attempted without keys
* [PM-18707] Add overload to perUserCache to satisfy type checker
* [PM-18707] Fix overloads
* [PM-18707] Add check for empty failed to decrypt ciphers
* [PM-18707] Mark vault component for check after observable emits.
The cipherViews$ observable now persists between subscriptions, meaning that updates via the sync push notifications can occur outside the AngularZone causing delays in updating the view.
---------
Co-authored-by: Nick Krantz <125900171+nick-livefront@users.noreply.github.com>
Co-authored-by: Nick Krantz <nick@livefront.com>
* feat: add foreground ipc service
* refactor: create abstract ipc service in libs
* wip: remove IPC service complexity
The code was making some wrong assumptions about how IPC is going to work. I'm removing everything and starting the content-script instead
* feat: working message sending from page to background
* refactor: move into common
* feat: somewhat complete web <-> browser link
* wip: ping command from web
* fix: import path
* fix: wip urls
* wip: add console log
* feat: successfull message sending (not receiving)
* feat: implement IPC using new refactored framework
* wip: add some console logs
* wip: almost working ping/pong
* feat: working ping/pong
* chore: clean-up ping/pong and some console logs
* chore: remove unused file
* fix: override lint rule
* chore: remove unused ping message
* feat: add tests for message queue
* fix: adapt to name changes and modifications to SDK branch
* fix: missing import
* fix: remove content script from manifest
The feature is not ready for prodution code yet. We will add dynamic injection with feature-flag support in a follow-up PR
* fix: remove fileless lp
* fix: make same changes to manifest v2
* fix: initialization functions
Add missing error handling, wait for the SDK to load and properly depend on the log service
* feat: use named id field
* chore: update sdk version to include IPC changes
* fix: remove messages$ buffer
* fix: forgot to commit package-lock
* feat: add additional destination check
* feat: only import type in ipc-message
* fix: typing issues
* feat: check message origin
* Remove AES128CBC-HMAC encryption
* Increase test coverage
* Refactor symmetric keys and increase test coverage
* Re-add type 0 encryption
* Fix ts strict warning
* Re-add support for encrypt hmac-less aes
* Add comment about inner()
* Update comment
* Deduplicate encryption type check
* Undo test changes
* Lift out encryption type check to before splitting by encryption type
* Change null to undefined
* Fix test
* [PM-17563] Implement listenForTaskNotifications in default-task.service.ts
* [PM-17563] Update syncService to include userId in syncCompleted message payload
* [PM-17563] Update default-task.service to react to both pending task notifications and completed syncs
* [PM-17563] Add unit tests around task notification listening
* [PM-17563] Only check for at risk password tasks if tasks are enabled
* [PM-17563] Make userId required even if undefined
* [PM-17563] Use abstract TaskService instead of default implementation in MainBackground
* [PM-17563] Cleanup userId filtering
* Extract getFeatureFlagValue to pure function
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Add broadcasting abstractions and OnServerConfigChange interface.
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Add implementation of onServerConfigChange on encrypt services
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Add onServerConfigChange implementation for encrypt worker
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Wire up broadcasting in dependency injection
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Add unit tests
* Handle subscribing for onServerConfigChange in init services
---------
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* docs: fix a typo
* fix(browser): restore timer-based background syncs
The browser extension was not performing scheduled background syncs every 30 minutes as expected. This was due to missing task scheduling code that was accidentally removed during the web push implementation (PR #11346).
This commit:
- Creates a new BackgroundSyncService to manage sync scheduling
- Properly initializes the sync interval in main.background.ts
- Adds a test to ensure the sync initialization code isn't accidentally removed again
- Organizes platform module structure to support the new service
Fixes PM-19396
* review: remove unecassary await keyword