* feat(device-approval-persistence): [PM-19380] Device Approval Persistence - Added lookup on standard auth requests.
* fix(device-approval-persistence): [PM-19380] Device Approval Persistence - Fixed issue with null value trying to be parsed from the fromJSON function.
---------
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
* feat(device-approval-persistence): [PM-9112] Device Approval Persistence - Added in view cache data needed to persist the approval process. Clears after 2 minutes.
Refactor toast calls out of auth services. Toasts are now triggered by an observable emission that gets picked up by an observable pipeline in a new `DeviceTrustToastService` (libs/angular). That observable pipeline is then subscribed by by consuming the `AppComponent` for each client.
* PM-18654 - State Service & Login Strategy Refactor - move env seeding into login strategy so that new accounts always load w/ the correct environment
* PM-18654 - SSO Comp - just use user id from auth result
* PM-18654 - Config Service - (1) don't allow cascading calls to the renewConfig by using a private promise (2) Replace shareReplay with share configured with manual timer
* PM-18654 - LoginComponents - detail issue and possible fix
* PM-18654 - DesktopLoginV1Comp - use correct destroy hook
* PM-18654 - LoginComp - clean up no longer correct comment
* PM-18654 - New Device Verification Component - Remove unused PasswordLoginStrategy dependency
* PM-18654 - Browser Home Component - fix qParam logic
* PM-18654 - DefaultConfigService - revert changes as they aren't necessary to fix the bug.
* PM-18654 - DefaultConfigService - remove commented code
* PM-18654 - LoginStrategy - add comment
* PM-18654 - Fix login strat tests
* move vault timeout and vault timeout settings to km
* move browser vault timeout service to km
* fix cli import
* fix imports
* fix some relative imports
* use relative imports within common
* fix imports
* fix new imports
* Fix new imports
* fix spec imports
* Moved saving of SSO email outside of browser/desktop code
* Clarified comments.
* Tests
* Refactored login component services to manage state
* Fixed input on login component
* Fixed tests
* Linting
* Moved web setting in state into web override
* updated tests
* Fixed typing.
* Fixed type safety issues.
* Added comments and renamed for clarity.
* Removed method parameters that weren't used
* Added clarifying comments
* Added more comments.
* Removed test that is not necessary on base
* Test cleanup
* More comments.
* Linting
* Fixed test.
* Fixed base URL
* Fixed typechecking.
* Type checking
* Moved setting of email state to default service
* Added comments.
* Consolidated SSO URL formatting
* Updated comment
* Fixed reference.
* Fixed missing parameter.
* Initialized service.
* Added comments
* Added initialization of new service
* Made email optional due to CLI.
* Fixed comment on handleSsoClick.
* Added SSO email persistence to v1 component.
---------
Co-authored-by: Bernd Schoolmann <mail@quexten.com>
* PM-14445: TS strict for Key Management Biometrics
* formatting
* callbacks not null expectations
* state nullability expectations updates
* unit tests fix
* secure channel naming, explicit null check on messageId
* KM-14445: TS strict for Key Management, Keys and Lock component
* conflicts resolution, new strict check failures
* null simplifications
* migrate legacy encryption when no active user throw error instead of hiding it
* throw instead of return
* Move encrypt service to km ownership
* Update imports for encrypt service abstraction and move bulk encrypt service abstraction
* Fix imports
* Fix further imports
* Fix imports
* Fix worker import
Add device verification flow that requires users to enter an OTP when logging in from an unrecognized device. This includes:
- New device verification route and guard
- Email OTP verification component
- Authentication timeout handling
PM-8221
* [deps] SM: Update typescript-eslint monorepo to v8
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hinton <hinton@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* add user asymmetric key api service
* Add user asymmetric key regen service
* add feature flag
* Add LoginSuccessHandlerService
* add loginSuccessHandlerService to BaseLoginViaWebAuthnComponent
* Only run loginSuccessHandlerService if webAuthn is used for vault decryption.
* Updates for TS strict
* bump SDK version
* swap to combineLatest
* Update abstractions
* Use typescript-strict-plugin to iteratively turn on strict
* Add strict testing to pipeline
Can be executed locally through either `npm run test:types` for full type checking including spec files, or `npx tsc-strict` for only tsconfig.json included files.
* turn on strict for scripts directory
* Use plugin for all tsconfigs in monorepo
vscode is capable of executing tsc with plugins, but uses the most relevant tsconfig to do so. If the plugin is not a part of that config, it is skipped and developers get no feedback of strict compile time issues. These updates remedy that at the cost of slightly more complex removal of the plugin when the time comes.
* remove plugin from configs that extend one that already has it
* Update workspace settings to honor strict plugin
* Apply strict-plugin to native message test runner
* Update vscode workspace to use root tsc version
* `./node_modules/.bin/update-strict-comments` 🤖
This is a one-time operation. All future files should adhere to strict type checking.
* Add fixme to `ts-strict-ignore` comments
* `update-strict-comments` 🤖
repeated for new merge files
Add timeout state management for two-factor authentication flows in web, desktop,
and browser extension clients. Includes:
- New timeout screen component with 5-minute session limit
- Updated UI elements and styling
- Comprehensive test coverage
Refs: PM-13659
* PM-15115 - Captcha being deprecated so remove from new UI refreshed login component + start putting deprecated comments on some things.
* PM-15115 - Add Jira ticket to TODOs per best practice
* Stub out dialog
* Genericize LoginApprovalComponent
* update ipc mocks
* Remove changes to account component
* Remove changes to account component
* Remove debug
* Remove test component
* Remove added translations
* Fix failing test
* Run lint and prettier
* Rename LoginApprovalServiceAbstraction to LoginApprovalComponentServiceAbstraction
* Add back missing "isVisible" check before calling loginRequest
* Rename classes to contain "Component" in the name
* Add missing space between "login attempt" and fingerprint phrase
* Require email
Creates a refreshed and consolidated LoginViaAuthRequestComponent for use on all visual clients, which will be used when the UnauthenticatedExtensionUIRefresh feature flag is on.
* Move key rotation to km ownership
* Fix build
* Move userkey rotation data provider abstraction to km ownership
* Move userkey rotation data provider abstraction to km ownership
* Fix linting
* Fix CODEOWNERS for key-management web
* Remove incorrect export
* Fix import error
* Move Lock All To Happen in Background
- Make it done serially
- Have the promise only resolve once it's complete
* Unlock Active Account Last
* Add Tests
* Update Comment
* Require userId for setting masterKeyEncryptedUserKey
* Replace folders for specified user
* Require userId for collection replace
* Cipher Replace requires userId
* Require UserId to update equivalent domains
* Require userId for policy replace
* sync state updates between fake state for better testing
* Revert to public observable tests
Since they now sync, we can test single-user updates impacting active user observables
* Do not init fake states through sync
Do not sync initial null values, that might wipe out already existing data.
* Require userId for Send replace
* Include userId for organization replace
* Require userId for billing sync data
* Require user Id for key connector sync data
* Allow decode of token by userId
* Require userId for synced key connector updates
* Add userId to policy setting during organization invite accept
* Fix cli
* Handle null userId
---------
Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
* PM-10601 - PinSvc new unlock check first draft
* PM-10601 - PinSvc - add new method for determining if pin decryption is available.
* PM-10601 - Add more docs on PinSvc
* PM-10601 - Update Lock Comp & User Verification service + tests to use new isPinDecryptionAvailable method
* Updated all sets of user key to pass in userId
* Added userId on auth request login.
* Fixed tests.
* Fixed tests to pass in UserId
* Added parameter to tests.
* Addressed PR feedback.
* Merged main
* move cli service-container to new folder
* fix imports
* add tsconfig and fix type issues in other services
* fix more imports in service-container
* make ts server happy in service-container
* fix actual bugs in cli service-container
* fix package json reference path
* fix service-container import
* update type on cipher service
* [PM-6426] Create TaskSchedulerService and update usage of long lived timeouts
* [PM-6426] Implementing nextSync timeout using TaskScheduler
* [PM-6426] Implementing systemClearClipboard using TaskScheduler
* [PM-6426] Fixing race condition with setting/unsetting active alarms
* [PM-6426] Implementing clear clipboard call on generatePasswordToClipboard with the TaskSchedulerService
* [PM-6426] Implementing abortTimeout for Fido2ClientService using TaskSchedulerService
* [PM-6426] Implementing reconnect timer timeout for NotificationService using the TaskSchedulerService
* [PM-6426] Implementing reconnect timer timeout for NotificationService using the TaskSchedulerService
* [PM-6426] Implementing sessionTimeout for LoginStrategyService using TaskSchedulerService
* [PM-6426] Implementing eventUploadInterval using TaskScheduler
* [PM-6426] Adding jest tests for the base TaskSchedulerService class
* [PM-6426] Updating jest tests for GeneratePasswordToClipboardCommand
* [PM-6426] Setting up the full sync process as an interval rather than a timeout
* [PM-6426] Renaming the scheduleNextSync alarm name
* [PM-6426] Fixing dependency references in services.module.ts
* [PM-6426] Adding jest tests for added BrowserApi methods
* [PM-6426] Refactoring small detail for how we identify the clear clipboard timeout in SystemService
* [PM-6426] Ensuring that we await clearing an established scheduled task for the notification service
* [PM-6426] Changing the name of the state definition for the TaskScheduler
* [PM-6426] Implementing jest tests for the BrowserTaskSchedulerService
* [PM-6426] Implementing jest tests for the BrowserTaskSchedulerService
* [PM-6426] Adding jest tests for the base TaskSchedulerService class
* [PM-6426] Finalizing jest tests for BrowserTaskScheduler class
* [PM-6426] Finalizing documentation on BrowserTaskSchedulerService
* [PM-6426] Fixing jest test for LoginStrategyService
* [PM-6426] Implementing compatibility for the browser.alarms api
* [PM-6426] Fixing how we check for the browser alarms api
* [PM-6426] Adding jest tests to the BrowserApi implementation
* [PM-6426] Aligning the implementation with our code guidelines for Angular components
* [PM-6426] Fixing jest tests and lint errors
* [PM-6426] Moving alarms api calls out of BrowserApi and structuring them within the BrowserTaskSchedulerService
* [PM-6426] Reworking implementation to register handlers separately from the call to those handlers
* [PM-6426] Adjusting how we register the fullSync scheduled task
* [PM-6426] Implementing approach for incorporating the user UUID when setting task handlers
* [PM-6426] Attempting to re-work implementation to facilitate userId-spcific alarms
* [PM-6426] Refactoring smaller details of the implementation
* [PM-6426] Working through the details of the implementation and setting up final refinments
* [PM-6426] Fixing some issues surrounding duplicate alarms triggering
* [PM-6426] Adjusting name for generate password to clipboard command task name
* [PM-6426] Fixing generate password to clipboard command jest tests
* [PM-6426] Working through jest tests and implementing a method to guard against setting a task without having a registered callback
* [PM-6426] Working through jest tests and implementing a method to guard against setting a task without having a registered callback
* [PM-6426] Implementing methodology for having a fallback to setTimeout if the browser context is lost in some manner
* [PM-6426] Working through jest tests
* [PM-6426] Working through jest tests
* [PM-6426] Working through jest tests
* [PM-6426] Working through jest tests
* [PM-6426] Finalizing stepped setInterval implementation
* [PM-6426] Implementing Jest tests for DefaultTaskSchedulerService
* [PM-6426] Adjusting jest tests
* [PM-6426] Adjusting jest tests
* [PM-6426] Adjusting jest tests
* [PM-6426] Fixing issues identified in code review
* [PM-6426] Fixing issues identified in code review
* [PM-6426] Removing user-based alarms and fixing an issue found with setting steppedd alarm interavals
* [PM-6426] Removing user-based alarms and fixing an issue found with setting steppedd alarm interavals
* [PM-6426] Fixing issue with typing information on a test
* [PM-6426] Using the getUpperBoundDelayInMinutes method to handle setting stepped alarms and setTimeout fallbacks
* [PM-6426] Removing the potential for the TaskScheduler to be optional
* [PM-6426] Reworking implementation to leverage subscription based deregistration of alarms
* [PM-6426] Fixing jest tests
* [PM-6426] Implementing foreground and background task scheduler services to avoid duplication of task scheudlers and to have the background setup as a fallback to the poopup tasks
* [PM-6426] Implementing foreground and background task scheduler services to avoid duplication of task scheudlers and to have the background setup as a fallback to the poopup tasks
* [PM-6426] Merging main into branch
* [PM-6426] Fixing issues with the CLI Service Container implementation
* [PM-6426] Reworking swallowed promises to contain a catch statement allow us to debug potential issues with registrations of alarms
* [PM-6426] Adding jest tests to the ForegroundTaskSchedulerService and the BackgroundTaskSchedulerService
* [PM-6426] Adding jest tests to the ForegroundTaskSchedulerService and the BackgroundTaskSchedulerService
* [PM-6426] Adding jest tests to the ForegroundTaskSchedulerService and the BackgroundTaskSchedulerService
* [PM-6426] Adding jest tests to the ForegroundTaskSchedulerService and the BackgroundTaskSchedulerService
* [PM-6426] Adjusting implementation based on code review feedback
* [PM-6426] Reworking file structure
* [PM-6426] Reworking file structure
* [PM-6426] Adding comments to provide clarity on how the login strategy cache experiation state is used
* [PM-6426] Catching and logging erorrs that appear from methods that return a promise within VaultTimeoutService