* Remove derived state from state classes
* Create provider for derived state
Derived state is automatically stored to memory storage, but can be derived from any observable.
* Fixup state provider method definitions
* Test `DefaultDerivedState`
* remove implementation notes
* Write docs for derived state
* fixup derived state provider types
* Implement buffered delayUntil operator
* Move state types to a common module
* Move mock ports to centra location
* Alias DerivedStateDependency type
* Add dependencies to browser
* Prefer internal rxjs operators for ref counting
* WIP
* Ensure complete on subjects
* Foreground/background messaging for browser
Defers work for browser to the background
* Test foreground port behaviors
* Inject foreground and background derived state services
* remove unnecessary class field
* Adhere to required options
* Add dderived state to CLI
* Prefer type definition in type parameters to options
* Prefer instance method
* Implements factory methods for common uses
* Remove nothing test
* Remove share subject reference
Share manages connector subjects internally and will reuse them until
refcount is 0 and the cleanup time has passed. Saving our own reference
just risks memory leaks without real testability benefits.
* Fix interaction state
* [deps] Tools: Update electron to v28
* Update electron-builder 27.2.0 to 28.1.0
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* PM-3859 - Desktop App Comp - Build lock mechanism for update app menu which doesn't try to update the menu for users who are being logged out which was causing errors (primary scenario was triggered by logging in on desktop with a TDE user w/out a MP, triggering a sync, then hitting the command to lock the vault right after which would trigger a log out while the sync was still in process. Then, while the log out was in process, the sync would try and trigger an update to the app menu but it would error as some of the user's state had already been cleaned up)
* PM-3859 - App comp - remove use of promise.all to prevent any race conditions from causing intermittent logout errors with state being cleared and then values trying to be set on the cleared state (I observed setMasterKey get called after state account.keys was cleared - received error when attempting to set value on undefined).
* PM-3859 - Desktop Vault Items Component - on log out, if you were on the vault screen, the loss of focus on the vault search text box would trigger a search 200 ms after log out had been triggered. This would eventually attempt to set an undefined master key (VaultItemsComponent.doSearch() --> cipherService.getAllDecrypted() --> cryptoService.getUserKeyWithLegacySupport() --> cryptoService.getMasterKey() --> cryptoService.setMasterKey()). However, at this point, the account had been cleared as part of the log out process and an error would be thrown in the state service for trying to set account.keys.masterKey to undefined when the account and account.keys were undefined. These changes prevent the search from firing until the value changes and also prevents setMasterKey from being called if it is undefined.
* feat: add missing tests for `isFido2FeatureEnabled`
* feat: add user logged in check
* chore: rewrite with cartesian product
* chore: remove test
The test was more complex than the actual function, removing.
* feat: add domain exclusion
* feat: add origin equal vault case
* chore: clean up the old code from `content-secript`
* feat: return early to avoid making api calls
* fix: prettier linting
* fix: incorrect logic inversion
---------
Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
Co-authored-by: SmithThe4th <gsmith@bitwarden.com>
* Hide account switcher in addEdit generator
* Handle AddEditCipher deserialization
* Opaque types are not serializable
* Better handle jsonification of login uris
* Ensure we don't overwrite original with clone
* Ensure cipherView prototype is always restored if it exists
* make spacing consistent between log out and lock all buttons
* update color of avatar when no active account
* separate active account from other available accounts
* remove unnecessary ng-container
* wip
* Running prettier after npm ci
* Defects AC-1929 AC-1955 AC-1956
* Setting plan and product to Teams if adding an org from a provider
* Updated logic to correctly set seat count depending on how you approach the upgrade flow
* Moved logic setting seat count to changedProduct
* Setting sm seats when upgrading to the current count
* Setting max storage if the organization's current plan has it set above the base
* Refactored logic in changedProduct to be a bit more concise. Added logic for handling sm service accounts and storage increases
* Decomposed the logic in changedProduct
* Resolved defects introduced in the merge conflict
* Changes after executing `npm run prettier`
---------
Co-authored-by: Alex Morask <amorask@bitwarden.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* migrate to DialogService
* use static method
* add reactive form dependencies
* begin migrating to reactive forms
* migrate template inputs to use CL
* update set-pin.component.ts file to work with reactive forms
* migrate desktop template and class file to Dialog and ReactiveForms
* update settings page
* remove old properties
* update settings form upon dialog close
* refactor ngOnInit()
* remove duplicate validator (already have a validator in class file)
* wip
* Running prettier after npm ci
* Defects AC-1929 AC-1955 AC-1956
* Updated logic to correctly set seat count depending on how you approach the upgrade flow
* Setting sm seats when upgrading to the current count
* Setting max storage if the organization's current plan has it set above the base
* Refactored logic in changedProduct to be a bit more concise. Added logic for handling sm service accounts and storage increases
* Decomposed the logic in changedProduct
* Resolved defects introduced in the merge conflict
---------
Co-authored-by: Conner Turnbull <cturnbull@bitwarden.com>
Co-authored-by: Conner Turnbull <133619638+cturnbull-bitwarden@users.noreply.github.com>
* [deps] Tools: Update electron to v27.2.0
* Bump electronVersion to 27.2.0
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Import libs/importer and instantiate ImportService
* Create ImportApi and ImportService factories
* Add libs/importer to desktop
* [PM-4075] Setup Feature Flag for Browser Fileless Import
* [PM-4032] Detect Lastpass Export Page and Supress Download Prompt
* [PM-4032] Implementing jest tests for the FilelessImporterBackground class
* [PM-4075] Setup Feature Flag for Browser Fileless Import (#6391)
* [PM-4032] Implementing jest tests for the FilelessImporterBackground class
* [PM-4032] Implementing jest tests for the LpFilelessImporter class
* [PM-4032] Modifying variable name
* [PM-4032] Modifying verbiage on jest tests to feature present tense actions and updating behavior within FilelessImporterBackground to ensure logic is triggered on expected port names only
* [PM-4032] Modifying documentation present above handlePortOnConnect method
* [PM-4032] Modifying documentation present above handlePortOnConnect method
* [PM-4032] Applying early return if the user has a policy that removes the individual vault
* [PM-4032] Reverting change made to notification bar
* [PM-4032] Applying a static declaration to the filelessImporterPortNames property
* [PM-4032] Modifying test for handlPortOnConnect method to follow provided feedback
* [PM-4032] Applying feedback to jest test messages
* [PM-4032] Reworking LpFilelessImporter to simplify testing structure and leverage public facing methods rather than testing private methods
* [PM-4032] Reworking FilelessImporterBackground class
* [PM-4032] Adding implementation details that facilitate triggering onMessage listeners within a chrome.runtime.connection port
* [PM-4032] Implementing reworked jest tests for FilelessImporterBackground
* [PM-4032] Adjusting naming of jest test
* [PM-4032] Reworking test setup implementation to better fit approach discussed within overlay PR work
* [PM-4032] Running prettier
* [PM-4032] Removing added line break
* [PM-4033] Display import prompt to user (#6407)
* [PM-4033] Display Import Prompt to the User
* [PM-4033] Adding jest tests for LpFilelessImporter
* [PM-4033] Finalization of Jest tests
* [PM-4033] Finalization of Jest tests
* [PM-4033] Removing values from the whitelist capital letters file
* [PM-4033] Addressing jest test coverage in LpFilelessImporter
* [PM-4033] Addressing jest test coverage in LpFilelessImporter
* [PM-4033] Adding documentation to the added methods within the NotificationBackground class
* [PM-4033] Adding documentation to the added methods within the bar.ts content script
* [PM-4033] Removing unnecessary method within lp-fileless-importer content script
* [PM-4033] Removing method that is not currently used within FilelessImporterBackground
* [PM-4033] Adding jest tests for the implementation
* [PM-4035] Import LastPass Export Page Data (#6408)
* [PM-4035] Import LastPass Export Page Data
* [PM-4035] Import LastPass Export Page Data
* [PM-4035] Adding jest tests for the LPFilelessImporter class
* [PM-4035] Adding jest tests for the FilelessImporterBackground class
* [PM-4035] Fixing references to innerHtml and updating them to reference textContent
* [PM-4035] Removing eslint-disable and adding logging service to bar.ts
* [PM-4035] Adding typing information to LpImporter classes
* [PM-4035] Adding typing information to LpImporter classes
* [PM-4035] Adding typing information for FilelessImportType
* [PM-4035] Updating type reference for the filelessImportType
* [PM-4032] Refactoring implementation for NotificationBackground.doNotificationQueueCheck to remove repetition
* [PM-4032] Refactoring early returns within NotificationBackground
* [PM-4032] Adding context for a test case for the FilelessImporterBackground
* [PM-4032] Removing magic number by referencing the notification port within a test for cancelFilelessImport
* [PM-4032] Adding documentation to the constructor
* [PM-4032] Switching logic to use a switch statement rather than multiple if statements
* [PM-4032] Removing unnecessary early return from the mutation observer implementation within `lp-fileless-importer.ts
* [PM-4032] Adding return to the mutation observer when we have found the expected text node
* [PM-4032] Refactoring implementation of the handleMutation method
* [PM-4032] Modifying implementation for pushUnlocKVaultToQueue to send a notification message instead of adding the item to the queue
* [PM-4032] Modifying implementation for how we handle mutations within the lp-fileless-importer
* [PM-4032] Adding space between the iteration over added nodes within LpFilelessImporter.handleMutation
* [PM-4032] Reworking logic within the doNotificationCheck method to remove for loop
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* [PM-5303] Cannot login with SSO
* [PM-5303] Adding documentation to newly created ContentMessageHandler class
* [PM-5303] Updating manifest v3 implementation to use the newly scoped name
* [PM-5303] Adding jest tests to implementation
## Type of change
<!-- (mark with an `X`) -->
```
- [ ] Bug fix
- [ ] New feature development
- [x] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
- [ ] Build/deploy pipeline (DevOps)
- [ ] Other
```
## Objective
<!--Describe what the purpose of this PR is. For example: what bug you're fixing or what new feature you're adding-->
Final Client changes for Key Rotation Improvements.
- Introduces a new `KeyRotationService` that is responsible for owning rotation process.
- Moves `Send` re-encryption to the `SendService` (`KeyRotationService` shouldn't have knowledge about how domains are encrypted).
- Moves `EmergencyAccess` re-encryption to the `EmergencyAccessService`.
- Renames `AccountRecoveryService` to `OrganizationUserResetPasswordService` after feedback from Admin Console
## Code changes
<!--Explain the changes you've made to each file or major component. This should help the reviewer understand your changes-->
<!--Also refer to any related changes or PRs in other repositories-->
Auth
- **emergency-access-update.request.ts:** New request model for domain updates that includes Id
- **emergency-access.service.ts:** Moved `EmergencyAccess` re-encryption to the `EmergencyAccessService`. Add deprecated method for legacy key rotations if feature flag is off
- **key-rotation.service/api/spec/module:** New key rotation service for owning the rotation process. Added api service, module, and spec file.
- **update-key.request.ts:** Moved to Auth ownership. Also added new properties for including other domains.
- **migrate-legacy-encryption.component.ts:** Use new key rotation service instead of old component specific service. Delete old service.
- **change-password.component.ts:** Use new key rotation service.
- **settings.module.ts:** Import key rotation module.
Admin Console
- **organization-user-reset-password.service.ts/spec:** Responsible for re-encryption of reset password keys during key rotation. Added tests.
- **organization-user-reset-password-enrollment.request.ts:** New request model for key rotations
- **reset-password.component.ts:** Update `AccountRecoveryService` to `OrganizationUserResetPasswordService`
- **enroll-master-password-reset.component.ts:** Update `AccountRecoveryService` to `OrganizationUserResetPasswordService`
Tools
- **send.service/spec.ts:** Responsible only for re-encryption of sends during key rotation. Added tests.
Other
- **api.service.ts:** Move `postAccountKey` to `KeyRotationApiService`
- **feature-flag.enum.ts:** add new feature flag
## Screenshots
<!--Required for any UI changes. Delete if not applicable-->
## Before you submit
- Please add **unit tests** where it makes sense to do so (encouraged but not required)
- If this change requires a **documentation update** - notify the documentation team
- If this change has particular **deployment requirements** - notify the DevOps team
- Ensure that all UI additions follow [WCAG AA requirements](https://contributing.bitwarden.com/contributing/accessibility/)
* Added new locales text
* expose the sender url to be used in the use browser link component
* Modified use browser link to have a dropdown of two options, just once or always for this site
* modified component to use the use browser link component
* refactored method
* Made style changes and also updated the windows popout height
* ran prettier
* corrected google domain
* [PM-5281] [PM-5282] Disable User Interaction Post 'Always for this Site' Selection and Preserve Prior Exclusions (#7237)
* Added new domain alongside existing domains when saving to state
* Added an overlay whne user clicks always for this site to prevent further interaction on the page
* changed opacity
* moved overlay to fido2-use-browser-link
* removed private method and renamed variable
* [PM-4048] Use dialog service instead of modal service. Change UI file to use bit-Dialog. Remove from app module into standalone.
* [PM-4048] Update app.module imports
* [PM-4048] Fix form.
* PM-4048 - Delete Account tweak - remove unncessary delete header per discussion with product
* PM-4048 - Per CL migration guide,
* PM-4048 - (1) Remove button module import from dialog module exports (2) Add CL imports to desktop app module for delete acct dialog comp (3) Update delete acct dialog comp to use bitSubmit
* PM-4048 - Remove deprecated data-dismiss as bitDialogClose replaced it in terms of functionality.
* PM-4048 - Desktop Delete Acct - update loading button logic to latest CL standards (thanks Will!)
* PM-4048 - Must manually show errors to get "User Verification failed" message when user inputs incorrect MP.
* PM-4048 - desktop - delete-account.component.html - per PR feedback, remove non-tailwind classes and address missing bitFormButton
* PM-4048 - DeleteAccountComponent - per PR feedback, import DialogService using proper import alias.
* PM-4048 - delete-account.component.html - per PR feedback, remove no longer needed #form
* PM-4048 - delete-account.component.html - remove missed non-tailwind class
* PM-4048 - DeleteAccountComponent - per PR feedback, remove try catch as it is unnecessary as the bitSubmit handles errors
* add bespoke border to fix color contrast issue
* convert delete-account.component and user-verification.component to standalone; revert app module CL imports
* run prettier
* run prettier again
---------
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
Co-authored-by: William Martin <contact@willmartian.com>
* Navigate to home from account switcher
Also updates the main background handling of logout to either finish switch or logout, depending on which occurred
* Prefer observable guards
we were racing the account switch process on `accountService` and this async guard. It only depended on account status, which is available from `accountService`, so the correct move was to observe that status.
The unauthGuardFn allows for updating homepage depending on window state because popout windows have different nav to other locations.
* PM-1658 - Update Accept Organization component to take new org invite qParams into acct for accelerating the user through the org invite accept process.
* PM-1658 - Update trial initiation and register form comps to respect fromOrgInvite when email is populated to make the populated email read only so users in the org invite process dont change it.
* PM-1658 - Per PR feedback, we could simplify the logic by only sending the org sso identifier if it was required to be used.
* PM-1658 - Accept Comp - should send existing user email as qParam to get it to autofill properly. Previous "autofill" was due to using remember email when creating an account before testing the existing user inv flow.
* Add light LinkType to link directive
* add skip link to bit-layout; update i18n for all apps
* install storybook interaction testing packages
* update storybook config
* add skiplink story to bit-layout
* update route and focus logic
* remove focus ring
* Use bitTypography for page title
* Replaced app-callout with bit-callout
* Replace button with bit-button
* Update radio buttons to use CL
* Use searchable select for fileFormat dropdown
* Remove unneeded divs (old styling)
* pm-1826 remove eslint-disable tailwindcss/no-custom-classname
* Removed for-attribute from bit-labels
* Removed bitInput from bit-selects
* Removed name-attribute from bit-selects
* Make format a required field
* Removed unused dependency on cryptoService
* Remove unused dependency on BroadcasterService
* Removed dependency on window
* Moved organizationId into BaseExportComponent
* Add vaultSelector
Add organizationService as new dependency
Retrieve organizations a user has access to
Add vaultSelector dropdown
Add `export from` label
Add exportFromHint
* Removed hint as discussed by product&design
* Add function to check for import/export permission
* Export callout should listen to changes
Even though the organizationId was changed, the Input did not trigger changing the scope
* Reading FlexibleCollections feature flag to show the vault-selector on export (#7196)
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: aj-rosado <109146700+aj-rosado@users.noreply.github.com>
* [PM-934] Autofill not working until page has been refreshed
* [PM-934] Adjusting cleanup of the messages_handler script
* [PM-934] Fixing small issue found within collection of page details
* [PM-934] Addressing concenrs brought up during code review
* [PM-934] Addressing concenrs brought up during code review
* [PM-934] Addressing concenrs brought up during code review
* [PM-934] Addressing concenrs brought up during code review
* [PM-934] Applying re-set changes to the autofill overlay implementation on reset of the extension
* [PM-934] Applying jest tests to added logic within AutofillOverlayContent service
* [PM-934] Fixing typo present in tabs background listener
* [PM-934] Finishing up jest tests for updated implementation
* [PM-934] Incorporating methodology for ensuring the autofill overlay updates to reflect user settings within existing tabs
* [PM-934] Refining implementation to ensure we do not unnecessarily re-inject content scripts when the autofill overlay settings change
* [PM-934] Working through jest tests for added implementation details
* [PM-934] Working through jest tests for added implementation details
* [PM-934] Finalizing jest tests for implemented logic
* [PM-5035] Refactoring method structure
* decompose password generator policy enforcement
* integrate new logic with UI
* improve UX of minimum password length
* improve password generator policy options documentation
* initialize min length to default minimum length boundary
* reset form value on input to prevent UI desync from model
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* changed content script injection strategy
* added persistent connection and reinjection of the content script
* cleanup resources on disconnect
* cleanup resources on disconnect
* concluded messanger event listeners cleanup and added unit tests
* Switched to use browser api add listener instead of navtive apis
* renamed cleanup to destroy and added reconnect and disconnect command functions
* refactored to use foreach and check for only https urls
* refactored the content script to only load the page script if it currently doesn't extist of the page, and if it does sends a reconnect command to the page-script to replace the native webauthn methods
* updated unit test
* removed memoized logic
* moved the send disconect command to the messenger
* updated unit test
* test messenger handler
* [PM-4012] fix: add `senderId` to messenger
* destroy pending requets
* cleaned up page script and terminated pending request
* fixed cannot read properties of undefined
* rearranged functions, renamed misspelled words, and created test
* mocked EventTarget as there are issues on jest for listeners getting the events
* Return fall back error instead
* Update apps/browser/src/vault/fido2/content/content-script.ts
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Update apps/browser/src/vault/fido2/content/messaging/messenger.ts
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* removed whitespace
---------
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
Class based router guards are deprecated as of Angular 15.2, per angular.io/guide/deprecations#router-class-and-injection-token-guards. To simplify future angular upgrades we need to resolve these deprecations.
This PR migrates the HasPremium and DebounceNavigationService guards to use the new functional pattern.
* [PM-5048] Query params are not persisting in extension popout window
* [PM-5048] Reverting how we identify whether the user is popping out the current tab;
* [PM-5048] Adding jest test to validate skipping parsing of the extension path
* [PM-5048] Adding jest test to validate skipping parsing of the extension path
* [PM-5048] Reworking implementation to ensure that popout window query params remain persistent
* [PM-5048] Reworking implementation to ensure that appended query params do not remain persistent, but popout window query params do remain persistent. Fixing issues within vault item popouts and adding jest tests to verify those fixes
* [PM-5048] Modifying how query params are set within vault popout windows
* [PM-5048] Running prettier
* [AC-1139] Add new layout for MemberDialogComponent when FC feature flag is enabled
* [AC-1139] Deprecated Organization canEditAssignedCollections, canDeleteAssignedCollections, canViewAssignedCollections
* [AC-1139] Checking if FC feature flag is enabled when using canDeleteAssignedCollections or canViewAssignedCollections
* [AC-1139] Added missing parameter to customRedirect
* [AC-1139] Fixed canEdit permission
* [AC-1139] Fixed CanDelete logic
* [AC-1139] Changed canAccessVaultTab function to receive configService
* Override deprecated values on sync
* [AC-1139] Reverted change that introduced ConfigService as a parameter to canAccessVaultTab
* [AC-1139] Fixed circular dependency
* [AC-1139] Moved overriding of deprecated values to syncService
* Revert "[AC-1139] Fixed circular dependency"
This reverts commit 6484420976.
* Revert "Override deprecated values on sync"
This reverts commit f0c25a6996.
* [AC-1139] Added back the deprecation of methods canEditAssignedCollections, canDeleteAssignedCollections, canViewAssignedCollections
* [AC-1139] Reverted change on syncService
* [AC-1139] Override deprecated values on sync
* [AC-1139] Fix canDelete logic in
collection-dialog.component.ts and
bulk-delete-dialog.component.ts
* [AC-1139] Moved override logic from syncService to organizationService
* [AC-1139] Add ability to have titlecase titles on nested-checkbox.component checkboxes; use on member-dialog.component
* Revert "[AC-1139] Add ability to have titlecase titles on nested-checkbox.component checkboxes; use on member-dialog.component"
This reverts commit 9ede0fc5ac.
* [AC-1139] Fix bulk delete functionality
* [AC-1139] Refactor canEdit and canDelete to use ternary operator
* [AC-1139] Fix canDelete condition in VaultComponent
---------
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [PM-4923] Form Elements that Fade into View Contain Incorrectly Cached Page Details
* [PM-4923] Form Elements that Fade into View Contain Incorrectly Cached Page Details
* [PM-4923] Running prettier on implementation
* [PM-5148] Removing Browser Autofill Override Setting and Add Message
* [PM-5148] Removing translation keys
* [PM-5148] Removing translation keys
* [PM-5148] Modifying how we present the link to users to ensure translations can be more effective
* Moved password-strength component to Tools
* Move zxcvbn into Tools ownership
zxcvbn is the library currently used to calculate the password-strength
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Handle switch messaging
TODO: handle loading state for account switcher
* Async updates required for state
* Fallback to email for current account avatar
* Await un-awaited promises
* Remove unnecessary Prune
Prune was getting confused in browser and deleting memory in browser on
account switch. This method isn't needed since logout already removes
memory data, which is the condition for pruning
* Fix temp password in browser
* Use direct memory access until data is serializable
Safari uses a different message object extraction than firefox/chrome
and is removing `UInt8Array`s. Until all data passed into StorageService
is guaranteed serializable, we need to use direct access in state
service
* Reload badge and context menu on switch
* Gracefully switch account as they log out.
* Maintain location on account switch
* Remove unused state definitions
* Prefer null for state
undefined can be misinterpreted to indicate a value has not been set.
* Hack: structured clone in memory storage
We are currently getting dead objects on account switch due to updating
the object in the foreground state service. However, the storage service
is owned by the background. This structured clone hack ensures that all
objects stored in memory are owned by the appropriate context
* Null check nullable values
active account can be null, so we should include null safety in the
equality
* Correct background->foreground switch command
* Already providing background memory storage
* Handle connection and clipboard on switch account
* Prefer strict equal
* Ensure structuredClone is available to jsdom
This is a deficiency in jsdom --
https://github.com/jsdom/jsdom/issues/3363 -- structured clone is well
supported.
* Fixup types in faker class
* add avatar and simple navigation to header
* add options buttons
* add app-header to necessary pages
* add back button and adjust avatar sizes
* add helper text when account limit reached
* convert magic number to constant
* add clarifying comment
* adjust homepage header styles
* navigate to previousp page upon avatar click when already on '/account-switcher'
* move account UI to own component
* add i18n
* show correct auth status
* add aria-hidden to icons
* use listbox role
* add screen reader accessibility to account component
* more SR a11y updates to account component
* add hover and focus states to avatar
* refactor hover and focus states for avatar
* add screen reader text for avatar
* add slide-down animation on account switcher close
* remove comment
* setup account component story
* add all stories
* move navigation call to account component
* implement account lock
* add button hover effect
* implement account logout
* implement lockAll accounts functionality
* replace 'any' with custom type
* add account switcher button to /home login page
* use <main> tag (enables scrolling)
* change temp server filler name
* temporarily remove server arg from account story
* don't show avatar on /home if no accounts, and don't show 'lock'/'logout' buttons if no currentAccount
* add translation and a11y to /home avatar
* add correct server url to account component
* add 'server' to AccountOption type
* Enabled account switching client-side feature flag.
* add slide-in transition to /account-switcher page
* change capitalization to reflect figma design
* make screen reader read active account email, address more capitalization
* fix web avatar misalignment
* make avatar color based on user settings and in sync with other clients
* make property private
* change accountOptions to availableAccounts for clarity
* refactor to remove 'else' template ref
* remove empty scss rule
* use tailwind instead of scss
* rename isSelected to isActive
* add 'isButton' to /home page avatar
* move files to services folder
* update import
* Remove duplicate active account button
* Move no account button to current-account component
* Always complete logging out
Fixes PM-4866
* make screenreader read off email, not name
* refactor avatar for button case
* Do not next object updates
StateService's init was calling `updateState` at multiple layers,
once overall and then again for each account updated. Because
we were not maintaining a single state object through the
process, it was ending up in a consistent, but incomplete state.
Fixed by returning the updated state everywhere. This very well
may not be all the bugs associated with this
* Treat null switch account as no active user
* Listen for switchAccountFinish before routing (#6950)
* adjust avatar style when wrapped in a button
* show alt text for favicon setting
* move stories to browser
* Send Finish Message on null
* Dynamically set active user when locking all
This is required because some user lock states are not recoverable after
process reload (those with logout timeout). This waits until reload is
occurring, then sets the next user appropriately
* Move Finished Message to Finally Block
Fix tests
* Drop problematic key migration
Fixes PM-4933. This was an instance of foreground/background collision
when writing state. We have several other fallbacks of clearing
these deprecated keys.
* Prefer location to homebrew router service
* Initialize account disk cache from background
Uses the `isRecoveredSession` bool to re-initialize foreground caches
from a background message. This avoids a lengthy first-read for
foregrounds
* PM-4865 - Browser Acct Switcher - only show lock btn for lockable accounts (#6991)
* Lock of active account first, when locking multiple.
Fixes PM-4996
* Fix linter
* Hide lock now for locked users (#7020)
* Hide lock now for locked users
* Prefer disabling button to removing
* Add tooltip to TDE without unlock method
* Load all auth states on state init (#7027)
This is a temporary fix until the owning services can update state
themselves. It uses the presence of an auto key to surmise unlocked
state on init. This is safe since it's run only once on extension start.
* Ps/pm 5004/add load to account switcher (#7032)
* Add load spinner to account switcher
* Remove ul list icons
* Properly size account switcher in popout
* [PM-5005] Prevent Double Navigation (#7035)
* Delete Overriden Method
* Add Lock Transition
* truncate email and server name
* remove account.stories.ts (will add in separate PR)
* Do not switch user at reload if no user is active
* fix prettier issues
---------
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
Fixed a bug where `authenticatorSelection` may be undefined and cause
the extension to crash when attempting to register a new credential.
Co-authored-by: SmithThe4th <gsmith@bitwarden.com>
* [PM-5043] Update owernship of code belonging to autofill team
* [PM-5043] Updating location of webRequest.background.ts file to belong to autofill team
* [PM-5043] Updating location of autofill component settings within the popup
* Handle switch messaging
TODO: handle loading state for account switcher
* Async updates required for state
* Fallback to email for current account avatar
* Await un-awaited promises
* Remove unnecessary Prune
Prune was getting confused in browser and deleting memory in browser on
account switch. This method isn't needed since logout already removes
memory data, which is the condition for pruning
* Fix temp password in browser
* Use direct memory access until data is serializable
Safari uses a different message object extraction than firefox/chrome
and is removing `UInt8Array`s. Until all data passed into StorageService
is guaranteed serializable, we need to use direct access in state
service
* Reload badge and context menu on switch
* Gracefully switch account as they log out.
* Maintain location on account switch
* Remove unused state definitions
* Prefer null for state
undefined can be misinterpreted to indicate a value has not been set.
* Hack: structured clone in memory storage
We are currently getting dead objects on account switch due to updating
the object in the foreground state service. However, the storage service
is owned by the background. This structured clone hack ensures that all
objects stored in memory are owned by the appropriate context
* Null check nullable values
active account can be null, so we should include null safety in the
equality
* Correct background->foreground switch command
* Already providing background memory storage
* Handle connection and clipboard on switch account
* Prefer strict equal
* Ensure structuredClone is available to jsdom
This is a deficiency in jsdom --
https://github.com/jsdom/jsdom/issues/3363 -- structured clone is well
supported.
* Fixup types in faker class
* Adding the password complexity component to the password protected valut export
* Removing the zxcvbn import as the component handles the strength check
Assign ownership to many of the remaining libs/common files.
Criteria for ownership:
* Files used by a single team, is now owned by that team.
* Files related to a domain owned by a team is now owned by that team.
* Where ownership is unclear the "lowest level" service takes ownership.
* feat: add inscure types and remove the insecure fields from the page-script
* feat: securely set variables in content-script
* chore: clean up comments
* use passkeys setting
* check state service on isFido2FeatureEnabled
* fix broken json
* update description text
* make setting global
* invert logic to positive state
* fix and add to fido2 client service tests
The latest version of types/node had some breaking changes related to Timer and Timeout, #6739. It turns out that we incorrectly used the type Timer when Timeout was expected in a few places. This PR resolves them, in an effort to unblock the @types/node upgrade.
We missed an await which caused the if statement to never be true. This might have had the effect of not showing a browser integration error message when attempting to unlock should biometrics for some reason be unavailable.
* PM-2041 - (1) Bring over WebauthnApiService + required models from existing #5493 PR (2) Per discussion with Andreas, remove unnecessary methods from WebauthnApiService
* PM-2041 - Rename responses folder to response to match rest of codebase
* PM-2041 - Recreate BaseLoginViaWebAuthnComponent and then web implementation of it.
* PM-2041 - Web routing module - add LoginViaWebAuthnComponent and associated route "login-with-passkey"
* PM-2041 - InjectionTokens - add new navigator credentials injection token which provides the CredentialsContainer interface of the Credential Management API and exposes methods to request credentials and notify the user agent when events such as successful sign in or sign out happen
* PM-2041 - Rename WebauthnApiService & abstraction to WebAuthnLoginApiService
* PM-2041 - Rename WebauthnLoginApiService to WebAuthnAdminApiService
* PM-2041 - Bring over first draft of webauthn-login.service + abstraction; register on jslib-services.module.
* PM-2041 - Bring over web & base login component changes to add login with passkey button if feature flag enabled.
* PM-2041 - WebAuthnAdminApi - update list of TODOs based on conversation with Andreas
* PM-2041 - Login.module - cleanup todo after conversation w/ Andreas
* PM-2041 - Move utils out of web and into common auth/utils and renamed to webauthn-utils
* PM-2041 - Update userDecryptionOptions to support new webauthn prf decryption option
* PM-2041 - (1) Recreate webauthn-login service with updated logic (2) Move files from webauthn to webauthn-login (3) Recreate webauthn-login.strategy with updated logic
* PM-2041 - Remove completed TODO
* PM-2041 - Fix login-via-webauthn component imports + fix name (missing n)
* PM-2041 - Missed this change when renaming LoginViaWebAuthComponent to LoginViaWebAuthnComponent
* PM-2041 - Add WebAuthnLoginApiService to jslib-services.module
* PM-2041 - Remove unused param from WebAuthnLoginApiServiceAbstraction as we aren't supporting non-discoverable passkeys for MVP
* PM-2041 - WebAuthnLoginApiService - remove email and target correct endpoint for getCredentialAssertionOptions(...) call
* PM-2041 - WebAuthnLoginStrategy - (1) Remove unused dep (2) Add safeguard checks to setUserKey(...) logic similar to SSO login strategy
* PM-2041 - BaseLoginViaWebAuthnComponent - Rewrite authenticate logic to use new methods on webAuthnLoginService
* PM-2041 - UserDecryptionOptionsResponse - update naming of webAuthn options object to match server response
* PM-2041 - WebAuthnLoginAssertionResponseRequest - (1) clean up TODO (2) Fix response property name to match server
* PM-2041 - WebAuthnTokenRequest - must stringify device response b/c sending as form data
* PM-2041 - AuthService - Add WebAuthnLoginCredentials and WebAuthnLoginStrategy support to auth service
* PM-2041 - WIP tests for WebAuthnLoginService
* PM-2041 - UserDecryptionOptions - Rename WebAuthnPrfOptions to singular WebAuthnPrfOption to match server
* PM-2041 - Add TODO in login comp
* PM-2041 - (1) Update WebAuthnLoginService.assertCredential(...) to add a check to ensure we cannot leak PRF credentials to the BW server by mistake (2) Add credential to view names for clarity (3) Add JS doc style comments to WebAuthnLoginServiceAbstraction
* PM-2041 - Login.component.html - (1) Center passkey login button (2) Use correct user passkey icon
* PM-2041 - Utils + tests - (1) Add new hexStringToArrayBuffer(...) method (2) Add tests for existing fromBufferToHex(...) (3) Add tests for new hexStringToArrayBuffer(...) method
* PM-2041 - Fix broken import
* PM-2041 - WebAuthnLoginResponseRequest - Adjust warning to be correct
* PM-2041 - Webauthn-utils - createSymmetricKeyFromPrf(...) - add return type
* PM-2041 - WebAuthnLoginService spec file - good progress on figuring out how to test passkey assertion process. Tests are passing, but need to add more setup logic around the MockAuthenticatorAssertionResponse in order to be able to confirm the output is correct.
* PM-2041 - Utils + Utils Spec file changes - (1) Add new fromB64ToArrayBuffer(...) method (2) Add tests for existing fromBufferToB64(...) (3) Add tests for new fromB64ToArrayBuffer(...) method (4) Add round trip conversion tests in both directions
* PM-2041 - Utils.spec - update round trip conversion tests between hex string and array buffer.
* PM-2041 - WebAuthnLoginService.spec - assertCredential(...) happy path test passing
* PM-2041 - WebAuthnLoginAssertionResponseRequest - Add interface
* PM-2041 - WebAuthnLoginAssertionResponseRequest data should be UrlB64 strings per discussion w/ Andreas
* PM-2041 - WebAuthnLoginService Spec file - Per feedback, reverse approaches to generating test data (go from array buffer to b64 strings vs the reverse) to avoid using math.random which can introduce test inconsistency
* PM-2041 - Finish testing assertCredential(...)
* PM-2041 - WebAuthnLoginService tests completed - tested logIn method
* PM-2041 - Login html - add "or" between standard email login and passkey login
* PM-2041 - WebAuthnLoginStrategy test start
* PM-2041 - After rebase - BaseLoginViaWebAuthnComponent - Must rename ForceResetPasswordReason to ForceSetPasswordReason + refactor post login routing logic to match other auth owned flows.
* PM-2401 - Desktop - login comp - fix desktop build
* PM-2041 - Browser - login comp - fix build issue
* PM-2401 - WIP on webauthn-login.strategy testing
* PM-2401 - Finish testing webauthn login strategy
* PM-2041 - WebAuthnAdminApiService renamed to WebAuthnLoginAdminApiService
* PM-2041 - Remove unnecessary comment
* PM-2041 - Per PR feedback, remove noMargin and just add mb-3
* PM-2041 - Per PR feedback, remove unused 2FA and remember email logic (2FA isn't supported right now and we aren't using non-discoverable credentials so we aren't using a user entered email)
* PM-2401 - BaseLoginViaWebAuthnComponent - improve error handling to allow users to retry w/ another passkey
* PM-2401 - Per PR feedback, provide translated message to cover all invalid passkey scenarios.
* PM-2401 - WebAuthnLoginService - per PR feedback, remove unnecessary from
* PM-2041 - WebAuthnLoginCredentialAssertionView - per PR feedback, use actual key type
* PM-2401 - Per PR feedback, remove WebAuthnLoginStrategy constructor as it is identical to its super class constructor
* PM-2041 - WebAuthnLoginService tests - use first value from to improve tests
* PM-2401 - Fix WebAuthnLoginService build issue after changing SymmetricCryptoKey to PrfKey
* PM-2041 - WebAuthnLoginServiceAbstraction remove incorrect undefined from getCredentialAssertionOptions() abstraction
* PM-2041 - Refacor WebAuthn login service tests based on PR feedback
* PM-2041 - Per PR feedback, remove NAVIGATOR_CREDENTIALS injection token and just use WINDOW directly for WebAuthnLoginService
* PM-2041 - WebAuthnLoginServiceAbstraction - per PR feedback, improve assertCredential jsdocs with return info
* PM-2041 - Per PR feedback, update WebAuthnLoginStrategy logInTwoFactor(...) to return an exception if attempted to be called.
* PM-2041 - WebAuthnLoginResponseRequest - per PR feedback, replace fromBufferToB64(...) with fromBufferToUrlB64(...)
* PM-2041 - AssertionOptionsResponse - use doc comment per PR feedback
* PM-2041 - Per PR feedback, adjust location of helpers and mocks in WebAuthnLoginStrategy test file
* PM-2041 - Adjust WebAuthnLoginService tests to take the WebAuthnLoginResponseRequest change to use fromBufferToUrlB64(...) into account to get tests to pass again
* PM-2041 - WebAuthnLoginStrategy - adjust test name to match convention per PR feedback
* PM-2041 - More test tweaks - (1) Rename method (2) Support strict
* PM-2041 - Per PR feedback, AssertionOptionsResponse constructor should null check allowCredentials b/c it is optional
* PM-2041 - Per PR Feedback, remove duplicated fromB64ToArrayBuffer(...) from utils and update tests.
* PM-2041 - Per PR feedback, rename WebAuthnTokenRequest to WebAuthnLoginTokenRequest
* PM-2041 - Per discussion with product and Andreas, add 2FA transition handling just in case we add server support in the future.
* feat: stretch PRF key (#6927)
* feat: stretch PRF key
includes necessary utils -> service refactors
* feat: add tests
* [PM-2041] feat: assertion-options `POST` -> `GET`
* [PM-2041] chore: remove unused properties
* [PM-2041] fix: set private key
* [PM-2041] feat: remove all 2FA related fields
* [PM-2041] chore: clean up 2FA comments
* [PM-2041] chore: document `webauthn-login-prf-crypto.service.abstraction.ts`
* [PM-2041] chore: document webauthn login services
---------
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
* added previous-url to global-state
* updated storage of previousUrl for SSO/MFA flows
* revert file changes
* added post login routing
* Clear PreviousUrl from storage on new Login
* Components do not call StateService anymore
* removed needed query params
* refactored components to use RouterService
* fixed build error
* fixed mfa component
* updated logic for previous Url
* removed unneeded base implementation
* Added state call for Redirect Guard
* Fixed test cases
* Remove routing service calls
* renamed global field, changed routing to guard
* reverting constructor changes and git lint issue
* fixing constructor ordering
* fixing diffs to be clearer on actual cahnges.
* addressing accepting emergency access case
* refactor and add locked state logic
* refactor name of guard to be more clear
* Added comments and tests
* comments + support lock page deep linking + code ownership
* readability updates
* Combined guards and specs updated routing
* Update oss-routing.module.ts
* fixed stroybook build
* Allow for update logic in state update callbacks
* Prefer reading updates to sending in stream
* Inform state providers when they must deserialize
* Update DefaultGlobalState to act more like DefaultUserState
* Fully Implement AbstractStorageService
* Add KeyDefinitionOptions
* Address PR feedback
* Prefer testing interactions for ports
* Synced memory storage for browser
* Fix port handling
* Do not stringify port message data
* Use messaging storage
* Initialize new foreground memory storage services
This will need to be rethought for short-lived background pages, but for
now the background is the source of truth for memory storage
* Use global state for account service
* Use BrowserApi listener to avoid safari memory leaks
* Fix build errors: debugging and missed impls
* Prefer bound arrow functions
* JSON Stringify Messages
* Prefer `useClass`
* Use noop services
* extract storage observable to new interface
This also reverts changes for the existing services to use
foreground/background services. Those are now used only in state
providers
* Fix web DI
* Prefer initializing observable in constructor
* Do not use jsonify as equality operator
* Remove port listener to avoid memory leaks
* Fix logic and type issues
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* update copy on /settings and /options (behind feature flag)
* update copy on /excluded-domains (behind feature flag)
* use && two check both conditions for presence of lock() button
* fix typos in messages
* add description on auto-fill page
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Adding enums for the browser popout type
* [PM-3914] Making the methods for getting a window in a targeted manner public
* [PM-3914] Refactoing implementation
* [PM-3914] Updating deprecated api call
* [PM-3914] Fixing issues found when testing behavior
* [PM-3914] Reimplementing behavior based on feedback from platform team
* [PM-3914] Adding method of ensuring previously opened single action window is force closed for vault item password reprompts
* [PM-3914] Taking into consideration feedback regarding the browser popup utils service and implementating requested changes
* [PM-3914] Removing unnecesssary class dependencies
* [PM-3914] Adding method for uniquely setting up password reprompt windows
* [PM-3914] Modifying method
* [PM-3914] Adding jest tests and documentation for AuthPopoutWindow util
* [PM-3914] Adding jest tests and documentation for VaultPopoutWindow
* [PM-3914] Adding jest tests for the debouncing method within autofill service
* [PM-3914] Adding jest tests for the new BrowserApi methods
* [PM-3914] Adding jest tests to the BrowserPopupUtils class
* [PM-3914] Updating inPrivateMode reference
* [PM-3914] Updating inPrivateMode reference
* [PM-3914] Modifying comment
* [PM-3914] Moviing implementation for openCurrentPagePopout to the BrowserPopupUtils
* [PM-3914] Applying feedback
* [PM-3914] Applying feedback
* [PM-3914] Applying feedback
* [PM-3983] Refactoring implementation of `setContentScrollY` to facilitate having a potential delay
* [PM-3914] Applying feedback regarding setContentScrollY to the implementation
* [PM-3914] Modifying early return within the run method of the ContextMenuClickedHandler
* [PM-3914] Adding test for VaultPopoutWindow
* [PM-4229] Autofill Overlay MVP
* [PM-2855] Add Settings to Enable Autofill Overlay (#6509)
* [PM-2855] Add Settings to Enable Autofill Overlay
* [PM-2855] Removing unnecessary key
* [PM-3914] Applying work done within PM-4366 to facilitate opening the popout window as a popup rather than a normal window
* [PM-3914] Updating the BrowserApi.removeTab method to leverage a callback structure for the promise rather than an async away structure
* [PM-3036] Adding jest tests for added passkeys popout windows
* [PM-3914] Adjsuting logic for turning off the warning when FIDO2 credentials are saved
* [PM-3914] Fixing height to design
* [PM-3914] Fixing call to Fido2 Popout
* [PM-3914] Fixing add/edit from fido2 popout
* [PM-3914] Fixing add/edit from fido2 popout
* [PM-3914] Fixing jest tests for updated elements
* [PM-3914] Reverting how context menu actions are passed to the view component
* [PM-3914] Reverting re-instantiation of config service within main.background.ts
* [PM-3914] Adding jest test for BrowserAPI removeTab method
* [PM-3914] Adding method to handle parsing the popout url path
* [PM-3914] Removing JSDOC comment elements
* [PM-3914] Removing await from method call
* [PM-3914] Simplifying implementation on add/edit
* [PM-3032] Adding more direct reference to view item action in context menus
* [PM-3034] Modify Autofill Callout to Consider Autofill Overlay Visibility (#6510)
* [PM-2855] Add Settings to Enable Autofill Overlay
* [PM-2855] Removing unnecessary key
* [PM-3034] Modify Autofill Callout to Consider Autofill Overlay Visibility
* [PM-3034] Adding translated strings
* [PM-3034] Updating boolean logic for showing the callout to remove unnecessary negation of boolean statement
* [PM-3914] Adjusting routing on Fido2 component to pass the singleActionPopout param to the route when opening the add-edit component
* [PM-3914] Adding singleActionPopout param to the fido2 component routing
* [PM-3914] Updating implementation details for how we build the extension url path
* [PM-3914] Reworking implementation for isSingleActionPopoutOpen to clean up iterative logic
* [PM-3914] Merging work from master and fixing merge conflicts
* [PM-3914] Fixing merge conflict introduced from master
* [PM-3914] Reworking closure of single action popouts to ensure they close the window instead of attempting to close the tab
* [PM-3036] Implement Autofill Overlay Unlock State (#6514)
* [PM-2855] Add Settings to Enable Autofill Overlay
* [PM-2855] Removing unnecessary key
* [PM-3034] Modify Autofill Callout to Consider Autofill Overlay Visibility
* [PM-3034] Adding translated strings
* [PM-3034] Add Autofill Overlay Vault Locked State
* [PM-3036] Bootstrap Autofill Overlay implementation and add locked vault state
* [PM-3032] Removing add/edit cipher message
* [PM-3036] Fixing lint error found within overlay background
* [PM-3036] Setting properties within the autofill component method to be protected
* [PM-3034] Updating boolean logic for showing the callout to remove unnecessary negation of boolean statement
* [PM-3036] Applying feedback from browser popout refactor PR
* [PM-3036] Adding ownership over the website icon service file to the autofill team
* [PM-3036] Updating the `autoFillOverlayVisibility` setting to be a client-scoped setting rather than account-scoped
* [PM-3036] Reworking jest setup implementation to facilitate approach recommended within code review
* [PM-3036] Updating WebsiteIconService to act as a single function reference and moving it to be under the vault team as codeowners
* [PM-3032] Show Matching Logins When User Interacts with Field (#6516)
* [PM-3032] Show Matching Logins When User Interacts with Field
* [PM-3032] Fixing issue found when changing pages
* [PM-3032] Addressing feedback within PR
* [PM-3032] Addressing feedback within PR
* [PM-3033] Allow User to Fill Matching Logins within Overlay (#6517)
* [PM-3033] Allow User to Fill Matching Logins within Overlay
* [PM-3035] Allow adding new items when no ciphers found in overlay (#6518)
* [PM-2319] Refactoring implementation to leverage styles within the encapsulated custom elements rather than inline on those elements
* [PM-2319] Leveraging globalThis to avoid potential DOM clobbering within implementation
* [PM-2319] Fixing issue where styles can override visibility of overlay icon and list
* [PM-2319] Fixing issue where styles can override visibility of overlay icon and list
* [PM-2319] Implementing more secure method for ensuring overlay is visible
* [PM-2319] Optimizing implementation of mutation observers on elements that need to enforce CSS styling
* [PM-2319] Refactoring how we handle mutation observers to allow for a more streamlined implementation approach
* [PM-2319] Implementing view cipher item initial workflow
* [PM-2319] Implementing obfruscation of username within login ciphers
* [PM-2747] Fixing logic error incorporated when merging in master
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2747] Fixing issue present with notification bar merge
* [PM-2130] Fixing test test for when we need to handle a password reprompt
* [PM-2319] Fixing issue present with context menu handler
* [PM-2319] Implementing fixes for password reprompt when autofilling from overlay
* [PM-2319] Working through accessibility and focus order on overlay elements
* [PM-2319] Finishing out focus redirection approach for focus out of overlay list
* [PM-2319] Working through screen reader accessibility including aria attributes
* [PM-2319] Adding guard to usage of extension privacy api
* [PM-2319] Adding guard to usage of extension privacy api
* [PM-2319] Adding aria description for fill cipher elements
* [PM-2319] Refactoring implementation
* [PM-2319] Working through implementation of view cipher tirggers when overlay set to view an element
* [PM-2319] Refining implementation for viewing vault item from overlay
* [PM-2319] Applying fix for context menu ciphers
* [PM-2319] Modifying namespace for overlay icon to overlay button
* [PM-2319] Refactoring OverlayButton
* [PM-2319] Refactoring OverlayButton
* [PM-2319] Adding translations for overlay content
* [PM-2319] Refactoring OverlayBackground class
* [PM-2319] Refactoring OverlayBackground class to more optimially store and retrieve cipher data for the overlay elements
* [PM-2319] Refactoring OverlayBackground class
* [PM-2319] Refactoring AutofillOverlayList class structure
* [PM-2319] Implementing randomization of custom element names for elements injected into tab
* [PM-2319] Updating how we handle referencing port messages within the OverlayIframe service
* [PM-3465] Optimization of CollectPageDetails Message within Autofill
* [PM-3465] Implementing caching for CollectPage details call
* [PM-3465] Implementing caching for CollectPage details call
* [PM-3465] Implementing method for ensuring that getPageDetails is not called when no fields appear within a frame
* [PM-3465] Implementing Mutation Observer to handle updating autofill fields when DOM updates
* [PM-2747] Fixing wording for webpack script
* [PM-2130] - Audit, Modularize, and Refactor Core autofill.js File (#5453)
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing test test for when we need to handle a password reprompt
---------
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* [PM-2747] Finanlizing implementation of attribute updates on cached values
* [PM-2319] Refactoring implementation to reposition OverlayIframe classes
* [PM-3465] Finalizing implementation of mutation observer behavior and CollectPageDetails optimization
* [PM-3465] Adding jest tests for introduced functionality
* [PM-3465] Finalizing jest tests and comments within implementation
* [PM-3465] Removing a TODO by incorrporating a method for deep querying for a password field element
* [PM-3465] Removing a TODO by incorrporating a method for deep querying for a password field element
* [PM-3285] Migrating Changes from PM-1407 into autofill v2 refactor implementation
* [PM-2747] Addressing stylistic changes requested from code review
* [PM-2319] Refactoring implementation
* [PM-2747] Add Support for Feature Flag of Autofill Version (#5695)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2747] Add Support for Feature Flag of Autofill Version
* [PM-2747] Adding Support for Manifest v3 within the implementation
* [PM-2747] Modifying how the feature flag for autofill is named
* [PM-2747] Modifying main.background.ts to load the ConfigApiService correctly
* [PM-2747] Refactoring trigger of autofill scripts to be a simple immediately invoked function
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2747] Modifying how we inject the autofill scripts to ensure we are injecting into all frames within a page
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2747] Applying a fix for a race condition that can occur when loading the notification bar and autofiller script login
* [PM-2747] Reverting removal of autofill npm action. Now this will force usage of autofill-v2 regardless of whether a feature flag is set or not
* [PM-2747] Fixing logic error incorporated when merging in master
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2747] Fixing issue present with notification bar merge
* [PM-2130] Fixing test test for when we need to handle a password reprompt
* [PM-2747] Fixing wording for webpack script
* [PM-2747] Addressing stylistic changes requested from code review
* [PM-2747] Addressing stylistic changes requested from code review
---------
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
* [PM-3285] Applying stylistic changes suggested by code review for the feature flag implementation
* [PM-3285] Adding temporary console log to validate which version is being used
* [PM-2319] Adjusting translation content
* [PM-3465] Implementing a methodology for sorting the autofill field elements after awaiting the results of each element
* [PM-3465] Implementing a methodology for sorting the autofill field elements after awaiting the results of each element
* [PM-3465] Implementing a methodology for using cached field values when requerying DOM for elements
* [PM-2319] Adjusting translation content
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Removing unnecesssary methods within OverlayBackground and AutofillOverlayContentService
* [PM-2319] Refactoring implementation and incorpoarting BrowserApi class more effectively
* [PM-2319] Fixing issue found with opening overaly element during reprompt of vault item
* [PM-2319] Fixing issue found with auth status not updating when overlay is initializing
* [PM-2319] Implementing a method for initializing the overlay with the user auth status
* [PM-2319] Fixing issue where shadowRoot elements might not initialize overlay on setup
* [PM-2319] Implementing await for runFillScriptAction
* [PM-2319] Implementing methodology for having list of elements hide after user starts inputting within field
* [PM-2319] Removing unnecesssary methods within OverlayBackground and AutofillOverlayContentService
* [PM-2319] Fixing tab focus issue
* [PM-2319] Fixing issue where page details would unload sooner than desired
* [PM-2319] Fixing tab focus issues present on page details
* [PM-2319] Adjusting how we iterate over cipher data
* [PM-2319] Refactoring overlay background
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Refactoring and optimizing for loops
* [PM-2319] Refactoring and optimizing how we listen for overlay element ports
* [PM-2319] Implementing method for ensuring overlay removes itself if user scrolls focused input element out of viewport
* [PM-2319] Replacing usage of foreach for a regular for loop
* [PM-2319] Replacing usage of foreach for a regular for loop
* [PM-2319] Refactoring forEach loops within CollectAutofillContent and moving autofill utils to a top level
* [PM-2319] Refactoring getRandomCustomElementName util method
* [PM-2319] Refactoring implementation
* [PM-2319] Refactoring implementation
* [PM-2319] Replacing hardcoded values for events with constant enum
* [PM-2319] Adding reduced animation declaration for fill
* [PM-2319] Adjusting implementation of mutation observer to better handle insertion of elements around overlay
* [PM-2319] Fixing jest test
* [PM-2319] Implementing method for ensuring tab focus from the overlay button can move to the correct place
* [PM-2319] Refactoring implementation
* [PM-3285] Removing temporary console log indicating which version of autofill the user is currently loading
* [PM-3465] Adding scripting api reference to the manifest v3 json file
* [PM-2319] Splitting shared logic within the overlay page implementations to act as a parent class for the overlay button and list pages
* [PM-2319] Updating file names for page scripts
* [PM-2319] Updating file names for page scripts
* [PM-2319] Fixing issues present with overlay background when updating auth status
* [PM-2319] Refactoring implementation
* [PM-2319] Fixing cache invalidation issues present with the collect page details optimization
* [PM-3465] Updating implementation to deal with cache invalidation issues
* [PM-3465] Implementing jest tests for added collect autofill content class elements
* [PM-3465] Removing scripting API permissiong within manifest v3 json file
* [PM-2319] Adding scripting api to manifest v3
* [PM-2319] Fixing issue present with non visible fields having an overlay element
* [PM-3465] Implementing method for removing cached page details if the window location has updated
* [PM-3465] Fixing issue found with query selector generated while collecting page details
* [PM-2319] Commenting out code that overrides default browser autofill behavior in chrome
* [PM-3465] Fixing jest tests
* [PM-3465] Fixing jest tests
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Updating typing information for the Overlay Background
* [PM-2319] Adding typing information for notification changes
* [PM-2319] Finalizing OverlayBackground typing info and removing browser autofill override method
* [PM-2319] Refining typing information within different service classes
* [PM-2319] Finalizing typing information within implementation
* [PM-2319] Further refinement and fixes for icon element
* [PM-2319] Fixing issue where submission of form and presentation of notification bar can offset the overlay element
* [PM-2319] Fixing issues present with keyboard focus and determining when to open the overlay upon user interaction
* [PM-2319] Adding in change to fix issue where autofill is occurring when iframes exist
* [PM-2319] Implementing lazy load of UI elements
* [PM-2319] Fixing issue present with lazy loading of cipher elements
* [PM-2319] Fixing issue present with lazy loading of cipher elements
* [PM-2319] Modifying offset for the ciphers list container
* [PM-2319] Fixing issue encountered with autofilling using keyboard
* [PM-2319] Modifying initialization of iframe element
* [PM-2319] Fixing an issue where login ciphers that do not contain a user name will not display within the overlay list
* [PM-2855] [PM-3034] Add Setting to Enable Autofill Overlay (#6194)
* [PM-2855] Add Settings to Enable Autofil Overlay
* [PM-2855] Adding feature flag for overlay
* [PM-2855] Implementing autofill overlay setting within browser extension
* [PM-2855] Implementing autofill overlay appearance setting
* [PM-2855] Implementing behavior within autofill overlay to conditionally display either the icon or the full list on focus of an element
* [PM-2855] Implementing a fix for when focus changes with the form field visible
* [PM-2855] Modifying rules for how the callout appears within the current-tab component
* [PM-2855] Modifying enum for autofill overlay appearance
* [PM-2855] Implementing check to ensure autofill overlay setting is not visible if the feature flag is not set
* [PM-2855] Fixing jest tests within implementation
* [PM-2855] Modifying how we pull the overlay appearance information for the end user
* [PM-2855] Applying changes to the structure for how the overlay settings are identified and verified
* [PM-2855] Applying changes to the structure for how the overlay settings are identified and verified
* [PM-2855] Adding translations content
* [PM-2855] Modifying implementation for how autofill settings populate and present themselves
* [PM-2855] Modifying implementation for how autofill settings populate and present themselves
* [PM-2855] Adding the ability to override autofill permissions within Chrome as an opt-in
* [PM-2855] Modifying message sent when vault item reprompt popout is opened
* [PM-2855] Fixing issue encountered with how we handle lazy loading vaul items
* [PM-2855] Fixing issue present when iframe is updating position when the window focus changes
* [PM-3982] Implement Autofill Overlay unit tests (#6337)
* [PM-2319] Jest Tests for Autofill Overlay MVP
* [PM-2319] Jest test stubs for OverlayBackground
* add tests and cleanup (#6341)
* [PM-3983] Implementing test for `updateAutofillOverlayCiphers`
* [PM-3983] Implementing test for `updateAutofillOverlayCiphers`
* [PM-3983] Working through jest tests for overlay background
* [PM-3983] Adding jest tests for OverlayBackground
* [PM-3983] Adding jest tests for OverlayBackground;
* [PM-3983] Adding jest tests for getAuthStatus
* [PM-3983] Adding jest tests for getAuthStatus
* [PM-3983] Adding jest tests for getTranslations
* [PM-3983] Finalizing jest tests for OverlayBackground
* [PM-3983] Finalizing jest tests for OverlayBackground
* [PM-3982] Updating unit tests within AutofillInit
* [PM-3982] Adding jest tests for AutofillOverlayIframeElement, AutofillOverlayButtonIframe, and AutofillOverlayListIframe
* [PM-3982] Adding jest tests for the AutofillOverlayIframeService class
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3982] Filling out unit tests for the AutofillService class
* [PM-3982] Implementing unit tests for the AutofillOverlayPageElement custom element class
* [PM-3982] Updating elements to better allow for testing of the AutofillOverlayList and AutofillOverlayButton classes
* [PM-3982] Adding jest tests for AutofillOverlayList custom element class
* [PM-3982] Adding jest tests for AutofillOverlayList custom element class
* [PM-3982] Adding jest tests for the AutofillOverlayButton custom element class
* [PM-3982] Adding jest tests for the AutofillOverlayButton custom element class
* [PM-3982] Updating obsolete snapshot
* add tests for AutofillOverlayIframeService
* [PM-3982] Refactoring
* [PM-3982] Refactoring
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* [PM-2319] Adjusting implementation for how we open the unlock popout to facilitate skipping the notification
* [PM-2319] Adjusting typing information within the OverlayBackground class and fixing issue found within the AutofillOverlayList implementation
* [PM-2319] Adjusting JSDOC comment within NotificationBackground
* [PM-2319] Refactoring OverlayBackground tests
* [PM-2319] Refactoring OverlayBackground tests
* [PM-2319] Refactoring JSDOC comments
* [PM-2319] Adding jest tests to modified TabsBackground class
* [PM-2319] Refactoring jest tests for AutofillInit
* [PM-2319] Refactoring AutofillInit JSDOC messages
* [PM-2319] Applying refactors to AutofillInit
* [PM-2319] Applying refactors to fying info for the AutofillOverlayIframeService
* [PM-2319] Adding the ability to apply the extension theme to the overlay elements
* [PM-2319] Adjusting background offset on darker themes
* [PM-2319] Adjusting background offset on darker themes
* [PM-2319] Adding JSDOC comments to the overlay iframe service
* [PM-2319] Cleaning up implementation
* [PM-2319] Cleaning up implementation
* [PM-2319] Adding removal of unknown manifest key, `sandbox`, from the Firefox manifest
* [PM-2319] Updating manifest v3 implementation to facilitate presentation of the overlay page elements
* [PM-2319] Adding documentation to the changes to BrowserApi
* [PM-2855] Removing unnecessary key
* [PM-2319] Removing unnecesssary abstraction file
* [PM-3035] Reverting changes to package-lock.json
* [PM-3035] Reverting changes to package-lock.json
* [PM-3035] Reverting added logs
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* [PM-3032] Fixing issue with flashing background on overlay iframe list element
* [PM-3032] Modifying how we determine the size of the overlay button element to facilitate smaller scaling on larger sized input elements
* [PM-3032] Modifying how load actions are handled within the browser view component to clarify the triggered logic.
* [PM-3032] Adjusting implementation to how we trigger copy actions
* [PM-3032] Setting copyActions to be a static member of the view component class
* [PM-3032] Merging in changes
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* [PM-3914] Fixing issue within Opera where lock and login routes can persist if user opens the extension popout in a new window before locking or logging out
* [PM-3914] Setting the extensionUrls that are cheked as a variable outside of the scope fo the openUlockPopout method to ensure it does not have to be rebuilt each time the method is called
* [PM-4744] Page Details that Update after Mutation Observer has Triggered Do Not Update within Overlay Background (#6848)
* [PM-4743] Windows Chromium Browser is Not Updating Overlay Ciphers on Tab Update (#6863)
* [PM-4763] Fixing Issues with the Overlay UI Positioning and Presentation (#6864)
* [PM-4763] Fixing overlay UI issues
* [PM-4736] Implementing a method to ensure that the overlay is refreshed anytime the overlay has lost visibility
* [PM-4763] Implementing a fix for a delayed opening of the overlay element where elements in the documentElement could potentially overlay our own UI element
* [PM-4763] Implementing a fix for when the visibility of the dom changes to facilitate removing the overlay element if necessary
* [PM-4763] Fixing jest tests
* [PM-4763] Fixing global references
* [PM-4790] Overlay not resetting on scroll of websites that do not scroll body element (#6877)
* [PM-4790] Overlay not resetting on scroll of websites that do not scrollt he body element
* [PM-4790] Setting up the scroll event to capture rather than setting mousewheel and touchmove events
* [PM-4790] Setting up constants for referenced events
* [PM-4229] Fixing issue found when collecting page details
* [PM-4229] Implementing optimization to ensure we only rebuild the autofill item if the overlay needs to set the listeners on the field
* [PM-4229] Adjusting copy for autofill callout message
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* updated report components to only show can edit ciphers, added badges, spec files
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Remove unneeded ApiService
* Extract SendAccess for sends of type text
* Migrate form and card-body
* Migrate callout
* Extract SendAccess for sends of type file
* Converted SendAccess component to standalone
* Migrated bottom message to CL
* Added Send Access Password Component
* Added No item component, password component and changed bootstrap classes
* Updated send texts and added layout for unexpected error
* Changed SendAccessTextComponent to standalone
* Moved AccessComponent to oss.module.ts and removed unnecessary components from app.module
* Properly set access modifiers
* Using async action on download button
* Updated links
* Using tailwind classes
* Using ng-template and ng-container
* Added validation to check if status code is from a wrong password
* Using Component Library Forms
* using subscriber to update password on send access
* Using reactive forms to show the text on send access
* Updated message.json keys for changed values
* Removed unnecessary components and changed classes to tailwind ones
* added margin bottom on send-access-password to keep consistent with other send-access layouts
* removed duplicated message key
* Added error toast message on wrong password
---------
Co-authored-by: Daniel James Smith <djsmith@web.de>
* Move Account Settings
* Add Another Test
* Refactor Tests
* Update Notification Bar to Get Value From Global
* Also Migrate Disable Context Menu
* Add Explanation
* PM-3659 - Passkey registration - if the require SSO policy applies to the user, disable user's ability to enable passkey registration and the ability to create new credentials if they already have some + display message indicating why the feature is off. We still must allow users to remove existing credentials.
* PM-3659 - Replace policyService.get$ with policyService.policyAppliesToActiveUser$
* PM-3659 - CreateCredentialDialogComp - remove error handling as async actions has better handling built in already.
* Allow for update logic in state update callbacks
* Prefer reading updates to sending in stream
* Inform state providers when they must deserialize
* Update DefaultGlobalState to act more like DefaultUserState
* Fully Implement AbstractStorageService
* Add KeyDefinitionOptions
* Address PR feedback
* More Descriptive Error
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* [PM-3574] Fix leak of login credentials to foreign origin due to race condition during autofill
* [PM-3574] Adding a temporary artificial delay to facilitate QA testing
* [PM-3574] Adding a temporary artificial delay to facilitate QA testing
* [PM-4590] Cached Page Details of Formless Input Fields Breaks Autofill
* [PM-3574] Reworking implementation to take into account the page details url
* [PM-3574] Fixing jest tests
* [PM-3574] Fixing jest tests
* [PM-3574] Removing 5 second delay on autofill
* add server url to account switcher tab
* add serverUrl to SwitcherAccount(s)
* refactor serverUrl getter
* cleanup urls
* adjust styling
* remove SwitcherAccount class
* remove authenticationStatus from AccountProfile
* rename to inactiveAccounts for clarity
* move business logic to environmentService
* use tokenService instead of stateService
* cleanup type and comments
* remove unused property
* replace magic strings
* remove unused function
* minor refactoring
* refactor to use environmentService insead of getServerConfig
* use Utils.getHost() instead of Utils.getDomain()
* create getHost() method
* remove comment
* get base url as fallback
* resolve eslint error
* Update apps/desktop/src/app/layout/account-switcher.component.html
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
---------
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Fix card number not being populated for Greek provider Eurobank.
They use the identifier `card.pan` for the card number, both in the `name` attr and the `id`.
* Replace the dot with a dash so that it can be removed in isFieldMatch.
---------
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* on page location change, display notifications that have not been dismissed nor expired
* also dismiss notifications when removing them from the queue during cleanup
* cleanup
* added bitDialog close to button element
* remove deprecated data-dismiss attribute
---------
Co-authored-by: stoler <stoler@Internet>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Add StateDefinition
Add a class for encapsulation information about state
this will often be for a domain but creations of this will
exist outside of a specific domain, hence just the name State.
* Add KeyDefinition
This adds a type that extends state definition into another sub-key
and forces creators to define the data that will be stored and how
to read the data that they expect to be stored.
* Add key-builders helper functions
Adds to function to help building keys for both keys scoped
to a specific user and for keys scoped to global storage.
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
* Add updates$ stream to existing storageServices
Original commit by Matt: 823d9546fe
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
* Add fromChromeEvent helper
Create a helper that creats an Observable from a chrome event
and removes the listener when the subscription is completed.
* Implement `updates$` property for chrome storage
Use fromChromeEvent to create an observable from chrome
event and map that into our expected shape.
* Add GlobalState Abstractions
* Add UserState Abstractions
* Add Default Implementations of User/Global state
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
* Add Barrel File for state
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
* Fix ChromeStorageServices
* Rework fromChromeEvent
Rework fromChromeEvent so we have to lie to TS less and
remove unneeded generics. I did this by caring less about
the function and more about the parameters only.
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
* Fix UserStateProvider Test
* Add Inner Mock & Assert Calls
* Update Tests to use new keys
Use different key format
* Prefer returns over mutations in update
* Update Tests
* Address PR Feedback
* Be stricter with userId parameter
* Add Better Way To Determine if it was a remove
* Fix Web & Browser Storage Services
* Fix Desktop & CLI Storage Services
* Fix Test Storage Service
* Use createKey Helper
* Prefer implement to extending
* Determine storage location in providers
* Export default providers publicly
* Fix user state tests
* Name tests
* Fix CLI
* Prefer Implement In Chrome Storage
* Remove Secure Storage Option
Also throw an exception for subscribes to the secure storage observable.
* Update apps/browser/src/platform/browser/from-chrome-event.ts
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Enforce state module barrel file
* Fix Linting Error
* Allow state module import from other modules
* Globally Unregister fromChromeEvent Listeners
Changed fromChromeEvent to add its listeners through the BrowserApi, so that
they will be unregistered when safari closes.
* Test default global state
* Use Proper Casing in Parameter
* Address Feedback
* Update libs/common/src/platform/state/key-definition.ts
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Add `buildCacheKey` Method
* Fix lint errors
* Add Comment
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Use Generic in callback parameter
* Refactor Out DerivedStateDefinition
* Persist Listener Return Type
* Add Ticket Link
---------
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* [PM-1337] Remove unused ModalService
* [PM-1337] Use memberOrganization$ instead of deprecated isMember filter
* [PM-1337] Move bitMenu into organization-options.component.html and update show/hide logic for various options
* [PM-1337] Use observables for injected data in dynamic vault filter option
Dynamic components do not currently support input data binding (available in Angular 16) so an observable must be passed into and subscribed by the dynamic component to receive updates.
* [PM-1337] Cleanup organization-options.component.ts
* [PM-1337] Use bitMenu directives instead of explicit TW classes
* [PM-1337] Refactor app-link-sso into a directive to remove redundant template
* [PM-1337] Fix failing tests
* lazy load and move accept emergency component
* create emergency access services
- move api calls to specific api service and refactor
* remove any from emergency api service
* move emergency access logic to service
* create emergency access view
* move view ciphers logic to service
* move models to web folder
* move takeover logic to service
* remove emergency api service dependency from other files
* write tests for emergency access service
* import shared module into component
* fix imports
* Revert "fix imports"
This reverts commit d21cb02bd8.
* create emergency access module for service
* move emergency access out of core folder
- add more organization to components under settings
* change EA views to domain models
* move EA enums to folder
* resolve PR feedback
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Adding enums for the browser popout type
* [PM-3914] Making the methods for getting a window in a targeted manner public
* [PM-3914] Refactoing implementation
* [PM-3914] Updating deprecated api call
* [PM-3914] Fixing issues found when testing behavior
* [PM-3914] Reimplementing behavior based on feedback from platform team
* [PM-3914] Adding method of ensuring previously opened single action window is force closed for vault item password reprompts
* [PM-3914] Taking into consideration feedback regarding the browser popup utils service and implementating requested changes
* [PM-3914] Removing unnecesssary class dependencies
* [PM-3914] Adding method for uniquely setting up password reprompt windows
* [PM-3914] Modifying method
* [PM-3914] Adding jest tests and documentation for AuthPopoutWindow util
* [PM-3914] Adding jest tests and documentation for VaultPopoutWindow
* [PM-3914] Adding jest tests for the debouncing method within autofill service
* [PM-3914] Adding jest tests for the new BrowserApi methods
* [PM-3914] Adding jest tests to the BrowserPopupUtils class
* [PM-3914] Updating inPrivateMode reference
* [PM-3914] Updating inPrivateMode reference
* [PM-3914] Modifying comment
* [PM-3914] Moviing implementation for openCurrentPagePopout to the BrowserPopupUtils
* [PM-3914] Applying feedback
* [PM-3914] Applying feedback
* [PM-3914] Applying feedback
* [PM-3983] Refactoring implementation of `setContentScrollY` to facilitate having a potential delay
* [PM-3914] Applying feedback regarding setContentScrollY to the implementation
* [PM-3914] Modifying early return within the run method of the ContextMenuClickedHandler
* [PM-3914] Adding test for VaultPopoutWindow
* [PM-3914] Applying work done within PM-4366 to facilitate opening the popout window as a popup rather than a normal window
* [PM-3914] Updating the BrowserApi.removeTab method to leverage a callback structure for the promise rather than an async away structure
* [PM-3036] Adding jest tests for added passkeys popout windows
* [PM-3914] Adjsuting logic for turning off the warning when FIDO2 credentials are saved
* [PM-3914] Fixing height to design
* [PM-3914] Fixing call to Fido2 Popout
* [PM-3914] Fixing add/edit from fido2 popout
* [PM-3914] Fixing add/edit from fido2 popout
* [PM-3914] Fixing jest tests for updated elements
* [PM-3914] Reverting how context menu actions are passed to the view component
* [PM-3914] Reverting re-instantiation of config service within main.background.ts
* [PM-3914] Adding jest test for BrowserAPI removeTab method
* [PM-3914] Adding method to handle parsing the popout url path
* [PM-3914] Removing JSDOC comment elements
* [PM-3914] Removing await from method call
* [PM-3914] Simplifying implementation on add/edit
* [PM-3032] Adding more direct reference to view item action in context menus
* [PM-3914] Adjusting routing on Fido2 component to pass the singleActionPopout param to the route when opening the add-edit component
* [PM-3914] Adding singleActionPopout param to the fido2 component routing
* [PM-3914] Updating implementation details for how we build the extension url path
* [PM-3914] Reworking implementation for isSingleActionPopoutOpen to clean up iterative logic
* [PM-3914] Merging work from master and fixing merge conflicts
* [PM-3914] Fixing merge conflict introduced from master
* [PM-3914] Reworking closure of single action popouts to ensure they close the window instead of attempting to close the tab
* [PM-3914] Fixing issue within Opera where lock and login routes can persist if user opens the extension popout in a new window before locking or logging out
* [PM-3914] Setting the extensionUrls that are cheked as a variable outside of the scope fo the openUlockPopout method to ensure it does not have to be rebuilt each time the method is called
* Add access-policy-selector
* Update to access-policy service and models
* Add access-policy service tests
* Use new selector in project-people
* Fix access removal dialog bug (#6653)
* [PM-2241] chore: refactor into new "pending" view type
* [PM-2241] feat: record PRF support
* [PM-2241] feat: add prf checkbox to dialog
* [PM-2241] chore: remove `disableMargin` instead
Will expressed his concern that these things aren't sustainable, and that we should try using `!important` statements instead, which is a good point!
* [PM-2241] feat: add prf registration
* [PM-2241] feat: add support for `prfStatus`
* [PM-2241] feat: add rotateable key set
* [PM-2241] feat: add PRF creation error handling
* [PM-2241] chore: improve rotateable key docs
* [PM-2241] feat: add basic test
* [PM-2241] chore: update `SaveCredentialRequest` docs
* [PM-2241] chore: rename to `WebauthnLoginAdminService`
* [PM-2241] fix: typo in `save-credential.request.ts`
* [PM-2241] fix: typo in more places
* [PM-4717] Fixed teams starter typo in trial initiation
* [PM-4716] Fixed duplicated information in enterprise plan details
* [AC-1799] Resolved unresponsive "invite members" button when adding users to org
* Added support for the teams starter plan
* Plans now respect display sort order. Updated teams starter to be in its own product
* Remove upgrade button and show new copy instead -- wip copy
* Added upgrade dialog for teams starter plan when adding an 11th user
* Updated the add user validator to check if plan is teams starter. Updated to not count duplicated emails in the overall count
* Renamed validator to be more descriptive and added additional unit tests
* Added validator for org types that require customer support to upgrade
* Updated small localization for teams plan to account for new starter plan
* Removed invalid tests
* Resolved issues around free trial flow for teams starter
* Added new layout for teams starter free trial flow
* Updated copy following demo. Resolved display issues discovered during demo
* Removed temporary copy for testing
* Updated the second step of free trial flow to use org display name
* Updated invite user modal to display 10 instead of 20 as the invite limit for Teams Starter
---------
Co-authored-by: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com>
* PM-3275 - Policy.service - Refactor existing mapPoliciesFromToken internal logic to provide public mapPolicyFromResponse method
* PM-3275 - Add new PolicyApiService.getMasterPasswordPolicyOptsForOrgUser method for use in the set password comp
* PM-3275 - Update set-password.comp to use new policyApiService.getMasterPasswordPoliciesForInvitedUsers method
* PM-3275 - (1) Remove post TDE AuthN set password routing logic from SSO/2FA comps as we cannot set an initial user password until after decryption in order to avoid losing the ability to decrypt existing vault items (a new user key would be created if one didn't exist in memory) (2) Add set password routing logic post TDE decryption in LoginWithDevice/Lock components (3) Add new ForceResetPasswordReason to capture this case so that we can guard against users manually navigating away from the set password screen
* PM-3275 - SyncSvc - Add logic for setting forcePasswordReset reason if TDE user w/out MP went from not having MP reset permission to having it.
* PM-3275 - Rename ForceResetPasswordReason enum to ForceSetPasswordReason + update all references.
* PM-3275 - Removing client deprecated calls to getPoliciesByInvitedUser and helper call getMasterPasswordPoliciesForInvitedUsers
* PM-3275 - PolicyAPI service - remove no longer necessary getPoliciesByInvitedUser method
* PM-3275 - LockComp - TODO cleanup
* PM-3275 - SSO & 2FA comp - cleanup of incorrect routing path
* PM-3275 - (1) State service refactor - change getForcePasswordResetReason / setForcePasswordResetReason to be getForceSetPasswordReason / setForceSetPasswordReason (2) Sync Service - encapsulate setForceSetPasswordReasonIfNeeded logic into own method
* PM-3275 - SetPassword Comp - Rename "identifier" to be "orgSsoIdentifier" for clarity
* PM-3275 - SetPasswordComp - Moving routing from SSO / 2FA comps to Lock / LoginWithDevice comps results in a loss of the the OrgSsoId. However, as part of the TDE work, we added the OrgSsoId to state so use that as a fallback so we can accurately evaluate if the user needs to be auto enrolled in admin account recovery.
* PM-3275 - SetPasswordComp - add a bit more context to why/when we are reading the user org sso id out of state
* PM-3275 - SetPassword Comp - (1) Add forceSetPasswordReason and ForceSetPasswordReason enum as public props on the class so we can change copy text based on which is set + set forceSetPasswordReason on ngOnInit (2) Refactor ngOnInit to use a single RxJs observable chain for primary logic as the auto enroll check was occurring before the async getUserSsoOrganizationIdentifier could finish.
* PM-3275 - Desktop - App comp - missed replacing getForcePasswordResetReason with getForceSetPasswordReason
* PM-3275 - TDE Decryption Option Comps - must set ForceSetPasswordReason so that we can properly enforce keeping the user on the component + display the correct copy explaining the scenario to the user.
* PM-3275 - All Clients - SetPasswordComp html - Update page description per product + remove no longer used ssoCompleteRegistration translation.
* PM-3275 - SetPasswordComp - hopefully the final puzzle piece - must clear ForceSetPasswordReason in order to let user navigate back to vault.
* PM-3275 - SyncService - Remove check for previous value of account decryption options hasManageResetPasswordPermission as when a user logged in on a trusted device after having their permissions updated, the initial setting would be true and it would cause the flag to NOT be set when it should have.
* PM-3275 - TDE User Context - (1) Remove explicit navigation to set password screen from post decryption success scenarios on lock & login w/ device comps (2) Move TdeUserWithoutPasswordHasPasswordResetPermission flag setting to SSO / 2FA components to support both trusted and untrusted device scenarios (both of which are now caught by the auth guard).
* PM-3275 - (1) SetPassword comp - adjust set password logic for TDE users to avoid creating a new user asymmetric key pair and setting a new private key in memory. (2) Adjust SetPasswordRequest to allow null keys
* PM-3275 - Remove unused route from login with device comp
* PM-3275 - Sso & 2FA comp tests - Update tests to reflect new routing logic when TDE user needs to set a password
* PM-3275 - Lock comp - per PR feedback, remove unused setPasswordRoute property.
* PM-3275 - SetPasswordComp - Per PR feedback, use explicit null check
* PM-3275 - Per PR Feedback, rename missed forcePasswordResetReason to be forceSetPasswordReason on account model
* PM-3275 - Auth guard - rename forcePasswordResetReason to forceSetPasswordReason
* PM-3275 - SSO / 2FA comps - Per PR feedback, refactor Admin Force Password reset handling to be in one place above the TDE user flows and standard user flows as it applies to both.
* PM-3275 - Per PR feedback, clarify 2FA routing comment
* PM-3275 - Per PR feedback, update set-password comp ngOnInit switchMaps to just return promises as switchMap converts promises to observables internally.
* PM-3275 - Per PR feedback, refactor set password ngOnInit observable chain to avoid using async subscribe and instead simply sequence the calls via switchMap and tap for side effects.
* PM-3275 - Per PR feedback, move tap after filter so we can remove if check
* PM-3275 - Per PR feedback, update policy service mapping methods to use shorthand null checking.
* PM-3275 - SetPassword comp - (1) Move force set password reason logic into onSetPasswordSuccess(...) (2) On onSetPasswordSuccess, must set hasMasterPassword to true for user verification scenarios.
* PM-3275 - Per PR feedback, remove new hasManageResetPasswordPermission flag from profile response and instead simply read the information off the existing profile.organizations data as the information I needed was already present.
* PM-4633 - PolicyService - mapPolicyFromResponse(...) - remove incorrect null check for data. Policies with internal null data property should still be evaluated and turned into Policy objects or the policy array ends up having null values in it and it causes errors down the line on login after acct creation.
* [PM-3722] fix: wrong translation bug
* [PM-3722] feat: use user verification component during creation
* [PM-3722] feat: use user verification component during deletion
* [PM-3722] feat: improve error handling
* Tweak account switcher button
- if it opens a dialog, it should advertise this with `aria-haspopup="dialog"`, not `aria-haspopup="menu"`
- if it opens a dialog, the `aria-expanded` is pointless (as the user will never get back out into the underlying page to check if it's expanded or collapsed, since it's for a dialog not a disclosure widget or menu)
* Make two variants for button to sort out `aria-label` on logged-in case
* Remove `aria-controls` for button
as it's a dialog that opens, not a disclosure, this is irrelevant
* Fix `overlayPostition` typo
* Simplify approach
just use existing single button, but add visually hidden extra "Switch account" to accName
* Tweak account switch buttons in dialog/dropdown
* Take out the confusing "Logged in as..." a11y text
* Use visible button text (with a few extra `sr-only` parts, for readability) as the button's accName
* Add the "Switch account" context to each of the buttons to make clear what they do
* Collate browser header concerns into component
Header component has a slots field with a left, center, right, and a
right-most location for a current account, which will link to an account
switcher.
* Use feature flag if OK for production eventually
* Make sure centered content centered
* Allow for disabling header theming for login page
visual gitches exist for links and buttons, due to specifications futher down in the header, but those
items shouldn't use the `no-theme` option. For now, it's just for the
login screen
* Add Account Switching Component
* Collate browser header concerns into component
Header component has a slots field with a left, center, right, and a
right-most location for a current account, which will link to an account
switcher.
* Use feature flag if OK for production eventually
* Add Account Switching Component
* Fix Rebase Issues
* Remove Comments
* Move AccountSwitcher Logic Into Service
* Rename File
* Move Router to Component
* Add Tests for AccountSwitcherService
---------
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Collate browser header concerns into component
Header component has a slots field with a left, center, right, and a
right-most location for a current account, which will link to an account
switcher.
* Use feature flag if OK for production eventually
* Make sure centered content centered
* Allow for disabling header theming for login page
visual gitches exist for links and buttons, due to specifications futher down in the header, but those
items shouldn't use the `no-theme` option. For now, it's just for the
login screen
* Select sr-only headers
* Fix vault-filter center header component
* Correct hover for header buttons/links
* Ensure no visual difference when flag is off
* Split up import/export into separate modules
* Fix routing and apply PR feedback
* Renamed OrganizationExport exports to OrganizationVaultExport
* Make import dialogs standalone and move them to libs/importer
* Make import.component re-usable
- Move functionality which was previously present on the org-import.component into import.component
- Move import.component into libs/importer
Make import.component standalone
Create import-web.component to represent Web UI
Fix module imports and routing
Remove unused org-import-files
* Enable importing on deskop
Create import-dialog
Create file-menu entry to open import-dialog
Extend messages.json to include all the necessary messages from shared components
* Renamed filenames according to export rename
* Make ImportWebComponent standalone, simplify routing
* Pass organizationId as Input to ImportComponent
* use formLoading and formDisabled outputs
* use formLoading & formDisabled in desktop
* Emit an event when the import succeeds
Remove Angular router from base-component as other clients might not have routing (i.e. desktop)
Move logic that happened on web successful import into the import-web.component
* Enable importing on deskop
Create import-dialog
Create file-menu entry to open import-dialog
Extend messages.json to include all the necessary messages from shared components
* use formLoading & formDisabled in desktop
* Add missing message for importBlockedByPolicy callout
* Remove commented code for submit button
* Implement onSuccessfulImport to close dialog on success
* fix table themes on desktop & browser
* fix fileSelector button styles
* update selectors to use tools prefix; remove unused selectors
* update selectors
* Wall off UI components in libs/importer
Create barrel-file for libs/importer/components
Remove components and dialog exports from libs/importer/index.ts
Extend libs/shared/tsconfig.libs.json to include @bitwarden/importer/ui -> libs/importer/components
Extend apps/web/tsconfig.ts to include @bitwarden/importer/ui
Update all usages
* Rename @bitwarden/importer to @bitwarden/importer/core
Create more barrel files in libs/importer/*
Update imports within libs/importer
Extend tsconfig files
Update imports in web, desktop, browser and cli
* import-lastpass wip
* Lazy-load the ImportWebComponent via both routes
* Fix import path for ImportComponent
* add validation; add shared folders field
* clean up logic
* fill fileContent on account change
* Use SharedModule as import in import-web.component
* show spinner on pending validation; properly debounce; refactor to loadCSVData func
* fix pending submit guard
* hide on web, show on desktop & browser
* reset user agent fieldset styles
* fix validation
* File selector should be displayed as secondary
* update validation
* Fix setUserTypeContext always throwing
* refactor to password dialog approach
* remove control on destroy; dont submit on enter keydown
* helper to serialize vault accounts (#6556)
* helper to serialize vault accounts
* prettier
* add prompts
* Add missing messages for file-password-prompt
* Add missing messages for import-error-dialog
* Add missing message for import-success-dialog
* Create client-info
* Separate submit and handling import, add error-handling
* Move catch and error handling into submit
* Remove AsyncValidator logic from handleImport
* Add support for filtering shared accounts
* add sso flow to lp import (#6574)
* stub out some sso flow
* use computer props
* lastpass callback
* baseOpenIDConnectAuthority
* openIDConnectAuthorityBase
* comments
* camelCase user type context model
* processSigninResponse
* Refactor handleImport
* use large dialogSize
* remove extra setUserTypeContext
* fix passwordGenerationService provider; pass all errors to ValidationErrors
* add await SSO dialog & logic
* Move lastpass related files into separate folder
* Use bitSubmit to override submit preventDefault (#6607)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Use large dialogSize
* revert jslib changes
* PM-4398 - Add missing importWarning
* make ui class methods async
* add LastPassDirectImportService
* update error handling
* add OOB methods (manual passcode only)
* fix typo
* respond to SSO callback
* localize error messages
* remove uneeded comment
* update i18n
* add await sso i18n
* add not implemented error to service
* fix getting k2
* fix k1 bugs
* null checks should not be strict
* update awaiting sso dialog
* update approveDuoWebSdk
* add browser lastpass oidc/sso connector
* add getRedirectUrlWithParams
* params
* rename to getOidcRedirectUrlWithParams
* refactor oob login flow
* Add messages needed for Lastpass import flow
Taken from https://github.com/bitwarden/clients/pull/6541/files#diff-47e9af6d0d7d691a507534f7955edaa9fb37be8cf1c1981fd2ba898e99b6130d
* Update apps/browser/src/connectors/sso.ts
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Update libs/importer/src/components/lastpass/import-lastpass.component.ts
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* fix error
* Removing fieldset due to merge of https://github.com/bitwarden/clients/pull/6626
* Add sso-connector to manifest.v3
* Make linter happy
* Refactoring to push logic into the service vs the component
Move all methods related to MFA-UI into a LastPassDirectImportUIService
Move all logic around the import into a LastPassDirectImportService
The component now only has the necessary flows but no knowledge on how to use the lastpass import lib or the need for a OIDC client
* Remove unneeded passwordGenerationService
* move all import logic to service
* apply code review: remove name attributes; use protected fields; use formGroup.value
* rename submit method and add comment
* update textarea id
* update i18n
* remove rogue todo comment
* Add missing messages forLastpass import
* extract helper asyncValidatorsFinished
* Remove files related to DuoUI we didn't need to differentiate for MFA via Duo
* Add missing import
* use clientType
* triple =
* lastpassAuthResult for web sso connector
* remove browser sso connector
* use web vault for oidc redirect url
* revert formGroup.value access
* process lastpassAuthResult
* simplify message handler logic
* consolidate logic for lastpass auth result
* swap lastpass logic in sso connector
* add email to signInRequest
* add try again error message
* add try again i18n
* consistent clientinfo id (#6654)
---------
Co-authored-by: William Martin <contact@willmartian.com>
* hide on browser
* show LP importer on browser client
* add missing i18n to browser
* add lastpass prefix
* add shared i18n copy to web and browser
* rename deeplink
* use protected field
* rename el ids
* refactor: remove nested conditional
* update form ids in consuming client components
* remove unnecessary return statement
* fix file id
* use ngIf
* use hidden because of getElementById
* Remove OIDC lib logging
* Forward LP sso callback message to LP direct import service
* Add missing collection label
* Add missing `invalidFilePassword` to messages.json
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
Co-authored-by: William Martin <contact@willmartian.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Noop notifications for dev
We rarely have notifications set up for development environments, this
removes the error messages related to missing server notification
services
* Log actions in noop service
* Add line breaks
* Improve log messages
* Ignore local config at all levels
* [PM-3753] Update desktop language handling
* Remove i18n service import aliases
* Validate the provided locale before loading it
* Support underscores in locales
* Split up import/export into separate modules
* Fix routing and apply PR feedback
* Renamed OrganizationExport exports to OrganizationVaultExport
* Make import dialogs standalone and move them to libs/importer
* Make import.component re-usable
- Move functionality which was previously present on the org-import.component into import.component
- Move import.component into libs/importer
Make import.component standalone
Create import-web.component to represent Web UI
Fix module imports and routing
Remove unused org-import-files
* Enable importing on deskop
Create import-dialog
Create file-menu entry to open import-dialog
Extend messages.json to include all the necessary messages from shared components
* Renamed filenames according to export rename
* Make ImportWebComponent standalone, simplify routing
* Pass organizationId as Input to ImportComponent
* use formLoading and formDisabled outputs
* use formLoading & formDisabled in desktop
* Emit an event when the import succeeds
Remove Angular router from base-component as other clients might not have routing (i.e. desktop)
Move logic that happened on web successful import into the import-web.component
* Enable importing on deskop
Create import-dialog
Create file-menu entry to open import-dialog
Extend messages.json to include all the necessary messages from shared components
* use formLoading & formDisabled in desktop
* Add missing message for importBlockedByPolicy callout
* Remove commented code for submit button
* Implement onSuccessfulImport to close dialog on success
* fix table themes on desktop & browser
* fix fileSelector button styles
* update selectors to use tools prefix; remove unused selectors
* update selectors
* Wall off UI components in libs/importer
Create barrel-file for libs/importer/components
Remove components and dialog exports from libs/importer/index.ts
Extend libs/shared/tsconfig.libs.json to include @bitwarden/importer/ui -> libs/importer/components
Extend apps/web/tsconfig.ts to include @bitwarden/importer/ui
Update all usages
* Rename @bitwarden/importer to @bitwarden/importer/core
Create more barrel files in libs/importer/*
Update imports within libs/importer
Extend tsconfig files
Update imports in web, desktop, browser and cli
* import-lastpass wip
* Lazy-load the ImportWebComponent via both routes
* Fix import path for ImportComponent
* add validation; add shared folders field
* clean up logic
* fill fileContent on account change
* Use SharedModule as import in import-web.component
* show spinner on pending validation; properly debounce; refactor to loadCSVData func
* fix pending submit guard
* hide on web, show on desktop & browser
* reset user agent fieldset styles
* fix validation
* File selector should be displayed as secondary
* update validation
* Fix setUserTypeContext always throwing
* refactor to password dialog approach
* remove control on destroy; dont submit on enter keydown
* helper to serialize vault accounts (#6556)
* helper to serialize vault accounts
* prettier
* add prompts
* Add missing messages for file-password-prompt
* Add missing messages for import-error-dialog
* Add missing message for import-success-dialog
* Create client-info
* Separate submit and handling import, add error-handling
* Move catch and error handling into submit
* Remove AsyncValidator logic from handleImport
* Add support for filtering shared accounts
* add sso flow to lp import (#6574)
* stub out some sso flow
* use computer props
* lastpass callback
* baseOpenIDConnectAuthority
* openIDConnectAuthorityBase
* comments
* camelCase user type context model
* processSigninResponse
* Refactor handleImport
* use large dialogSize
* remove extra setUserTypeContext
* fix passwordGenerationService provider; pass all errors to ValidationErrors
* add await SSO dialog & logic
* Move lastpass related files into separate folder
* Use bitSubmit to override submit preventDefault (#6607)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Use large dialogSize
* revert jslib changes
* PM-4398 - Add missing importWarning
* make ui class methods async
* add LastPassDirectImportService
* update error handling
* add OOB methods (manual passcode only)
* fix typo
* respond to SSO callback
* localize error messages
* remove uneeded comment
* update i18n
* add await sso i18n
* add not implemented error to service
* fix getting k2
* fix k1 bugs
* null checks should not be strict
* update awaiting sso dialog
* update approveDuoWebSdk
* refactor oob login flow
* Removing fieldset due to merge of https://github.com/bitwarden/clients/pull/6626
* Refactoring to push logic into the service vs the component
Move all methods related to MFA-UI into a LastPassDirectImportUIService
Move all logic around the import into a LastPassDirectImportService
The component now only has the necessary flows but no knowledge on how to use the lastpass import lib or the need for a OIDC client
* Remove unneeded passwordGenerationService
* move all import logic to service
* apply code review: remove name attributes; use protected fields; use formGroup.value
* rename submit method and add comment
* update textarea id
* update i18n
* remove rogue todo comment
* extract helper asyncValidatorsFinished
* Remove files related to DuoUI we didn't need to differentiate for MFA via Duo
* Add missing import
* revert formGroup.value access
* add email to signInRequest
* add try again error message
* add try again i18n
* consistent clientinfo id (#6654)
---------
Co-authored-by: William Martin <contact@willmartian.com>
* hide on browser
* add lastpass prefix
* add shared i18n copy to web and browser
* rename deeplink
* use protected field
* rename el ids
* refactor: remove nested conditional
* update form ids in consuming client components
* remove unnecessary return statement
* fix file id
* use ngIf
* use hidden because of getElementById
* Remove OIDC lib logging
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
Co-authored-by: Kyle Spearrin <kspearrin@users.noreply.github.com>
Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com>
* Add support for alias creation via self-hosted SimpleLogin
* Add forwardedSimpleLoginBaseUrl to username-gen-options type
* Only show Server Url on web if on selfhosted bitwarden
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Revert "[PM-4290] Add pop out warning on import page (#6645)"
This reverts commit 8dc81b603d.
* Change icon on `Import items` in browser-settings
Replace the bwi-angle-right icon with the bwi-external-link and rotate it
Box with arrow pointing to the top right indicates external linkg
Box with arrow pointing to the top left indicates popout window
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* [PM-4401] feat: add browser messaging api service
* [PM-4401] feat: use new service
* [PM-4401] chore: rename to `ZonedMessageListenerService`
* [PM-4401] chore: remove polyfill
* No longer popout automatically
* Add FilePopoutCalloutComponent to import-browser
* Hide fileSelector on base import.component when callout is shown
Extend import.component to receive an input to show/hide the FileSelector
Extend import-browser to check if the callout should be shown via the filePopoutUtilsService and pass the returning value onto the base component
* Renamed showFileSelector to hideFileSelector
The default should be to show the fileSelector, so the input should reflect that as an override.
* Added newline between ngOnInit and method below
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Extract callout in send-add-edit into separate component
- Created new file-popout-callout.component
- Register component within app.module
- Replaced usage within send-add-edit.component
* Override popup header style to fix bit-callout
* [PM-4375] Reuse show file selector callout logic (#6606)
* Added FilePopoutUtilsService with the logic of showing/hiding the popout callout and file selector button
* Added documentation to FilePopoutUtilsService
* Added documentation for class and constructor on FilePopoutUtilsService
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: aj-rosado <109146700+aj-rosado@users.noreply.github.com>
* Split up import/export into separate modules
* Fix routing and apply PR feedback
* Renamed OrganizationExport exports to OrganizationVaultExport
* Make import dialogs standalone and move them to libs/importer
* Make import.component re-usable
- Move functionality which was previously present on the org-import.component into import.component
- Move import.component into libs/importer
Make import.component standalone
Create import-web.component to represent Web UI
Fix module imports and routing
Remove unused org-import-files
* Enable importing on browser
Create import-dialog
Add routing and routing animations
Settings import items no longer navigates to help page but opens import page
Extend messages.json to include all the necessary messages from shared components
* Fix back navigation
* Renamed filenames according to export rename
* Make ImportWebComponent standalone, simplify routing
* Pass organizationId as Input to ImportComponent
* use formLoading and formDisabled outputs
* add loading and disabled state to import-browser
* override popup header styles
* Emit an event when the import succeeds
Remove Angular router from base-component as other clients might not have routing (i.e. desktop)
Move logic that happened on web successful import into the import-web.component
* Enable importing on browser
Create import-dialog
Add routing and routing animations
Settings import items no longer navigates to help page but opens import page
Extend messages.json to include all the necessary messages from shared components
* Fix back navigation
* add loading and disabled state to import-browser
* override popup header styles
* Add missing message for importBlockedByPolicy callout
* Implement onSuccessfulImport to navigate back to settings
* fix table themes on desktop & browser
* fix fileSelector button styles
* update selectors to use tools prefix; remove unused selectors
* rename selector
* Wall off UI components in libs/importer
Create barrel-file for libs/importer/components
Remove components and dialog exports from libs/importer/index.ts
Extend libs/shared/tsconfig.libs.json to include @bitwarden/importer/ui -> libs/importer/components
Extend apps/web/tsconfig.ts to include @bitwarden/importer/ui
Update all usages
* Rename @bitwarden/importer to @bitwarden/importer/core
Create more barrel files in libs/importer/*
Update imports within libs/importer
Extend tsconfig files
Update imports in web, desktop, browser and cli
* Lazy-load the ImportWebComponent via both routes
* Fix import path for ImportComponent
* Navigate to import opens in popout when navigated from the popup
Make import call async and await router navigate
- If the user has the popup open and selects import, it will navigate to the import page and popout into a new window. This is necessary as any focus-loss (i.e Choose file) would close the popup.
- If the user is using the for example the sidebar or an already popped out window, just navigate to import page
* Use SharedModule as import in import-web.component
* File selector should be displayed as secondary
* Update description of "importData" in messages.json
* Add missing messages for file-password-prompt
* Add missing messages for import-error-dialog
* Add missing message for import-success-dialog
* Use bitSubmit to override submit preventDefault (#6607)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Add missing importWarning
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: William Martin <contact@willmartian.com>
* Define account service observable responsibilities
* Establish account service observables and update methods
* Update Account Service observables from state service
This is a temporary stop-gap to avoid needing to reroute all account
activity and status changes through the account service. That can be
done as part of the breakup of state service.
* Add matchers for Observable emissions
* Fix null active account
* Test account service
* Transition account status to account info
* Remove unused matchers
* Remove duplicate class
* Replay active account for late subscriptions
* Add factories for background services
* Fix state service for web
* Allow for optional messaging
This is a temporary hack until the flow of account status can be
reversed from state -> account to account -> state. The foreground
account service will still logout, it's just the background one cannot
send messages
* Fix add account logic
* Do not throw on recoverable errors
It's possible that duplicate entries exist in `activeAccounts` exist
in the wild. If we throw on adding a duplicate account this will cause
applications to be unusable until duplicates are removed it is not
necessary to throw since this is recoverable. with some potential loss
in current account status
* Add documentation to abstraction
* Update libs/common/spec/utils.ts
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* Fix justin's comment :fist-shake:
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* Split up import/export into separate modules
* Fix routing and apply PR feedback
* Renamed OrganizationExport exports to OrganizationVaultExport
* Make import dialogs standalone and move them to libs/importer
* Make import.component re-usable
- Move functionality which was previously present on the org-import.component into import.component
- Move import.component into libs/importer
Make import.component standalone
Create import-web.component to represent Web UI
Fix module imports and routing
Remove unused org-import-files
* Enable importing on deskop
Create import-dialog
Create file-menu entry to open import-dialog
Extend messages.json to include all the necessary messages from shared components
* Renamed filenames according to export rename
* Make ImportWebComponent standalone, simplify routing
* Pass organizationId as Input to ImportComponent
* use formLoading and formDisabled outputs
* use formLoading & formDisabled in desktop
* Emit an event when the import succeeds
Remove Angular router from base-component as other clients might not have routing (i.e. desktop)
Move logic that happened on web successful import into the import-web.component
* Enable importing on deskop
Create import-dialog
Create file-menu entry to open import-dialog
Extend messages.json to include all the necessary messages from shared components
* use formLoading & formDisabled in desktop
* Add missing message for importBlockedByPolicy callout
* Remove commented code for submit button
* Implement onSuccessfulImport to close dialog on success
* fix table themes on desktop & browser
* fix fileSelector button styles
* update selectors to use tools prefix; remove unused selectors
* update selectors
* Wall off UI components in libs/importer
Create barrel-file for libs/importer/components
Remove components and dialog exports from libs/importer/index.ts
Extend libs/shared/tsconfig.libs.json to include @bitwarden/importer/ui -> libs/importer/components
Extend apps/web/tsconfig.ts to include @bitwarden/importer/ui
Update all usages
* Rename @bitwarden/importer to @bitwarden/importer/core
Create more barrel files in libs/importer/*
Update imports within libs/importer
Extend tsconfig files
Update imports in web, desktop, browser and cli
* Lazy-load the ImportWebComponent via both routes
* Fix import path for ImportComponent
* Use SharedModule as import in import-web.component
* File selector should be displayed as secondary
* Add missing messages for file-password-prompt
* Add missing messages for import-error-dialog
* Add missing message for import-success-dialog
* Use bitSubmit to override submit preventDefault (#6607)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Use large dialogSize
* PM-4398 - Add missing importWarning
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: William Martin <contact@willmartian.com>
* Split up import/export into separate modules
* Fix routing and apply PR feedback
* Renamed OrganizationExport exports to OrganizationVaultExport
* Make import dialogs standalone and move them to libs/importer
* Make import.component re-usable
- Move functionality which was previously present on the org-import.component into import.component
- Move import.component into libs/importer
Make import.component standalone
Create import-web.component to represent Web UI
Fix module imports and routing
Remove unused org-import-files
* Renamed filenames according to export rename
* Make ImportWebComponent standalone, simplify routing
* Pass organizationId as Input to ImportComponent
* use formLoading and formDisabled outputs
* Emit an event when the import succeeds
Remove Angular router from base-component as other clients might not have routing (i.e. desktop)
Move logic that happened on web successful import into the import-web.component
* fix table themes on desktop & browser
* fix fileSelector button styles
* update selectors to use tools prefix; remove unused selectors
* Wall off UI components in libs/importer
Create barrel-file for libs/importer/components
Remove components and dialog exports from libs/importer/index.ts
Extend libs/shared/tsconfig.libs.json to include @bitwarden/importer/ui -> libs/importer/components
Extend apps/web/tsconfig.ts to include @bitwarden/importer/ui
Update all usages
* Rename @bitwarden/importer to @bitwarden/importer/core
Create more barrel files in libs/importer/*
Update imports within libs/importer
Extend tsconfig files
Update imports in web, desktop, browser and cli
* Lazy-load the ImportWebComponent via both routes
* Use SharedModule as import in import-web.component
* File selector should be displayed as secondary
* Use bitSubmit to override submit preventDefault (#6607)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: William Martin <contact@willmartian.com>
* [PM-4366] Update popout windows to open as a `popup` window type rather than a `normal` window type
* [PM-4366] Update popout windows to open as a `popup` window type rather than a `normal` window type
* [EC-598] feat: scaffold content scripting
* [EC-598] feat: load page script from content script
* [EC-598] feat: succesfully intercept methods
* [EC-598] feat: add better support for messaging
* [EC-598] feat: implement calls to new service
* [EC-598] feat: add ability to return responses
* [EC-598] feat: half-implemented params mapping
* [EC-598] feat: add b64 conversion
* [EC-598] feat: half-implemented user interfacing
* [EC-598] feat: initial working user verification
* [EC-598] feat: center popup
* [EC-598] feat: add basic cancel button
* [EC-598] feat: confirm new credentials
* [EC-598] feat: add cbor-redux npm package
* [EC-598] feat: initial version of credential creation
* [EC-598] feat: fully working credential creation
* [EC-598] feat: fully working register and assert flow
* [EC-598] feat: properly check for presence
* [EC-598] feat: rudimentar error handling
* [EC-598] feat: transparent passthrough of platform authenticators
* [EC-598] feat: improve error handling
* [EC-598] feat: use browser as fallback when vault does not contain requested credential
* [EC-598] feat: add fido2Key to cipher
* [EC-598] feat: successfully store passkeys in vault
* [EC-598] feat: implement passwordless vault auth
* [EC-598] feat: add basic support for managing passkeys
* [EC-598] feat: show new cipher being added
* [EC-598] feat: allow user to pick which credential to use
* [EC-598] feat: differntiate between resident auth and 2fa
* [EC-598] feat: add some padding to popout
* [EC-598] feat: allow storage of more information
* [EC-598] feat: show user name as sub title
* [EC-598] feat: show all available data
* [EC-598] chore: clean up console logs
* [EC-598] feat: fix google issues
Google does not like self-signed packed format. I've removed the attestation statement all-together untill further notice. We're don't really have any statements so
* [EC-598] fix: temporarily remove origin check
* [EC-598] fix: user interaction not being awaited sometimes
Only one handler can return a response. That handler needs to return true to indicated it's intention to eventually do so.
Our issue was that multiple handlers were returning truthy values, causing a race condition.
* [EC-598] fix: messenger crashing
The messenger is listening to all DOM communcation, most of which is formatted differently. We were not handling these cases properly which resulted in attempts to access undefined fields.
* [EC-598] feat: add basic test-case for messenger
* [EC-598] feat: add test for request/response
* [EC-598] feat: add initial one-way support for aborting
* [EC-598] feat: add ability to throw errors across messenger
* [EC-598] feat: transition to using exceptions
* [EC-598] feat: add abort controller all the way to service
* [EC-598] feat: ability to abort from page script
* [EC-598] feat: add automatic default timeouts
* [EC-598] chore: move component from generic popup fodler
* [EC-598] chore: collect all passkeys stuff under common folder
* [EC-598] fix: filter messages from other sources
* [EC-598] chore: add small todo comment
* [EC-598] feat: add timeout and UV to params
* [EC-598] feat: implement full support for timeouts
* [EC-598] feat: start creating separate authenticator service
* [EC-598] feat: first tested rule in new authentitcator
* [EC-598] feat: allow user to confirm duplication
* [EC-598] feat: add check for unsupported algorithms
* [EC-598] feat: add check for invalid option values
* [EC-598] feat: handle unsupported pinAuth
* [EC-598] feat: confirm new credentials
* [EC-598] feat: rearrange order of execution
* [EC-598] chore: rearrange tests
* [EC-598] feat: add support for saving discoverable credential
* [EC-598] feat: remove ability to duplicate excluded credentials
* [EC-598] chore: rearrange tests
* [EC-598] feat: add support for non-discoverable credentials
* [EC-598] chore: use webauthn authenticator model as base instead of CTAP
* [EC-598] feat: don't leak internal errors during creation
* [EC-598] feat: tweak key data to contain separate type and algorithm
* [EC-598] feat: add counter to fido2key
* [EC-598] feat: complete implementation of `makeCredential`
* [EC-598] feat: add ignored enterpriseAttestation param
* [EC-598] feat: start implementing `getAssertion`
* [EC-598] feat: add separate `nonDiscoverableId` to keys
* [EC-598] fix: properly convert credentials to guid raw format
* [EC-598] chore: add todo tests about deleted items
* [EC-598] feat: implement missing credential checks
* [EC-598] feat: add user confirmation test to assertion
also rewrite to use cipher views in tests
* [EC-598] feat: increment counter during assertion
* [EC-598] feat: implement assertion
* [EC-598] feat: add signatures to attestation
* [EC-598] feat: add general error handling for attestation
* [EC-598] feat: start working on new `Fido2ClientService`
* [EC-598] feat: check user id length
* [EC-598] feat: check origin and rp.id effective domains
* [EC-598] feat: check for supported key algorithms
* [EC-598] feat: hash client data and throw if aborted
* [EC-598] feat: extend return from authenticator
* [EC-598] feat: fully implement createCredential
* [EC-598] feat: implement assertCredential
* [EC-598] feat: make everything compile again
* [EC-598] feat: remove orgigin
* [EC-598] fix: rpId validation logic
* [EC-598] fix: some smaller bugs
* [EC-598] fix: flag saying authData doesnt contain attestation
* [EC-598] fix: wrong flags in tests
* [EC-598] fix: data not getting saved properly
* [EC-598] fix: invalid signature due to double hashing
* [EC-598] chore: clean up unusued function
* [EC-598] feat: fully wokring non-discoverable implementation
* [EC-598] feat: add initial implementation of UI sessions
* [EC-598] feat: fully refactored user interface
Now uses sessions instead of single request-response style communcation
* [EC-598] feat: make fallback working again
* [EC-598] feat: add rudimentary support for excluded credentials
* [EC-598] fix: send correct excluded cipher ids
* [EC-598] feat: wait for session close before closing window
* [EC-598] feat: test unique signatures
* [EC-598] chore: clean up old commented code
* [EC-598] feat: do not exclude organization credentials
* [EC-598] chore: remove unused clas
* [EC-598] fix: remove platform attachment check
* [EC-598] chore: rename webauthn folder to fido2
* [EC-598] chore: continue rename webauthn to fido2
* [EC-598] feat: interpret rk preferred as required
Fixes GoDaddy issues
* [EC-598] fix: bug preventing fallback on assertion
* [EC-598] feat: inform user when no credentials are found
* [EC-598] chore: add some more console logs for debugging
* [EC-598] feat: very basic scroll when picking credentials
* [EC-598] chore: tweak unique signature test
* [EC-598] chore: tweak how unassigned rpId gets calcuated
* [EC-598] fix: response prototype chains
* [EC-598] feat: allow discoverable credentials to be used for non-discoverable assertions
* [EC-598] fix: counter not being saved correctly
* [EC-598] fix: bug in result mapping
* [EC-598] feat: add support for user verifiction using MP during attestation
* [EC-598] feat: add support for user verifiction using MP during assertion
* [EC-598] feat: quick fix noop service
* [EC-598] chore: refactor observables a little bit
* [EC-598] feat: show unsupported user verification error
* [EC-598] feat: add logging to fido2 authenticator
* [EC-598] feat: add logging to fido2 client
* [EC-598] feat: close popout directly from bg script
* [EC-598] chore: clean up page-script
* [EC-598] feat: add webauthn polyfill
* [EC-598] feat: polyfill platform authenticator support
* [EC-598] feat: only show fallback options if supported
* [EC-598] fix: reponse not correctly polyfilled
* [EC-598] chore: add name to polyfill classes
* [EC-598] chore: update unsupported UV copy
* [EC-598] fix: race condition when opening new popout
* Fixed lint issues
* [PM-1500] Add feature flag to enable passkeys (#5406)
* Added launch darkly feature flag to passkeys implementation
* fixed linter
* Updated fido2 client service test to accomodate feature flag
* Updated fido2client service to include unit test for feature flag
* Renamed enable pass keys to fido2 vault credentials, added unit test when feature flag is not enabled
* fixed failing Login domain test case
* [EC-598] chore: remove unecessary return statement
* [EC-598] chore: remove unnecessary eslint disable
* [PM-1975] Move FIDO2 files into vault folder (#5496)
* Moved fido2 models to vault in libs
* Moved fido2 models to vault in libs
* Moved fido2 services and abstractions to vault folder in libs
* Moved fido2 popup to vault folder on the browser
* Updated import path after moving files to the vault folder
* Moved authenticator abstraction and service to the vault folder
* Updated content and page script path
* Added content script, page script and background messaging to vault
* fixed lint issue
* Updated reference paths
* Added missing fallbacksupported property in test files
* Added missing fallbacksupported to the newSession method
* [PM-2560] Fix Firefox default passkeys handling (#5690)
* Return callback response in addListener
* Add clarifying comment
* Isolate returning the callback to fido2 commands
* Update apps/browser/src/platform/browser/browser-api.ts
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Fix formatting
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* [PM-1976] Display passkeys properly on the browser (#5616)
* Removed passkeys from the vault types filter and added fucntion to get the count of Fido2keys and Login types
* Updated build filter to take Fido2key type as a Login type
* Updated icon font files
* Updated vault items and view to handle changes with fido2keys
* Updated add edit view for fido2keys
* Prevent moving passkeys to an organization where it exists
* Prevent moving passkeys to an organization where it exists
* Added view for non-discoverable passkeys
* Added diaglog to inform user that passkey won't be copied when cloning a non discoverable key
* Muted text that shows cipher item is available for 2fa
* Changed conditional to check if an organization already has the same passkey item
* Muted text to align with figma designs and used rpId for the application input value
* Modified checkFido2KeyExistsInOrg function to workk with discoverable and non discoverable keys
* Differentiate between non-discoverable and discoverable keys when moving to an organization
* Added suggested changes from PR review
* Updated font files css changes
* Fixed bug preventing launch bitton from working for Login types (#5639)
* [PM-1574] Display passkeys on web (#5651)
* Allowed discoverable Fido2key type to be displayed alongside Login type
* Added view during edit for discoverable and non-discoverable passkeys
* Fixed PR comments, added relvant tests to domain changes
* Fixed imports and updated the launch function to use the Launchable interface
* Added launch on vault filter for fido2key types
* Added missing passkey text field in edit view (#5800)
* [PM-1977] Display passkeys properly on the desktop (#5763)
* Allowed discoverable Fido2key type to be displayed alongside Login type
* Added view during edit for discoverable and non-discoverable passkeys
* Fixed PR comments, added relvant tests to domain changes
* Fixed imports and updated the launch function to use the Launchable interface
* Added fido2key to login filter and added view display for fido2key
* Added passkeys view for non discoverable passkeys and edit view for passkeys
* Fixed PR comments
* switched date format to short
* [PM-3046] [PM-3047] Defects for discoverable and non-discoverable passkeys on desktop and web (#5847)
* Added missing passkey text field in edit view (#5800)
* Added dialog to clone no discoverable passkeys on web and desktop.Also, removed clone on the desktop for discoverable passkeys and added passkey view to non- discoverable passkeys on desktop during edit
* Prevent cloning dialog on non fido2key ciphers
* Made fido2key use website favicon if avaialble instead of the passkey icon
* Do not display passkey view on clone edit for dekstop
* Do not display passkey view on clone edit for browser
* Prevented movement of passkeys ND or D to an organization once one exists and also made it possible for org memebers with user roles to move passkeys to an organization. (#5868)
* two step passkey view was outside the conditional (#5872)
* fixed merge conflict
* [PM-2907] Shopify Passkey Broken on Firefox When Extension is Installed (#6003)
* [PM-2907] Shopify Passkey Broken on Firefox When Extension is Installed
* [PM-2907] Shopify Passkey Broken on Firefox When Extension is Installed
* [PM-2907] Shopify Passkey Broken on Firefox When Extension is Installed
* Added passkey fallback imaged and added extension to image name on the icons component
* [PM-3155] CLI: Editing a cipher with a non-discoverable passkey causes the passkey to be removed (#6055)
* Added fido2keyexport for the CLI and added the fido2key field to the login response for the CLI
* Added fido2keyexport for the CLI and added the fido2key field to the login response for the CLI
* Removed unneccesary code
* Added non discoverable passkey to template
* [PM-2270] Renamed Fido2Key.userName to Fido2Key.userDisplayName (#6005)
* Renamed fido2key property username to userDisplayName
* Renamed username property on fido2key object to userdisplayname
* updated username to userDisplayName in fido2 export
* Update libs/angular/src/vault/vault-filter/models/vault-filter.model.ts
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* [PM-3775] feat: import v0.4.0 (#6183)
* [PM-3660] Address PR feedback (#6157)
* [PM-3660] chore: simplify object assignment
* [PM-3660] fix: remove unused origin field
* [PM-3660] feat: add Fido2Key tests
* [PM-3660] chore: convert popOut to async func
* [PM-3660] chore: refactor if-statements
* [PM-3660] chore: simplify closePopOut
* [PM-3660] fix: remove confusing comment
* [PM-3660] chore: move guid utils away from platform utils
* [PM-3660] chore: use null instead of undefined
* [PM-3660] chore: use `switch` instead of `if`
* [EC-598] fix: popup not closing bug
* [PM-1859] Refactor to credentialId (#6034)
* PM-1859 Refactor to credentialId
* PM-1859 Minor changes
* PM-1859 Fix credentialId initialization logic
* PM-1859 Added missing logic
* PM-1859 Fixed logic to use credentialID instead of cipher.id
* [PM-1859] fix: missing renames
---------
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
* [PM-1722] gracefully fail if site prompts user for passkey on load (#6089)
* added error logic to look for options.mediation in page-script
* moved the options mediation logic into the try catch. changed error to FallbackRequestedError
* [PM-1224] Ensure Passkeys Not Requested From Iframes (#6057)
* added isNotIFrame method to page-script
* added NotAllowedError to assertCredential in fido2
* remove excess comments
* refactor fido2-client.service. created new errorhandling method for similar code between create and assert
* update types and naming convention for new method in fido2-client.service
* Did a reset to previous commit withiout the refactoring to reduce code duplication, Renamed isNotIframeCheck function and fixed other commits
* Revert "update types and naming convention for new method in fido2-client.service"
This reverts commit 1f5499b9bb.
* Revert "refactor fido2-client.service. created new errorhandling method for similar code between create and assert"
This reverts commit 3115c0d2a1.
* updated test cases
* removed forward slashes
---------
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>
* [EC-598] Window Messaging Fix; (#6223)
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
Co-authored-by: SmithThe4th <gsmith@bitwarden.com>
* updated test cases and services using the config service
* [PM-3807] All passkeys as login ciphers - Minimal implementation to minimize blockers (#6233)
* [PM-3807] feat: remove non-discoverable from fido2 user interface class
* [PM-3807] feat: merge fido2 component ui
* [PM-3807] feat: return `cipherId` from user interface
* [PM-3807] feat: merge credential creation logic in authenticator
* [PM-3807] feat: merge credential assertion logic in authenticator
---------
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>
* [PM-3807] Store all passkeys as login cipher type (#6255)
* [PM-3807] feat: add `discoverable` property to fido2keys
* [PM-3807] feat: assign discoverable property during creation
* [PM-3807] feat: save discoverable field to server
* [PM-3807] feat: filter credentials by rpId AND discoverable
* [PM-3807] chore: remove discoverable tests which are no longer needed
* [PM-3807] chore: remove all logic for handling standalone Fido2Key
View and components will be cleaned up as part of UI tickets
* [PM-3807] fix: add missing discoverable property handling to tests
* [PM-3862] chore: move browser fido2 user interface to vault folder (#6265)
* [PM-2207], [PM-1245], [PM-3302] Make browser login, lock, and 2fa components handle configurable redirect routes (#5989)
* Initial work
* Added lock and login redirect and added functionality to abort when in login or locked state
* uncommented cipher row
* added query params to logi component
* Proof of concept for change detection fix
* Remove leftover comment
* Refactored message listener observable to handle angular change detection
* cleanup and removed unused references
* Refactored the connect method be seperating to the pop out logic to a seperate method
* Added comment to explain code change on the message listener
* Removed unused types
* Initial work
* Added lock and login redirect and added functionality to abort when in login or locked state
* uncommented cipher row
* added query params to logi component
* Proof of concept for change detection fix
* Remove leftover comment
* Refactored message listener observable to handle angular change detection
* cleanup and removed unused references
* Refactored the connect method be seperating to the pop out logic to a seperate method
* Added comment to explain code change on the message listener
* Removed unused types
* Added full synce service to the fido2 authenticator to ensure the full sync is completed before getting all decrypted ciphers
* Added full synce service to the fido2 authenticator to ensure the full sync is completed before getting all decrypted ciphers
* Code cleanup to remove sessionId from login component
* Refactored components to make the redirectUrl more generic, fixed code review comments
* Commented out ensureUnlockedVault for this PR
* Fixed destroy subject inheritance issue on the login componenet
* Fixed lock component error
* Added function to run inside angular zone
* Merged branch with master and fixed conflicts
* Changed redirect logic on login and 2fa to use callbacks
* fixed pr comments
* Updated the messageListener observable version to use same logic from the callback version and added comment on the callback version
* Refactored fido2 popup to use auth guard when routing to component, added BrowserRouterService to track previous page and route using that
* Updated components to use browserRouterService for routing to previous page
* Removed auth status reference from browser-fido2-user-interface service
* Removed activated route from lock component
* Removed route in base class constructor
* removed unused comments and method
* refactored router service to not store on the disk
* [PM-3783] feat: patch `chrome.runtime.onMessage` event listeners
(cherry picked from commit 2ca241a0d4)
* Fixed PR comments
* Fixed PR comments
* Revert "[PM-3783] feat: patch `chrome.runtime.onMessage` event listeners"
This reverts commit ed6a713688.
---------
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
* [PM-3807] Store passkeys as array (#6288)
* [PM-3807] feat: store passkeys as array
* [PM-3807] fix: issues in views
* [PM-3807] fix: additional view bugs
* [PM-3807] fix: check array length
* [PM-3807] fix: I secretly like build errors
* [PM-3970] Empty list of ciphers when logging in via fido 2 popout (#6321)
* fix: sync not being properly called
* fix: don't call sync everywhere
* [PM-3905] Address PR feedback v2 (#6322)
* [PM-3905] chore: move webauthn utils to vault
* [PM-3905] chore: make static function private
* [PM-3905] chore: add documentation to user interface classes
* [PM-3905] chore: clean up unused abort controllers
* [PM-3905] chore: add documentation to fido2 client and authenticatio
* [PM-3905] chore: extract create credential params mapping to separate function
* [PM-3905] chore: extract get assertion params mapping to separate function
* [PM-3905] chore: assign requireResidentKey as separate variable
* [PM-3905] feat: started rewrite of messenger
Basic message sending implemented, now using message channels instead of rxjs
* [PM-3905] feat: complete rewrite of messenger
* [PM-3905] chore: clarify why we're assigning to window
* [PM-3905] feat: clean up tests
* [PM-3905] docs: document messenger class
* [PM-3905] feat: remove `requestId` which is no longer needed
* [PM-3905] feat: simplify message structure
* [PM-3905] chore: typo
* [PM-3905] chore: clean up old file
* [PM-3905] chore: tweak doc comment
* [PM-3905] feat: create separate class for managing aborts
* [PM-3905] chore: move abort manager to vault
* [PM-3980] Add a creationDate field to the Fido2Key object (#6334)
* Added creationDate field to be used on the passkeys view instead of the cipher.creationDate
* Fixed comments from PR
* added to the constructor and sorted out other comments
* Exported Fido2KeyExport through index.ts
* Fixed iso string issue where the date wasn't converted back to Date (#6364)
* [PM-4045] Get error returned when editing an item with a passkey in the CLI (#6379)
* Creationdate doesn't get converted to a date
* Creationdate doesn't get converted to a date
* removed null assignment
* [PM-3810] Unify Passkeys view (#6335)
* Removed standalone fido2key view, update login view to show created date when a fido2key is present, reverted icon component to previous state without fido2key type, removed filters to handle standalone fido2key as login type
* Allow duplication
* Removed launchable behaviours from fido2 key view
* Reworked desktop views from standalone fido2keys to unified fido2keys in the login
* Reworked web views from standalone fido2keys to unified fido2keys in the login
* Fixed test case to not create standalone fido2keys
* Updated views to use fido2key creation date
* removed unused locale
* moved logic from template to class
* Removed fido2key ciphertype
* Removed fido2key ciphertype references
* PM-2559 Messaging Rework for Passkey Bug (#6282)
* [PM-2559] Messaging Rework - Update browser-api messageListener removing promises to fix Firefox bug
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
* Resolved merge conflicts from vault item encryption.
* moved passkeys ontop totp code to align with the add edit view (#6466)
* Bug during reafactoring where the hostname is not used if the rpId is undefined (#6484)
* [PM-4054] Rename Fido2Key to Fido2Credential (#6442)
* Rename Fido2Key to Fido2Credential
* Fix export
* Remove unnecessary alis in export
* Make test less wordly
---------
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>
* [PM-3812][PM-3809] Unify Create and Login Passkeys UI (#6403)
* PM-1235 Added component to display passkey on auth flow
* PM-1235 Implement basic structure and behaviour of UI
* PM-1235 Added localised strings
* PM-1235 Improved button UI
* Implemented view passkey button
* Implemented multiple matching passkeys
* Refactored fido2 popup to use browser popout windows service
* [PM-3807] feat: remove non-discoverable from fido2 user interface class
* [PM-3807] feat: merge fido2 component ui
* [PM-3807] feat: return `cipherId` from user interface
* [PM-3807] feat: merge credential creation logic in authenticator
* [PM-3807] feat: merge credential assertion logic in authenticator
* updated test cases and services using the config service
* [PM-3807] feat: add `discoverable` property to fido2keys
* [PM-3807] feat: assign discoverable property during creation
* [PM-3807] feat: save discoverable field to server
* [PM-3807] feat: filter credentials by rpId AND discoverable
* [PM-3807] chore: remove discoverable tests which are no longer needed
* [PM-3807] chore: remove all logic for handling standalone Fido2Key
View and components will be cleaned up as part of UI tickets
* [PM-3807] fix: add missing discoverable property handling to tests
* updated locales with new text
* Updated popout windows service to use defined type for custom width and height
* Update on unifying auth flow ui to align with architecture changes
* Moved click event
* Throw dom exception error if tab is null
* updated fido2key object to array
* removed discoverable key in client inerface service for now
* Get senderTabId from the query params and send to the view cipher component to allow the pop out close when the close button is clicked on the view cipher component
* Refactored view item if passkeys exists and the cipher row views by having an extra ng-conatiner for each case
* Allow fido2 pop out close wehn cancle is clicked on add edit component
* Removed makshift run in angular zone
* created focus directive to target first element in ngFor for displayed ciphers in fido2
* Refactored to use switch statement and added condtional on search and add div
* Adjusted footer link and added more features to the login flow
* Added host listener to abort when window is closed
* remove custom focus directive. instead stuck focus logic into fido2-cipher-row component
* Fixed bug where close and cancel on view and add component does not abort the fido2 request
* show info dialog when user account does not have master password
* Removed PopupUtilsService
* show info dialog when user account does not have master password
* Added comments
* Added comments
* made row height consistent
* update logo to be dynamic with theme selection
* added new translation key
* Dis some styling to align cipher items
* Changed passkey icon fill color
* updated flow of focus and selected items in the passkey popup
* Fixed bug when picking a credential
* Added text to lock popout screen
* Added passkeys test to home view
* changed class name
* Added uilocation as a query paramter to know if the user is in the popout window
* update fido2 component for dynamic subtitleText as well as additional appA11yTitle attrs
* moved another method out of html
* Added window id return to single action popout and used the window id to close and abort the popout
* removed duplicate activatedroute
* added a doNotSaveUrl true to 2fa options, so the previousUrl can remain as the fido2 url
* Added a div to restrict the use browser link ot the buttom left
* reverted view change which is handled by the view pr
* Updated locales text and removed unused variable
* Fixed issue where new cipher is not created for non discoverable keys
* switched from using svg for the logo to CL
* removed svg files
* default to browser implmentation if user is logged out of the browser exetension
* removed passkeys knowledge from login, 2fa
* Added fido2 use browser link component and a state service to reduce passkeys knowledge on the lock component
* removed function and removed unnecessary comment
* reverted to former
* [PM-4148] Added descriptive error messages (#6475)
* Added descriptive error messages
* Added descriptive error messages
* replaced fido2 state service with higher order inject functions
* removed null check for tab
* refactor fido2 cipher row component
* added a static abort function to the browser interface service
* removed width from content
* uncommented code
* removed sessionId from query params and redudant styles
* Put back removed sessionId
* Added fallbackRequested parameter to abortPopout and added comments to the standalone function
* minor styling update to fix padding and color on selected ciphers
* update padding again to address vertical pushdown of cipher selection
---------
Co-authored-by: Carlos Gonçalves <cgoncalves@bitwarden.com>
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
Co-authored-by: jng <jng@bitwarden.com>
* padding update for focused cipher row in popup
* Updated fido2Credentials to initialize as null instead of empty array (#6548)
* Updated fido2Credentials to be null instead of empty string
* Updated cipher tests.
* Fixed tests.
* Updated view and clone logic.
* Updated templates to handle null value.
* Further null checks.
* [PM-4226] Create login item on the fly and add passkey item to it (#6552)
* Use the + button to ad an item and then save a passkey on the added item
* switch if to tenary
* [PM-4284] Passkey popout is not pulling correct URI for website opened (#6549)
* Used url from sender window in getting matching logins
* Rough draft to combine user verification required and master password required prompts
* Revert "Rough draft to combine user verification required and master password required prompts"
This reverts commit f72d6f877f.
* Remove array initialization that is not necessary. (#6563)
* removed unused code from login, 2fa components (#6565)
* Moved clearing of passkey from submit to load when cloning. (#6567)
* [PM-4280] MP reprompt not respected on passkey creation and retrieval (#6550)
* Rough draft to combine user verification required and master password required prompts
* Updated the handle user verification logic
* allow same behaviour for master password reprompt and user verification
* added test cases and merged conditions
* [PM-4226] Add Cipher With Passkey Flow Change (#6569)
* changed the add login item with passkey to require master password repompt first before creating the cipher item
* removed userVerified variable
* combined conditionals
* added passkey not copied alert when cloning for organizations (#6579)
* [PM-4296] Cannot login to Bitwarden with FIDO2 WebAuthn if extension is installed and logged in (#6576)
* removed sameOriginWithAncestors check on fido2 assertions
* removed sameOriginWithAncestors check on fido2 assertions
* [PM-4333] fix: change transport to `internal` (#6594)
* Address PR feedback (#6572)
* remove listeners for safari
* removed unused i18n tokens
* changed link to button for accessibilty purposes
* Fix potential reference error by restoring the typeof check for chrome
* added fromNullable to reduces repetitive logic
* Revert "added fromNullable to reduces repetitive logic"
This reverts commit ce5fc9c278.
* Added js docs to fido2credential export
* refined jsdocs comments
* added documentation to fido2 auth guard
* Removed unused i18n tokens, uneccesary whitespaces and comments
---------
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>
Co-authored-by: SmithThe4th <gsmith@bitwarden.com>
Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
Co-authored-by: Carlos Gonçalves <cgoncalves@bitwarden.com>
Co-authored-by: Jason Ng <jng@bitwarden.com>
Co-authored-by: Todd Martin <106564991+trmartin4@users.noreply.github.com>
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
* When org is disabled disable the logic and show warning symbols
* fixing org enabled logic
* removing unused code
* Adding route gaurd logic and new org suspended page
* fixing lint issue
* fixing issues
* Requested changes
* adding back code that was accidentally removed from organization-switcher
* Update bitwarden_license/bit-web/src/app/secrets-manager/shared/org-suspended.component.ts
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* Removing unused code and updating storybook to set enabled:true
* removing onDestroy
* Will's suggestions
* will's suggested change
* fix nav-item color in story
* Thomas Rittson's suggested changes
* adding back removed spaces
* Adding back white space
* updating guard
* Update bitwarden_license/bit-web/src/app/secrets-manager/guards/sm-org-enabled.guard.ts
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* removing ununsed data
* Updating incorrect messages
---------
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
Co-authored-by: William Martin <contact@willmartian.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* remove solve for pm-3613 (will readdress in pm-4014)
* check original target tab URL before executing deferred action due to reprompt
* only check if target tab host+path changed during reprompt
* close menu overlay when no longer visible
* prevent infinite loop in fallback-src directive
* block scrolling when menu is open
* disable view recycling; use reposition strategy
This PR wires up a polyfill for window.ipc which allows us to progressively migrate the codebase to a format which supports context bridge. This avoids a big bang effort where every non sandboxed call has to be migrated before we can run the code.
Once all calls to node modules are removed from the renderer and only exists in preload.ts. We will turn on context isolation and use the context bridge for communication instead.
* Split up import/export into separate modules
* Fix routing and apply PR feedback
* Renamed OrganizationExport exports to OrganizationVaultExport
* Renamed filenames according to export rename
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* update password reprompt to use the dialog CL
* Override showPasswordPrompt and submit method on web child classes from base classes to allow dialog work on web and modal on other clients
* Override showPasswordPrompt and submit method on web child classes from base classes to allow dialog work on web and modal on other clients
* Fixed lint issues
* Corrected comments
* Refactored passwored reprompt to use dialog service after changes to make the dialog service work on the desktop and browser
* Changed access modifier from protected to protected
* Refactored passwprd reprompt component to a stand alone component and fixed all references
* fix merge changes
* fix import aliases in password-reprompt.component.ts
* fix alias typo in browser tsconfig
* import from root vault alias
* revert tsconfig changes
* remove service abstraction and update imports
* remove component from imports
* Removed unneccesary show password toggle
* renamed selector to use vault prefix
* removed unnecessary data dismiss
* merged and fixed conflicts
* remove reintroduced file
* Added appAutoFocus to reprompt dialog
* delayed validation until submit happens
---------
Co-authored-by: William Martin <contact@willmartian.com>
* Rename Collection events to be more explicit
* Implement edit collection for individual vault row
* Implement edit and delete collection from individual vault header
* Implement bulk delete for collections in individual vault
* Clean up CollectionDialogResult properties
* Centralize canEdit and canDelete logic to Collection models
* Check orgId in canEdit and canDelete and add clarifying comments
---------
Co-authored-by: Shane Melton <smelton@bitwarden.com>
Implement the Desktop clipboard logic natively using rust. This uses the arboard crate for clipboard functionality.
This change consists of 3 portions:
* Rust component.
* Updating renderer to call main using electron ipc.
* Update main to listen to renderer ipc and forward calls to the native clipboard module.
* Revert "Removed countries that Stripe doesn't support (#6035)"
This reverts commit a81c70360a.
* Hide additional tax options when selected country doesn't support Stripe tax
* Conner's feedback
* [PM-3704] Autofil Command Should Not Attempt to Fill If Fields Are Not Found in Page Details
* [PM-2319] Adding jest test to ensure workflow is captured in future refactors
* PoC autofill card and identity from context menu
* PoC trigger identity and card autofills via messages
* update card and identity cipher titles in the context menu
* remove unused url argument from loadOptions
* do not show no logins message for card and identity sub-menu
* allow context menu actions to create identity or card ciphers
* open new single-action windows for cipher creation when requested from the context menu
* add context menu items for adding a login cipher when none are available to the page
* adjust titles for Card and Identity context menu items
* fix translations and add no ciphers available messages to submenus
* cleanup and update tests
* remove unrelated changes
* pass uri of context menu page to cipher creation view
* Apply suggestions from code review
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* cleanup
* handle cipher edit background messages with browserPopoutWindowService as well
* consolidate doAutoFillNonLoginActiveTab into doAutoFillActiveTab
* cleanup
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Add copy to translations
* Add copy to premium user subscription page
* Add copy to organization user subscription page
* Conditionally display copy on premium user subscription page
* Conditionally display copy on organization user subscription page
* Update translations to approved copy
* PM-1049 - TODO: replace base component with business service
* updated server version
* disabled cipher key encryption
* add new storage to replace MasterKey with UserSymKey
* add storage for master key encrypted user symmetric key
* Begin refactor of crypto service to support new key structure
* remove provided key from getKeyForUserEncryption
* add decryption with MasterKey method to crypto service
* update makeKeyPair on crypto service to be generic
* add type to parameter of setUserKey in abstraction of crypto service
* add setUserSymKeyMasterKey so we can set the encrypted user sym key from server
* update cli with new crypto service methods
- decrypt user sym key and set when unlocking
* separate the user key in memory from user keys in storage
* add new memory concept to crypto service calls in cli
* update auth service to use new crypto service
* update register component in lib to use new crypto service
* update register component again with more crypto service
* update sync service to use new crypto service methods
* update send service to use new crypto service methods
* update folder service to use new crypto service methods
* update cipher service to use new crypto service
* update password generation service to use new crypto service
* update vault timeout service with new crypto service
* update collection service to use new crypto service
* update emergency access components to use new crypto service methods
* migrate login strategies to new key model
- decrypt and set user symmetric key if Master Key is available
- rename keys where applicable
- update unit tests
* migrate pin to use user's symmetric key instead of master key
- set up new state
- migrate on lock component
- use new crypto service methods
* update pin key when the user symmetric key is set
- always set the protected pin so we can recreate pin key from user symmetric key
- stop using EncryptionPair in account
- use EncString for both pin key storage
- update migration from old strategy on lock component
* set user symmetric key on lock component
- add missed key suffix types to crypto service methods
* migrate auto key
- add helper to internal crypto service method to migrate
* remove additional keys in state service clean
* clean up the old pin keys in more flows
- in the case that the app is updated while logged in and the user changes their pin, this will clear the old pin keys
* finish migrate auto key if needed
- migrate whenever retrieved from storage
- add back the user symmetric key toggle
* migrate biometrics key
- migrate only on retrieval
* fix crypto calls for key connector and vault timeout settings
* update change password components with new crypto service
* update assortment of leftover old crypto service calls
* update device-crypto service with new crypto service
* remove old EncKey methods from crypto service
* remove clearEncKey from crypto service
* move crypto service jsdoc to abstraction
* add org key type and new method to build a data enc key for orgs
* fix typing of bulk confirm component
* fix EncString serialization issues & various fixes
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
* update account model with new keys serialization
* migrate native messaging for biometrics to use new key model
- support backwards compatibility
- update safari web extension to send user key
- add error handling
* add early exit to native messaging flow for errors
* improve error strings in crypto service
* disable disk cache for browser due to bg script/popup race conditions
* clear bio key when pin is migrated as bio is refreshed
* share disk cache to fix syncing issues between contexts
* check for ephemeral pin before process reload
* remove state no longer needed and add JSDOC
* fix linter
* add new types to tests
* remove cryptoMasterKeyB64 from account
* fix tests imports
* use master key for device approvals still
* cleanup old TODOs, add missing crypto service parameters
* fix cli crypto service calls
* share disk cache between contexts on browser
* Revert "share disk cache between contexts on browser"
This reverts commit 56a590c491.
* use user sym key for account changing unlock verification
* PM-1565 Added item key property to cipher export domain (#5580)
* PM-1565 Added item key property to cipher export domain
* enabled cipher key encryption
* Updated getCipherKeyEncryptionEnabled validation to also return true if the serverVersion matches the minVersion
* Using async/await when getting decrypted ciphers on getOrganizationDecryptedExport
* Disabling CipherKey
* add tests to crypto service
* rename 'user symmetric key' with 'user key'
* remove userId from browser crypto service
* updated EncKey to UserKey where applicable
* jsdoc deprecate account properties
* use encrypt service in crypto service
* use encrypt service in crypto service
* require key in validateUserKey
* check storage for user key if missing in memory
* change isPinLockSet to union type
* move biometric check to electron crypto service
* add secondary fallback name for bio key for safari
* migrate master key if found
* pass key to encrypt service
* rename pinLock to pinEnabled
* use org key or user key for encrypting attachments
* refactor makeShareKey to be more clear its for orgs
* rename retrieveUserKeyFromStorage
* clear deprecated keys when setting new user key
* fix cipher service test
* options is nullable while setting user key
* Reordering Service creation on cli's bw.ts to fix ConfigApiService (#5684)
* more crypto service refactors
- check for auto key when getting user key
- consolidate getUserKeyFromMemory and FromStorage methods
- move bio key references out of base crypto service
- update either pin key when setting user key instead of lock component
- group deprecated methods
- rename key legacy method
* Feature/PM-1049 - TDEFflow 3 login decryption options - PR feedback changes (#5642)
* PM-1049 - PR Feedback change - Browser - replace incorrect use of routerlink with manual attribute styling to keep anchor styling + tab focus while not having a router action race condition for the log out action to complete.
* PM-1049 - PR Feedback - State Service changes - rename get/setAcctDecryptionOptions to get/setAccountDecryptionOptions
* PM-1049 - PR Feedback changes - LoginDecryptionOptionsComp - Remove unncessary appA11yTitle directives as title / aria text would be identical to the displayed inner button text.
* DeviceType - Create sets of device types which other components can reference to avoid having to manually define groups of device types.
* PM-1049 - PR Feedback Changes - Update base-login-decryption-options component to leverage async piped observables per best practices. Updated all client templates to leverage new data streams.
* PM-1049 - BaseLoginDecryptionOptionsComp - Add validation service for generic error handling
* PM-1049 - DeviceResponse mistakenly had name as a number instead of a string
* PM-1049 - First draft of creating observable based data store service for Devices so that the base login comp can leverage it instead of calling the devices API service directly (as it will be moved into the SDK in the future).
* PM-1049 - Register new DevicesService on jslib-services module for use in components.
* PM-1049 - Add new hasDevicesOfTypes call to devices data store svc + devices API service.
* PM-1049 - BaseLoginDecryptionOptionsComp - wire up call to devicesService.hasDevicesOfTypes to replace getDevices() to avoid bringing down all trusted device information unnecessarily.
* PM-1049 - LoginDecryptionOptionsComp - Web HTML - clean up loading state so it displays spinner centered properly.
* PM-1049 - LoginDecryptionOptionsComp - Desktop HTML - Don't show login initiated title while page is loading to match other clients behavior.
* PM-1049 - Devices Services - Update naming of hasDevicesOfTypes to match new name on back end + route change to getDevicesExistenseByTypes
* PM-1049 - Device Response & View models - remove keys which are going to be deprecated on the base model
* PM-1049 - DevicesService - devicesBSubject --> devicesSubject rename per PR feedback
* PM-1049 - Devices Services - correct spelling of existence (*facepalm*)
* PM-1049 - Update comment for clarity per PR feedback
* PM-1049 - DevicesSvc - UserSymKey --> UserKey rename
* PM-1049 - BaseLoginDecryptionOptions - replace user email source - get from stateService vs tokenService.
* PM-1049 - BaseLoginDecryptionOptions - Remove uncessary check for userEmail as we will always have it here otherwise everything in the app is broken.
* PM-1049 - BaseLoginDecryptionOptions - Finish cleaning up removal of user email from showReqAdminApprovalBtn$ stream
* PM-1049 - LoginDecryptionOptionsComp - HTML revisions in web & browser to better space out buttons using tailwind or top margin to avoid need for multiple async pipes and shareReplay.
* PM-1049 - DevicesService - of course all observables should have $ suffix. Facepalm.
* PM-1049 - BaseLoginDecryptionOptionsComp - Update verbiage and style of destroy observable used for hooking into ngOnDestroy lifecycle to clean up all observables
* PM-1049 - BaseLoginDecryptionOptions - PR feedback changes - refactor user email to have an underlying bSubject stream to ensure subscription/promise execution separately from the template async pipe subscribing to the stream.
* PM-1049 - DevicesApiService - getDevicesExistenceByTypes - PR feedback - explicitly convert result to boolean instead of casting.
* PM-1049 - BaseLoginDecryptionOptionsComp - Add ShareReplay for getAccountDecryptionOptions + context per PR feedback
* PM-1049 - LoginDecryptionOptionsComp - Completely back away from template async pipe reactive approach as it caused massively increased complexity for little gain. Instead, just focus on reactively pulling asynchronously retrieved data and setting page loading state simply. This just works and is so much less overhead. + Add comments re flows of the component to be done later
* PM-1049- Revert DevicesService implementation from smart data store cache service giant mess into simple, clean data passthrough service to avoid complexity and keep moving forward. YAGNI
Co-authored-by: Andreas Coroiu <andreas@andreascoroiu.com>
* PM-1049 - DeviceCryptoService - Add decryptUserKey method (WIP)
* PM-1049 - AccountDecryptionOptions - add get helpers for checking for trusted device / key connector decryption option existence.
* PM-1049 - SSO Login Strategy - added comments in setUserKey method for where we will probably be consuming device keys and determining if the device is trusted or not (i.e., if we can get a decrypted user sym key in memory)
* PM-1049 - DeviceCryptoSvc.decryptUserKey - Update method to properly use state service device key retrieval + add TODO to figure out what to do if user has previously had a device key and has cleared their local cache (which will result in the device being untrusted now)
* PM-1049 - SSO Login Strategy - add comment re future passkey login strategy support
* PM-2759 - SSO & 2FA components updated with v0 of navigation logic to send users to LoginDecryptionOptions
* PM-1049 - Account > AccountDecryptionOptions - can't create getter helper methods for determining if user has decryption options b/c of issues w/ account deserialization. Moving past b/c I can just easily check if the given options are not undefined.
* PM-2759 - Add TODOs for deprecation of id token response resetMasterPassword logic and replacement with use of accountDecryptionOptions
---------
Co-authored-by: Andreas Coroiu <andreas@andreascoroiu.com>
* PM-2582 Fix adding attachments (#5692)
* revert sharing disk cache between contexts
* fix tests
* PM-2791 Reordered service creation (#5701)
* Turned off flag in production.json
* add better tests to crypto service
* add hack to get around duplicate instances of disk cache on browser
* prevent duplicate cache deletes in browser
* fix browser state service tests
* Feature/PM-1212 - TDE - Approve with master password flow (#5706)
* PM-1212 - StateSvc - Add getUserDeviceTrustChoice && setUserDeviceTrustChoice to persist user's choice in local storage in case of refresh on login approval screens (ex: lock)
* PM-1212 - DeviceCryptoSvc - Add getUserDeviceTrustChoice && setUserDeviceTrustChoice as state service is lower level service for caching
* PM-1212 - LoginDecryptionOptionsComp - Save result of rememberEmail checkbox into local storage via deviceCryptoService.setUserDeviceTrustChoice
* PM-1212 - Lock component - after user key is set, check if user chose to establish trust, and if they did, then establish trust and reset choice.
* PM-1212 - Update naming of methods per discussion with Jake + add comment explaining intended single use retrieval and need for resetting the value.
* DeviceCryptoService - Refactor - decryptUserKey --> decryptUserKeyWithDeviceKey to match crypto service refactor naming convention
* PM-1212 - Refactor State Service per PR feedback to store trustDeviceChoiceForDecryption on Account.settings b/c the temp setting is scoped to a user.
* PM-2759 - SSO & 2FA Navigation to TDE Comp - Needs more work - Found scenarios on web with 2FA in which the expected navigation doesn't work. Adding TODO to assist in fixing
* (1) Add Trust to DeviceCryptoService name
(2) Move DeviceTrustCryptoService under auth folder
* PM-1212 - Add tests for new getUserTrustDeviceChoiceForDecryption and setUserTrustDeviceChoiceForDecryption methods + TODOs for future tests.
* PM-1212- Renaming / moving DeviceTrustCryptoService broke all the things - fixed all the client builds.
* PM-1212- Copy doc comment to abstraction per PR feedback
* PM-1212 - BaseLoginDecryptionOptions comp - remove unncessary cast to form control as apparently reactive forms now properly derives types.
* [PM-1203] Replace MP confirmation with verification code (#5656)
* [PM-1203] feat: ask for OTP if user does not have MP
* [PM-1203] feat: add backwards compatibility for accounts/servers without decryption options
* [PM-1203] feat: move hasMasterPassword to user-verification.service
* [PM-1203] fix: remove duplicate implementation from crypto service
* [PM-1203] fix: cli build
* Tweak device trust crypto service implementation to match mobile late… (#5744)
* Tweak device trust crypto service implementation to match mobile latest which results in more single responsibility methods
* Update tests to match device trust crypto service implementation changes
* update comment about state service
* update pinLockType states and add jsdocs
* add missed pinLockType changes
* [PM-1033] Org invite user creation flow 1 (#5611)
* [PM-1033] feat: basic redirection to login initiated
* [PM-1033] feat: add ui for TDE enrollment
* [PM-1033] feat: implement auto-enroll
* [PM-1033] chore: add todo
* [PM-1033] feat: add support in browser
* [PM-1033] feat: add support for desktop
* [PM-1033] feat: improve key check hack to allow regular accounts
* [PM-1033] feat: init asymmetric account keys
* [PM-1033] chore: temporary fix bug from merge
* [PM-1033] feat: properly check if user can go ahead an auto-enroll
* [PM-1033] feat: simplify approval required
* [PM-1033] feat: rewrite using discrete states
* [PM-1033] fix: clean-up and fix merge artifacts
* [PM-1033] chore: clean up empty ng-container
* [PM-1033] fix: new user identification logic
* [PM-1033] feat: optimize data fetching
* [PM-1033] feat: split user creating and reset enrollment
* [PM-1033] fix: add missing loading false statement
* [PM-1033] fix: navigation logic in sso component
* [PM-1033] fix: add missing query param
* [PM-1033] chore: rename to `ExistingUserUntrustedDevice`
* PM-1033 - fix component templates to reference `ExistingUserUntrustedDevice` so clients can build
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
* remove extra partial key
* set master key on lock component
* rename key hash to password hash on crypto service
* fix cli
* rename enc user key setter in crypto service
* Adds Events & Human Readable Messages (#5746)
* [PM-1202] Hide the Master Password tab on Settings / Security (#5649)
* [PM-1203] feat: ask for OTP if user does not have MP
* [PM-1203] feat: get master password status from decryption options
* [PM-1203] feat: add backwards compatibility for accounts/servers without decryption options
* [PM-1203] feat: move hasMasterPassword to user-verification.service
* fix merge issues
* Change getUserTrustDeviceChoiceForDecryption / setUserTrustDeviceChoiceForDecryption to getShouldTrustDevice / setShouldTrustDevice (#5795)
* Auth/[PM-1260] - Existing User - Login with Trusted Device (Flow 2) (#5775)
* PM-1378 - Refactor - StateSvc.getDeviceKey() must actually convert JSON obj into instance of SymmetricCryptoKey
* TODO: BaseLoginDecryptionOptionsComponent - verify new user check doesn't improperly pick up key connector users
* PM-1260 - Add new encrypted keys to TrustedDeviceUserDecryptionOptionResponse
* PM-1260 - DeviceTrustCryptoSvc - decryptUserKeyWithDeviceKey: (1) update method to optionally accept deviceKey (2) Return null user key when no device key exists (3) decryption of user key now works in the happy path
* PM-1260 - LoginStrategy - SaveAcctInfo - Must persist device key on new account entity created from IdTokenResponse for TDE to work
* PM-1260 - SSO Login Strategy - setUserKey refactor - (1) Refactor existing logic into trySetUserKeyForKeyConnector + setUserKeyMasterKey call and (2) new trySetUserKeyWithDeviceKey method for TDE
* PM-1260 - Refactor DeviceTrustCryptoService.decryptUserKeyWithDeviceKey(...) - Add try catch around decryption attempts which removes device key (and trust) on decryption failure + warn.
* PM-1260 - Account - Add deviceKey to fromJSON
* TODO: add device key tests to account keys
* TODO: figure out state service issues with getDeviceKey or if they are an issue w/ the account deserialization as a whole
* PM-1260 - Add test suite for decryptUserKeyWithDeviceKey
* PM-1260 - Add interfaces for server responses for UserDecryptionOptions to make testing easier without having to use the dreaded any type.
* PM-1260 - SSOLoginStrategy - SetUserKey - Add check looking for key connector url on user decryption options + comment about future deprecation of tokenResponse.keyConnectorUrl
* PM-1260 - SSO Login Strategy Spec file - Add test suite for TDE set user key logic
* PM-1260 - BaseLoginStrategy - add test to verify device key persists on login
* PM-1260 - StateService - verified that settings persist properly post SSO and it's just device keys we must manually instantiate into SymmetricCryptoKeys
* PM-1260 - Remove comment about being unable to feature flag auth service / login strategy code due to circ deps as we don't need to worry about it b/c of the way we've written the new logic to be additive.
* PM-1260 - DevicesApiServiceImplementation - Update constructor to properly use abstraction for API service
* PM-1260 - Browser - AuthService - (1) Add new, required service factories for auth svc and (2) Update auth svc creation in main.background with new deps
* PM-1260 - CLI - Update AuthSvc deps
* PM-1260 - Address PR feedback to add clarity / match conventions
* PM-1260 - Resolving more minor PR feedback
* PM-1260 - DeviceTrustCryptoService - remove debug warn
* PM-1378 - DeviceTrustCryptoSvc - TrustDevice - Fix bug where we only partially encrypted the user key with the device public key b/c I incorrectly passed userKey.encKey (32 bytes) instead of userKey.key (64 bytes) to the rsaEncrypt function which lead to an encryption type mismatch when decrypting the user's private key with the 32 byte decrypted user key obtained after TDE login. (Updated happy path test to prevent this from happening again)
* PM-1260 - AccountKeys tests - add tests for deviceKey persistence and deserialization
* PM-1260 - DeviceTrustCryptoSvc Test - tweak verbiage per feedback
* PM-1260 - DeviceTrustCryptoSvc - Test verbiage tweak part 2
* Update apps/browser/src/background/service-factories/devices-api-service.factory.ts
per PR feedback
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* Defect - LockComp - After setting user key, must AWAIT retrieval of user's previous choice to have trusted the device or not. (#5804)
* [PM-2928] [PM-2929] [PM-2930] Fixes for: [PM-1203] Replace MP confirmation with verification code (#5798)
* [PM-2928] feat: hide change email if user doen't have MP
* [PM-2929] feat: hide KDF settings if user doesn't have MP
* [PM-2930] feat: remove MP copy
* Removed self-hosted check from TDE SSO config. (#5837)
* [PM-2998] Move Approving Device Check (#5822)
* Switch to retrieving approving device from token response
- Remove exist-by-types API call
- Define `HasApprovingDevices` on TDE options
* Update Naming
* Update Test
* Update Missing Names
* [PM-2908] feat: show account created toast (#5810)
* fix bug where we weren't passing MP on Restart to migrate method in lock
* fix: buffer null error (#5856)
* Auth/[pm-2759] - TDE - SSO and 2FA routing logic (#5829)
* PM-2759 - SsoComp - (1) Temp remove all TDE routing logic (2) Refactor existing navigation logic via new component utility function navigateViaCallbackOrRoute
* PM-2759 - SSO Component - Create test suite for logIn logic
* PM-2759 - SsoComp Tests - add disclaimer regarding testing private methods and props
* PM-1259 - SSO Comp - Refactor LogIn method to use functions for each navigation case for improved readability
* PM-1259 - SSO Comp Tests - Add tests for error case during login + test for new handleLoginError logic
* PM-2759 - SsoComp - Deprecate resetMasterPassword and replace with AccountDecryptionOptions logic + update tests
* PM-2759 - SsoComp + tests - Add trusted device encryption first draft handling which has login success and force password reset handling
* PM-2759 - Minor SsoComp comment and method name tweaks
* PM-2759 - BaseTwoFactorComp - (1) Comment out TDE stuff for now (2) Add test suite (3) Replace global window in base comp constructor with angular injection token for window which follows best practices and allows for mocking so the comp can be unit tested
* PM-2759 - Update child 2FA components to use angular injection token for window like base comp
* PM-2759 - TwoFactorComp - Finish testing all logic in doSubmit
* PM-2759 - TwoFactorComponent - Refactor DoSubmit method logic into multiple simple functions to make logic easier to follow
* PM-2759 - Add newtrustedDeviceOption.hasManageResetPasswordPermission property to match server changes
* PM-2759 - Flag AuthResult.resetMasterPassword property as deprecated
* PM-2759 - SSO comp - TDE routing logic - User without MP and ResetPassword permission must set a MP
* PM-2759 - Update Sso Comp tests to reflect additionally added TDE > MP set required logic (when user has no MP but they can reset other user passwords)
* PM-2759 - SsoComp - Add comment explaining the happy paths better for TDE success navigation
* PM-2759 - SsoComp - Refactor isTrustedDeviceEncEnabled logic into own method
* PM-2759 - SsoComp - As the 2FA comp passes the org id through to each route, going to standardize on doing so across the board for now to avoid any tricky scenarios down the line where it is needed and it's not present
* PM-2759 - SsoComp - Finish renaming orgIdFromState to orgIdentifier
* PM-2759 - SsoComp - update tests for forcePasswordReset flows now passing orgIdentifier as query param
* PM-2759 - SsoComp Tests - Export mockAcctDecryptionOpts permutations so we can share them across SsoComp and TwoFactorComp tests
* PM-2759 - Refactor 2FA comp post login redirect logic to match SSO component + add TDE logic
* PM-2759 - SsoComp - Refactor tests a bit for improved re-use
* PM-2759 - Sso Comp tests - can't export consts from a spec file or the other spec files that import them will re-execute the whole test suite as a nested test suite. TIL.
* PM-2759 - TwoFactorComp tests - All existing navigation scenarios + new TDE scenarios should now be tested.
* PM-2759 - Web - 2FA comp - Fix build error b/c of renamed base comp prop (identifier --> orgIdentifier)
* PM-2759 - Fix SsoLogin strategy tests b/c they were broken w/ the addition of the HasManageResetPasswordPermission prop to the TrustedDeviceOption interface
* PM-2759 - Web TwoFactorComp - goAfterLogIn method must be an arrow function to inherit the parent base component scope so that important things like angular services can be defined. Web 2FA flow does not work without this being an arrow func.
* PM-2759 - Fix typo
* PM-2759 - SsoComp and TwoFactorComp tests - move service and other mocks into the top level before each to better ensure no crossover between test states per PR feedback
* PM-2759 - SsoComp - add clarity by refactoring unclear comment
* PM-2759 - SsoComp - Per excellent PR feedback, refactor if else statements to guard statements for better readability / design
* PM-2759 - TwoFactorComp - Replace ifs with guard statements
* PM-2759 - TwoFactorComp - add clarity to comment per PR feedback
* PM-2759 - Replace use of jest.Mocked with MockProxy per PR feedback
* PM-2759 - Use unknown over any per PR feedback
* Bypass Master Password Reprompt if a user does not have a MP set (#5600)
* Add a check for a master password in PasswordRepromptService.enabled()
* Add tests for enabled()
* Update state service method call
* Use UserVerificationService to determine if a user has a master password
* rename password hash to master key hash
* fix cli build from key hash renaming
* [PM-1339] Allow Rotating Device Keys (#5806)
* Merge remote-tracking branch 'origin/feature/trusted-device-encryption' into Auth/pm-1339/rotate-device-keys
* Implement Rotation of Current Device Keys
- Detects if you are on a trusted device
- Will rotate your keys of only this device
- Allows you to still log in through SSO and decrypt your vault because the device is still trusted
* Address PR Feedback
* Move Files to Auth Ownership
* fix: getOrgKeys returning null
* [PM-3143] Trusted device encryption: Refactor reset enroll service (#5869)
* create new reset enrollment service
* refactor: login decryption options according to TODO
* feat: add tests
* PM-3143 - Add override to overriden methods
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
* generate a master key from master password if needed (#5870)
* [PM-3120] fix: device key not being saved properly (#5882)
* pm-2582 Moved code to cipher service (#5818)
* Auth/pm 1050/pm 1051/remaining tde approval flows (#5864)
* fix: remove `Unauth guard` from `/login-with-device`
* Turned encryption on (#5908)
* [PM-3101] Fix autofill items not working for users without a master password (#5885)
* Add service factories for user verification services
* Update autofill service to check for existence of master password for autofill
* Update the context menu to check for existence of master password for autofill
* context menu test fixes
* [PM-3210] fix: use back navigation (#5907)
* Removed buttons (#5935)
* PM-2759 - Fix broken backwards compatibility for authResult.resetMast… (#5940)
* PM-2759 - Fix broken backwards compatibility for authResult.resetMasterPassword
* PM-2759 - Update TODO with specific tech debt task + target release date
* TDE - State Svc - setDeviceKey should support setting null for future support of clearing device key. (#5942)
* Check if a user has a mp before showing kdf warning (#5929)
* [PM-1200] Unlock settings changes for accounts without master password - clients (#5894)
* [PM-1200] chore: add comment for jake
* [PM-1200] chore: rename to `vault-timeout`
* [PM-1200] feat: initial version of `getAvailableVaultTimeoutActions`
* [PM-1200] feat: implement `getAvailableVaultTimeoutActions`
* [PM-1200] feat: change helper text if only logout is available
* [PM-1200] feat: only show available timeout actions
* [PM-1200] fix: add new service factories and dependencies
* [PM-1200] fix: order of dependencies
`UserVerificationService` is needed by `VaultTimeoutSettingsService`
* [PM-1200] feat: add helper text if no lock method added
* [PM-1200] refactor: simplify prev/new values when changing timeout and action
* [PM-1200] feat: fetch timeout action from new observable
* [PM-1200] refactor: make `getAvailableVaultTimeoutActions` private
* [PM-1200] feat: add test cases for `vaultTimeoutAction$`
* [PM-1200] feat: implement new timeout action logic
* [PM-1200] feat: add dynamic lock options to browser
* [PM-1200] feat: enable/disable action select
* [PM-1200] feat: add support for biometrics
* [PM-1200] feat: add helper text and disable unavailable options
* [PM-1200] feat: update action on unlock method changes
* [PM-1200] feat: update browser to use async pipe
* [PM-1200] fix: element not updating
* [PM-1200] feat: hide masterPassOnRestart pin option
* [PM-1200] feat: hide change master password from browser settins
* [PM-1200] feat: hide change master password from app menu
* [PM-1200] feat: logout if lock is not supported
* [PM-1200] feat: auto logout from lock screen if unlocking is not supported
* [PM-1200] feat: remove lock button from web menus
* Revert "[PM-1200] fix: element not updating"
This reverts commit b27f425f48570d0d5dbc9dedb9797023fef64d8b.
* Revert "[PM-1200] feat: update browser to use async pipe"
This reverts commit 766c15bc3dbadcf7dcef3053b148e7874f8939ce.
* [PM-1200] chore: add comment regarding detectorRef
* [PM-1200] feat: remove lock now button from browser settings
* [PM-1200] feat: add `userId` to unlock settings related methods
* [PM-1200] feat: remove non-lockable accounts from menu
* [PM-1200] fix: cli not building
---------
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
* [PM-3215][PM-3289] Create MasterKey from Password If Needed (#5931)
* Create MasterKey from Password
- Check if the MasterKey is stored or not
- Create it if it's not
* Add getOrDeriveKey Helper
* Use Helper In More Places
* Changed settings menu to be enabled whenever the account is not locked. (#5965)
* [PM-3169] Login decryption options in extension popup (#5909)
* [PM-3169] refactor: lock guard and add new redirect guard
* [PM-3169] feat: implement fully rewritten routing
* [PM-3169] feat: close SSO window
* [PM-3169] feat: store sso org identifier in state
* [PM-3169] fix: tests
* [PM-3169] feat: get rid of unconventional patch method
* PM-3169 - SSO & 2FA Comps - Update naming of new callback to match existing pattern + add tests for callback logic execution.
* PM-3169 - Update LockGuard to have a special exception for allowing the TDE Login with MP flow
* PM-3169 - Per discussion w/ Jake and Justin, rename login-initiated guard to be tde decryption required guard (more named for functionality vs specific route)
* PM-3169 - Add some additional context to new redirect guard scenario
* PM-3169 - Per PR feedback, replace all callback types with Promise<void> as the return values are not being used.
* PM-3169 - StateSvc - Per PR feedback, update setUserSsoOrganizationIdentifier signature to explicitly use null instead of partial<string> which doesn't do anything
* PM-3169 - Replace onSuccessfulLogin type to compile
* PM-3169 - Add clarification comment for why we are not using a query param for persisting the org identifier
* PM-3169 - Per discussion with Justin, only use memory for SsoOrgId as we don't need to persist it beyond that; tested and it worked on all 3 clients for new user TDE creation
* PM-3169 - Add missing ssoIdentifierRequired translation to desktop and browser
* PM-3169 - After discussing with Justin again, we realized that memory doesn't work on desktop if user refreshes app or closes and re-opens it so must use disk.
* PM-3169 - Per PR feedback, remove hasEverHadUserKey logic as we can just leverage existing getUserKey method to check if we have a user key or not; tested all guards in browser and web with no issues
* PM-3169 - Per design discussion with Danielle, move account created toast after successful account creation vs on load of page.
---------
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
* [PM-3314] Fixed missing MP prompt on lock component (#5966)
* Updated lock component to handle no master password.
* Added a comment.
* Add Missing Slash (#5967)
* Fix AdminAuthRequest Serialization on Desktop (#5970)
- toJSON isn't being called by ElectronStorageService
- Force it's conversion to JSON earlier so it happens for all storage methods
* Fix issue where we were incorrectly calling setRememberEmailValues in the AdminAuthRequest state - no need to do this as the email is already saved to state. By calling this method, we would actually overwrite the already saved email with null as the user's choice to remember email wasn't persisted through SSO on the login service. (#5972)
* PM-3329 - Restore everHadUserKey logic from PM-3169 which I incorrectly removed in order to fix routing logic so that user can lock and land on the lock screen properly (#5979)
* PM-3210 - TDE - LoginWithDevice routing fix - Mirror PR #5950 in just simply providing a back action on click which works for all app generated scenarios (#5982)
* PM-3332 - TDE - SsoLoginStrategy - For existing admin auth reqs, must… (#5980)
* PM-3332 - TDE - SsoLoginStrategy - For existing admin auth reqs, must manually handle 404 error case to prevent app from hanging and clear the local state if the admin auth req in the DB has been purged; i.e., it should fail silently.
* Add TODO for SSO Login Strategy tests
* PM-3331 - TDE - Firefox - Browser extension - fix access denied error… (#5984)
* PM-3331 - TDE - Firefox - Browser extension - fix access denied error on popup load which was caused by the canAccessFeature guard failing to lookup the TDE feature flag as the server config was returning null even after a successful server call as only returned the value if the user was unauthenticated for some reason
* PM-3331 - After discussion with Andre, further refactor ConfigService logic to always return the latest information from the server so that requests for feature flag data will always get the most up to date information.
* PM-3345 - TDE - Desktop - Biometrics setting submenu tweak - do not s… (#5988)
* PM-3345 - TDE - Desktop - Biometrics setting submenu tweak - do not show require MP or PIN entry on restart if user doesn't have at least one of those options b/c otherwise user can get into a bad state where they cannot unlock
* PM-3345 - TDE - Desktop - Settings comp - if user turns off PIN and Biometric is on + require PIN on restart is enabled then must turn that setting off to prevent bad user state
* PM-3345 - Final tweak to logic
* [PM-2852] Final merge from Key Migration branch to TDE Feature Branch (#5977)
* [PM-3121] Added new copy with exclamation mark
* [PM 3219] Fix key migration locking up the Desktop app (#5990)
* Only check to migrate key on VaultTimeout startup
* Remove desktop specific check
* PM-3332 - LoginWithDevice - Add error handling logic around admin auth request retrieval similar to sso login strategy to prevent error state and allow re-creation of an admin auth request if it has been purged from the server for whatever reason. (#5991)
* PM-3355 - TDE - Browser JIT Account Creation - Browser create user logic still had logic for simply closing the extension tab but as we no longer open the login decryption options in a tab we needed to update the logic here to navigate the user directly onto the vault. (#5993)
* Add distinctUntilChanged to fix multiple value changes for biometrics firing (#5999)
* Add optional chaining to master key (#6007)
* PM-3369 - TDE - Persist user's choice to trust device to state when user ma… (#6000)
* PM-3369 - Persist user's choice to trust device to state when user makes choice + persist previous choices out of state
* PM-3369 - Must set trust device in state on load if it's never been set before
* PM-3369 - Refactor BaseLoginDecOptions to properly set trust device choice in state on load
* Update libs/angular/src/auth/components/base-login-decryption-options.component.ts
Co-authored-by: Jake Fink <jfink@bitwarden.com>
---------
Co-authored-by: Jake Fink <jfink@bitwarden.com>
* Updated email change component to getOrDeriveMasterKey (#6009)
* [PM-3330] Force Update to Lockable Accounts on PIN/Biometric Update (#6006)
* Add Listener For Events that Need To Redraw the Menu
* Send redrawMenu Message When Pin/Biometrics Updated
* DeviceTrustCryptoService - don't worry about checking if a device should establish trust or not if the user doesn't have trusted device encryption on (#6010)
* Auth / pm 3351 / TDE Login - Browser & Desktop vault sync issue fix (#6002)
* PM-3351 - TDE Login on desktop and browser via SSO comp with no 2FA should trigger sync like standard onSuccessfulLogin process used to so user lands on vault with data.
* PM-3351 - 2FA Comp - Refactor onSuccessfulLogin logic to only execute in the success path just like the SSO component + adding specific onSuccessfulLoginTde flow just like SSO comp. + removed unnecessary calls to loginService.clearValues(). Added browser & desktop definitions for onSuccessfulLoginTde which is just a fullSync kick off.
* TODO
* PM-3351 - remove await to restore code back to previous state without hang.
* PM-3351 - 2FA Comp - Don't await onSuccessfulLoginTde b/c it causes a hang
* PM-3351 - remove sso comp incorrect todo
* PM-3351 - SsoComp - don't await onSuccessfulLoginTde for browsers sake
* PM-3351 - SsoComp - remove awaits from onSuccessfulLoginTde and onSuccessfulLogin to avoid any hangs on desktop and browser
* PM-3351 - Convert onSuccessfulLoginTde to promise<void> as its return is not used + refactor all to be consistent and clearly communciate that the sync won't be awaited.
* PM-3351 - Convert onSuccessfulLogin to promise<void> and update all methods accordingly to more clearly indicate that the syncs and any other logic won't be awaited.
* [PM-3356] Fallback to OTP When MasterPassword Hasn't Been Used (#6017)
* Fallback to OTP When MasterPassword Hasn't Been Used
* Update Test and Rename Method
* Revert "DeviceTrustCryptoService - don't worry about checking if a device should establish trust or not if the user doesn't have trusted device encryption on (#6010)" (#6020)
This reverts commit 6ec22f9570.
* PM-3390 - TDE - Redraw desktop after user creation to update isLocked checks and get menu to be enabled properly (#6018)
* [PM-3383] Hide Change Password menu option for user with no MP (#6022)
* Hide Change Master Password menu item on desktop when a user doesn't have a master password.
* Renamed variable for consistency.
* Updated to base logic on account.
* Fixed menubar
* Resolve merge errors in crypto service spec
* Fixed autofill to use new method on userVerificationService (#6029)
* conflict resolution
* missing file
* PM-3456 - TDE Admin Auth Req Flow - FF dead object issue - The foreground popup must retrieve the long lived background services for the new TDE services (the AuthRequestCryptoService service fixes this issue, but the DeviceTrustCryptoService should have been added to services.module as well) (#6037)
* skip auto key check when using biometrics on browser (#6041)
* Added comments for backward compatibility removal. (#6039)
* Updated warning message. (#6059)
* Tde pr feedback (#6051)
* move pin migration to the crypto service
* refactor config service logic
* refactor lock component load logic
* rename key connector methods
* add date to backwards compat todo
* update backwards compat todo
* don't specify defaults in redirectGuard
* nit
* add null & undefined check for userid before using the account
* fix ui tests
* add todo for tech debt
* add todo comment
* Fix storybook per PR feedback
* Desktop & Browser - lock comp - add optional chaining check for focusable input - user can just have biometric and not have a MP or a PIN so must support that.
* Main.background.ts - remove duplicate instantiations of the userVerificationApiService and userVerificationService which were added in two separate PRs
* Per PR feedback - (1) Browser app routing module - fix incorrect import for redirect guard (2) Created index.ts file for auth guards to simplify imports and updated imports
* Per PR feedback, (1) Update jslib-services.module to provide actual instance of VaultTimeoutService (2) Update init service to use concrete VaultTimeoutService vs abstraction.
Co-authored-by: Matt Gibson <git@mgibson.dev>
* Per PR feedback - update services module AuthRequestCryptoService and DeviceTrustCryptoService to use shorthand format.
* Per PR feedback, add devicesService to main background and update services module to ensure the popup leverages the background devicesService
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
Co-authored-by: Matt Gibson <git@mgibson.dev>
* Updated message keys for CrowdIn to pick them up. (#6066)
* TDE PR Feedback resolutions round 2 (#6068)
* Per PR feedback - main.background.ts - move userVerificationService and userVerificationApiService to correct location
* Per PR feedback - JS lib services + vault timeout service updates - (1) Correctly type callbacks based on injection tokens (2) Update vault timeout service to have proper types based on injection tokens
* Per PR Feedback - update web init service to inject actual VaultTimeoutService vs abstraction similar to what we did for desktop here: 55a797d4ff
* Per more feedback - revert incorrect changes to VaultTimeoutService based on existing injection token types for LOGOUT_CALLBACK and LOCKED_CALLBACK.. and instead update the injection token types themselves to match how they are being used.
* Per PR feedback - in browser main.background.ts, inject concrete VaultTimeoutService instead of abstraction so we don't have to cast it anymore (matching web & desktop)
* Conflict resolution
* PM-2669 Added missing changes from conflict resolution
* Turn cipher encryption on for testing purposes
* Bumped up minimum version
* Turn off cipher key encryption
* Converted to jest-mock-extended and removed dependency
* Remove key from cipher view
* Added comment to Cipher for future refactoring (#6175)
* Remove ConfigApiServiceAbstraction from popup services (#6174)
* Replaced null orgId. (#6208)
* Added reference to new aesGenerateKey function. (#6222)
* Updated server version and feature flag for QA smoke tests.
* [PM-2814] Add ConfigService to CipherService (#6239)
* Updated CipherService to use ConfigService
Updated version check.
* Added missing DI for CLI.
* Updated parameter name for consistency.
* Addressed use of options pattern in config-service.factory.ts.
* Added CLI initialization. (#6266)
* Updated checkServerMeetsVersionRequirement to use observable (#6270)
* [PM-2814] Handle key rotation missing key (#6267)
* Fixed issue with key rotation
* Updates to CipherService to handle not having key on the model.
* More refactoring.
* Updated abstraction to remove private method.
* Fixed test.
* Updated test to reflect the fact that we set key to null.
* Resolved merge conflicte with logService added in master.
* Updated Mv3 factory include log service from merge in ConfigService initialization.
* Fixed another merge conflict with ConfigService to add logService dependency.
* Disable configService timer for cli (#6319)
The rxjs timer() function keeps the node process alive and stops it from exiting.
CLI should not run long enough to actually use the timer, so just remove it.
* [PM-3978] Handle sharing with org with cipher key encryption (#6370)
* Added explicit parameters to encrypt to handle org sharing.
* Updated add-edit to handle new parameter to encrypt
* Updated minimum server version for QA testing.
* Updated minimum version to `2023.8.0` and turned off cipher encryption for QA.
* Updated minimum server version in preparation for release.
* [PM-2669] PR review changes (#6415)
* Addressed PR feedback.
* Added comments and renamed parameters for clarity.
* Updated vault export to keep immediate invocation and reformat for clarity.
Co-authored-by: aj-rosado <109146700+aj-rosado@users.noreply.github.com>
* Updated comment.
* Removed async that was left on saveCipherAttachment accidentally.
---------
Co-authored-by: aj-rosado <109146700+aj-rosado@users.noreply.github.com>
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Jacob Fink <jfink@bitwarden.com>
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
Co-authored-by: Carlos Gonçalves <cgoncalves@bitwarden.com>
Co-authored-by: aj-rosado <109146700+aj-rosado@users.noreply.github.com>
Co-authored-by: Andreas Coroiu <andreas@andreascoroiu.com>
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: André Bispo <abispo@bitwarden.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Vincent Salucci <vincesalucci21@gmail.com>
Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
Co-authored-by: Matt Gibson <git@mgibson.dev>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Add selfhosted anonaddy url
* Remove newlines
* Add serverurl field to web
* Show anonaddy api errors
* Add forwardedAnonAddyBaseUrl prop to UsernameGeneratorOptions type
* Use Alias Domain instead of just Domain name
This is easier to distinguish between domain and server url
* Only show Server Url on web if on selfhosted bitwarden
---------
Co-authored-by: Daniel James Smith <djsmith@web.de>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* [PM-3730] MPR-enabled items invoke the pop-out window automatically when autofill on-page-load is enabled
* [PM-3730] Updating vault item views to ensure that autofill on page load setting is not confusing to users
* [PM-3730] Setting up toast message to appear when user opts to turn on master password reprompt
* [PM-3730] Ensuring that toast messages do not show when the autofill on page load value is not on
* [PM-3730] Updating copy and adding help text below the autofill on page load field within vault items in the extension
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2747] Add Support for Feature Flag of Autofill Version
* [PM-2747] Adding Support for Manifest v3 within the implementation
* [PM-2747] Modifying how the feature flag for autofill is named
* [PM-2747] Modifying main.background.ts to load the ConfigApiService correctly
* [PM-2747] Refactoring trigger of autofill scripts to be a simple immediately invoked function
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2747] Modifying how we inject the autofill scripts to ensure we are injecting into all frames within a page
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* Refining implementation for ShadowDOM fix
* update tests
* cleanup
* [PM-3285] Autofill v2 Feature Branch
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2747] Applying a fix for a race condition that can occur when loading the notification bar and autofiller script login
* [PM-2747] Reverting removal of autofill npm action. Now this will force usage of autofill-v2 regardless of whether a feature flag is set or not
* [PM-2747] Fixing logic error incorporated when merging in master
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2747] Fixing issue present with notification bar merge
* [PM-2130] Fixing test test for when we need to handle a password reprompt
* [PM-3465] Optimization of CollectPageDetails Message within Autofill
* [PM-3465] Implementing caching for CollectPage details call
* [PM-3465] Implementing caching for CollectPage details call
* [PM-3465] Implementing method for ensuring that getPageDetails is not called when no fields appear within a frame
* [PM-3465] Implementing Mutation Observer to handle updating autofill fields when DOM updates
* [PM-2747] Fixing wording for webpack script
* [PM-2130] - Audit, Modularize, and Refactor Core autofill.js File (#5453)
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing test test for when we need to handle a password reprompt
---------
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* [PM-2747] Finanlizing implementation of attribute updates on cached values
* [PM-3465] Finalizing implementation of mutation observer behavior and CollectPageDetails optimization
* [PM-3465] Adding jest tests for introduced functionality
* [PM-3465] Finalizing jest tests and comments within implementation
* [PM-3465] Removing a TODO by incorrporating a method for deep querying for a password field element
* [PM-3465] Removing a TODO by incorrporating a method for deep querying for a password field element
* [PM-3285] Migrating Changes from PM-1407 into autofill v2 refactor implementation
* [PM-2747] Addressing stylistic changes requested from code review
* [PM-2747] Add Support for Feature Flag of Autofill Version (#5695)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2747] Add Support for Feature Flag of Autofill Version
* [PM-2747] Adding Support for Manifest v3 within the implementation
* [PM-2747] Modifying how the feature flag for autofill is named
* [PM-2747] Modifying main.background.ts to load the ConfigApiService correctly
* [PM-2747] Refactoring trigger of autofill scripts to be a simple immediately invoked function
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2747] Modifying how we inject the autofill scripts to ensure we are injecting into all frames within a page
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2747] Applying a fix for a race condition that can occur when loading the notification bar and autofiller script login
* [PM-2747] Reverting removal of autofill npm action. Now this will force usage of autofill-v2 regardless of whether a feature flag is set or not
* [PM-2747] Fixing logic error incorporated when merging in master
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2747] Fixing issue present with notification bar merge
* [PM-2130] Fixing test test for when we need to handle a password reprompt
* [PM-2747] Fixing wording for webpack script
* [PM-2747] Addressing stylistic changes requested from code review
* [PM-2747] Addressing stylistic changes requested from code review
---------
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
* [PM-3285] Applying stylistic changes suggested by code review for the feature flag implementation
* [PM-3285] Adding temporary console log to validate which version is being used
* [PM-3465] Implementing a methodology for sorting the autofill field elements after awaiting the results of each element
* [PM-3465] Implementing a methodology for sorting the autofill field elements after awaiting the results of each element
* [PM-3465] Implementing a methodology for using cached field values when requerying DOM for elements
* [PM-3285] Removing temporary console log indicating which version of autofill the user is currently loading
* [PM-3465] Adding scripting api reference to the manifest v3 json file
* [PM-3465] Updating implementation to deal with cache invalidation issues
* [PM-3465] Implementing jest tests for added collect autofill content class elements
* [PM-3465] Removing scripting API permissiong within manifest v3 json file
* [PM-3465] Implementing method for removing cached page details if the window location has updated
* [PM-3465] Fixing issue found with query selector generated while collecting page details
* [PM-3465] Fixing jest tests
* [PM-3465] Fixing jest tests
---------
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
The .1pux-format is technically just a ziup-file that contain a file named `export.data`which is a json file.
These changes add support to upload either a 1pux or the export.data file directly.
The thought to change this came through the recent addtion of the ProtonPass importer.
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* pull in a11y changes from PR #5532
* add focus to popup when selected via keyboard
* make popup close upon outside click
* prevent close() from running twice on click
* pull in typo fix changes from PR #5530 (addressing PM-2433)
* add class to make backdrop transparent
* Change toggle button and dialog buttons for region selection (#5532)
* `<a>` elements without `href` don't take focus, currently making the region selection trigger not operable with keyboard - changing to `<button>`
* region buttons now convey their state (selected or not) with `aria-pressed`
Co-authored-by: rr-bw <102181210+rr-bw@users.noreply.github.com>
* remove span
* cleanup browser styles
* cleanup desktop styles
---------
Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
* [PM-3783] chore: remove `ngZone.run` calls
No longer needed now that we have zone-patches for `chrome.runtime.onMessage`
* [PM-3783] feat: patch `chrome.runtime.onMessage` event listeners
* setting send password to null if it is empty
* Using Utils.IsNullOrWhiteSpace to verify name and password on SendAddEdit.
Removed unnecessary setting password as null on desktop
* update desktop and browser swal references to use CL
* rename bit-dialog-close
* share fingerprint dialog between desktop and browser
* apply code review
* format fingerprint in template
* apply code review
* fix button color
* fix button types
* update var names
* close awaitDesktop dialog on success AND error
* add DialogService to NativeMessageHandlerService deps
* wrap browser message dialogs in ngZone.run
* wrap native messaging handler in ngzone.run
* apply code review
* fix async ngzone
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* cycle last used cipher on subsequent keyboard shortcut use on a page
* incorporate master password existence check
* cycle next cipher before reprompt
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* replace hasMasterPassword with hasMasterPasswordAndMasterKeyHash
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* refactor ConfigService to use observables
* make environmentService.urls a ReplaySubject
---------
Co-authored-by: Hinton <hinton@users.noreply.github.com>
* remove flags from web component
* remove selectedRegionImageName from web component
* remove input
* delete image files and update browser translation
* update translation and popup width for destkop/browser
* remove translations
* revert width on dialog
* [PM-3285] Autofill v2 Feature Branch
* [PM-2130] - Audit, Modularize, and Refactor Core autofill.js File (#5453)
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing test test for when we need to handle a password reprompt
---------
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* [PM-3285] Migrating Changes from PM-1407 into autofill v2 refactor implementation
* [PM-2747] Add Support for Feature Flag of Autofill Version (#5695)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2747] Add Support for Feature Flag of Autofill Version
* [PM-2747] Adding Support for Manifest v3 within the implementation
* [PM-2747] Modifying how the feature flag for autofill is named
* [PM-2747] Modifying main.background.ts to load the ConfigApiService correctly
* [PM-2747] Refactoring trigger of autofill scripts to be a simple immediately invoked function
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2747] Modifying how we inject the autofill scripts to ensure we are injecting into all frames within a page
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2747] Applying a fix for a race condition that can occur when loading the notification bar and autofiller script login
* [PM-2747] Reverting removal of autofill npm action. Now this will force usage of autofill-v2 regardless of whether a feature flag is set or not
* [PM-2747] Fixing logic error incorporated when merging in master
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2747] Fixing issue present with notification bar merge
* [PM-2130] Fixing test test for when we need to handle a password reprompt
* [PM-2747] Fixing wording for webpack script
* [PM-2747] Addressing stylistic changes requested from code review
* [PM-2747] Addressing stylistic changes requested from code review
---------
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
* [PM-3285] Applying stylistic changes suggested by code review for the feature flag implementation
* [PM-3285] Adding temporary console log to validate which version is being used
* [PM-3285] Removing temporary console log indicating which version of autofill the user is currently loading
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* Converted add-edit send component dialog into a bit-dialog
* Updated Send AddEdit text fields to Component Library
* Migrated Share and Options fields to ComponentLibrary on SendAddEdit
* Migrated footer buttons to ComponentLibrary on SendAddEdit
* Updated web's SendAddEdit component file fields
* Replaced file upload with component library
* Changed SendAddEdit to use Reactive Forms on web
* Changed browser SendAddEdit to use ReactiveForms
* Update SendAddEdit on desktop to use ReactiveForms
* Added AppA11yTitle to button on web SendAddEdit
* Initial efflux-dates web change to ComponentLibrary
* Corrected delete button to check if it is in EditMode on SendAddEdit
* Using BitLink on options button
* Corrected typo on send add edit desktop
* Replaced efflux-dates with datetime-local input on SendAddEdit web, browser and desktop
* Removed efflux dates
* Added firefox custom date popout message on DeletionDate to SendAddEdit browser component
* moved desktop's new send data reload from send to SendAddEdit component
* removing unnecessary attributes and spans from Send AddEdit web
* removed redundant try catch from add edit and unnecessary parameter from close
* Added type for date select options
* Removed unnecessary classes and swapped bootstrap classes by corresponding tailwind classes
* Removed unnecessary code
* Added file as required field
Submit only closes popup on success
* Added pre validations at start of submit
* PM-3668 removed expiration date from required
* PM-3671 not defaulting maximum access count to 0
* PM-3669 Copying the link from link method
* Removed required tag from html and added to formgroup
* PM-3679 Checking if is not EditMode before validating if FormGroup file value is set
* PM-3691 Moved error validation to web component as browser and desktop need to show popup error
* PM-3696 - Disabling hide email when it is unset and has policy to not allow hiding
* PM-3694 - Properly setting default value for dates on Desktop when changing from an existing send
* Disabling hidden required fields
* [PM-3800] Clearing password on new send
* feat(cli): add minNumber option and pass to generation service
* feat(cli): add minSpecial option and pass to generation service
* feat(cli): add ambiguous option and pass to generation service
* refactor: extract utils to convert number and string options
* feat(ts): add types to utils and options
* feat: validate result of parsed value in convertNumberOption util
* change code color to meet accessibility requirements
* updates to desktop and web
* adjust colors for desktop, web, and browser
* update color values
* switch nord color to use same as Tailwind theme
* align variable names
* close duplicate single-action windows
* Use longform conditional
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* WIP: safer state migrations
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
* Add min version check and remove old migrations
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Add rollback and version checking
* Add state version move migration
* Expand tests and improve typing for Migrations
* Remove StateMigration Service
* Rewrite version 5 and 6 migrations
* Add all but initial migration to supported migrations
* Handle stateVersion location in migrator update versions
* Move to unique migrations directory
* Disallow imports outside of state-migrations
* Lint and test fixes
* Do not run migrations if we cannot determine state
* Fix desktop background StateService build
* Document Migration builder class
* Add debug logging to migrations
* Comment on migrator overrides
* Use specific property names
* `npm run prettier` 🤖
* Insert new migration
* Set stateVersion when creating new globals object
* PR comments
* Fix migrate imports
* Move migration building into `migrate` function
* Export current version from migration definitions
* Move file version concerns to migrator
* Update migrate spec to reflect new version requirements
* Fix import paths
* Prefer unique state data
* Remove unnecessary async
* Prefer to not use `any`
---------
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* [PM-3589] Context Menu No Longer Shows Autofill Ciphers
* [PM-3589] Ensuring that passwordless users can also access ciphers that require reprompt
* [PM-3589] Fixing jest test
* [PM-3589] Fixing issue where context menu autofill does not allow filling when passwordless setup is in place
* update destop images
* update images on browser
* update images on web vault
* revert to previous height
* merge master
* upload new images with same aspect-ratio
* PM-1049 - Create first display draft of login-decryption-options base and web components (no data loading or user actions wired up yet; WIP)
* PM-1049 - Update DeviceResponse to match latest properties on backend
* PM-1049 - Add getDevices call to retrieve all user devices to API service
* PM-1049 - WIP on figuring out login decryption options component requirements
* PM-1049 - Add empty login decryption options to desktop
* PM-1049 - Desktop - Update "Log in initiated" translation to be "Login Initiated" per figma and product request
* PM-1049 - Desktop - login decryption options component html done
* PM-1049 - Move login-decryption-options in web into own folder
* PM-1049 - Browser - created html for login-decryption-options component
* PM-1049 - Move newly created getDevices() method out of api.service into proper place in new devices-api.service.
* PM-1049 -Comment cleanup and TODO added
* PM-1049 - Comment cleanup and dependency cleanup across all login-decryption-options comps
* PM-1049 - WIP of building out needed response and regular models for saving new UserDecryptionOptions on the Account in state.
* PM-1049 - Update all User Decryption Options response and state models in light of the back end changes from a list to an object. Web building now with decryption options stored on state under the account successfully. Must now build out state service methods for retrieving / setting account decryption options for use elsewhere.
* PM-1049 - State Service - setup setters / getters for UserDecryptionOptions off the account
* PM-1049 - StateService - replace User with Acct for decryption options
* PM-1049 - Create domain models vs using response models as response models have a response property w/ the full response nested underneath which we don't need to persist for the user decryption options stored on the account.
* PM-1049 - AcctDecryptionOptions now persist across page refreshes of the login-initiated page to act similarly to refreshes on the lock screen. Accomplished via persisting AcctDecryptionOptions in local storage -- still cleared on logout.
* PM-1049 - IdTokenResponse - only userDecryptionOptions if they exist on the response from the server; I saw a few instances where it did not. Wasn't able to replicate consistently, but I put this check here to be safe.
* PM-1049 - Login Initiated route can only be accessed if user is AuthN w/ locked vault + TDE feature flag is on.
* PM-1049 - LoginDecryptionOptions - (1) Wire up loading logic (2) Retrieve User Acct Decryption options to determine whether or not to show request admin approval btn and approve w/ MP (3) Write up future logic for requestAdminApproval (4) approveWithMasterPassword takes you to the lock screen to login.
* PM-1049 - Apply same guards as in web to login-decryption-options in desktop & browser.
* PM-1049 - (1) Updated dependencies in parent BaseLoginDecryptionOptionsComponent class + child components (2) Retrieve userEmail b/c needed for displaying which email the user is logging in with (3) Add log out functionality (4) Add comments regarding future implementation details for each login approval flow.
* PM-1049 - Web/Browser/Desktop LoginDecryptionOptions - (1) Wire up approval buttons (2) Add conditional margins (3) Loading spinner added (4) Display userEmail + "not you" logout link
* PM-1049 - Add TODOs for future changes needed as part of the Login Approval flows for TDE
* PM-1049 - TODO: replace base component with business service
* add new storage to replace MasterKey with UserSymKey
* add storage for master key encrypted user symmetric key
* Begin refactor of crypto service to support new key structure
* remove provided key from getKeyForUserEncryption
* add decryption with MasterKey method to crypto service
* update makeKeyPair on crypto service to be generic
* add type to parameter of setUserKey in abstraction of crypto service
* add setUserSymKeyMasterKey so we can set the encrypted user sym key from server
* update cli with new crypto service methods
- decrypt user sym key and set when unlocking
* separate the user key in memory from user keys in storage
* add new memory concept to crypto service calls in cli
* update auth service to use new crypto service
* update register component in lib to use new crypto service
* update register component again with more crypto service
* update sync service to use new crypto service methods
* update send service to use new crypto service methods
* update folder service to use new crypto service methods
* update cipher service to use new crypto service
* update password generation service to use new crypto service
* update vault timeout service with new crypto service
* update collection service to use new crypto service
* update emergency access components to use new crypto service methods
* migrate login strategies to new key model
- decrypt and set user symmetric key if Master Key is available
- rename keys where applicable
- update unit tests
* migrate pin to use user's symmetric key instead of master key
- set up new state
- migrate on lock component
- use new crypto service methods
* update pin key when the user symmetric key is set
- always set the protected pin so we can recreate pin key from user symmetric key
- stop using EncryptionPair in account
- use EncString for both pin key storage
- update migration from old strategy on lock component
* set user symmetric key on lock component
- add missed key suffix types to crypto service methods
* migrate auto key
- add helper to internal crypto service method to migrate
* remove additional keys in state service clean
* clean up the old pin keys in more flows
- in the case that the app is updated while logged in and the user changes their pin, this will clear the old pin keys
* finish migrate auto key if needed
- migrate whenever retrieved from storage
- add back the user symmetric key toggle
* migrate biometrics key
- migrate only on retrieval
* fix crypto calls for key connector and vault timeout settings
* update change password components with new crypto service
* update assortment of leftover old crypto service calls
* update device-crypto service with new crypto service
* remove old EncKey methods from crypto service
* remove clearEncKey from crypto service
* move crypto service jsdoc to abstraction
* add org key type and new method to build a data enc key for orgs
* fix typing of bulk confirm component
* fix EncString serialization issues & various fixes
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
* update account model with new keys serialization
* migrate native messaging for biometrics to use new key model
- support backwards compatibility
- update safari web extension to send user key
- add error handling
* add early exit to native messaging flow for errors
* improve error strings in crypto service
* disable disk cache for browser due to bg script/popup race conditions
* clear bio key when pin is migrated as bio is refreshed
* share disk cache to fix syncing issues between contexts
* check for ephemeral pin before process reload
* remove state no longer needed and add JSDOC
* fix linter
* add new types to tests
* remove cryptoMasterKeyB64 from account
* fix tests imports
* use master key for device approvals still
* cleanup old TODOs, add missing crypto service parameters
* fix cli crypto service calls
* share disk cache between contexts on browser
* Revert "share disk cache between contexts on browser"
This reverts commit 56a590c491.
* use user sym key for account changing unlock verification
* add tests to crypto service
* rename 'user symmetric key' with 'user key'
* remove userId from browser crypto service
* updated EncKey to UserKey where applicable
* jsdoc deprecate account properties
* use encrypt service in crypto service
* use encrypt service in crypto service
* require key in validateUserKey
* check storage for user key if missing in memory
* change isPinLockSet to union type
* move biometric check to electron crypto service
* add secondary fallback name for bio key for safari
* migrate master key if found
* pass key to encrypt service
* rename pinLock to pinEnabled
* use org key or user key for encrypting attachments
* refactor makeShareKey to be more clear its for orgs
* rename retrieveUserKeyFromStorage
* clear deprecated keys when setting new user key
* fix cipher service test
* options is nullable while setting user key
* more crypto service refactors
- check for auto key when getting user key
- consolidate getUserKeyFromMemory and FromStorage methods
- move bio key references out of base crypto service
- update either pin key when setting user key instead of lock component
- group deprecated methods
- rename key legacy method
* Feature/PM-1049 - TDEFflow 3 login decryption options - PR feedback changes (#5642)
* PM-1049 - PR Feedback change - Browser - replace incorrect use of routerlink with manual attribute styling to keep anchor styling + tab focus while not having a router action race condition for the log out action to complete.
* PM-1049 - PR Feedback - State Service changes - rename get/setAcctDecryptionOptions to get/setAccountDecryptionOptions
* PM-1049 - PR Feedback changes - LoginDecryptionOptionsComp - Remove unncessary appA11yTitle directives as title / aria text would be identical to the displayed inner button text.
* DeviceType - Create sets of device types which other components can reference to avoid having to manually define groups of device types.
* PM-1049 - PR Feedback Changes - Update base-login-decryption-options component to leverage async piped observables per best practices. Updated all client templates to leverage new data streams.
* PM-1049 - BaseLoginDecryptionOptionsComp - Add validation service for generic error handling
* PM-1049 - DeviceResponse mistakenly had name as a number instead of a string
* PM-1049 - First draft of creating observable based data store service for Devices so that the base login comp can leverage it instead of calling the devices API service directly (as it will be moved into the SDK in the future).
* PM-1049 - Register new DevicesService on jslib-services module for use in components.
* PM-1049 - Add new hasDevicesOfTypes call to devices data store svc + devices API service.
* PM-1049 - BaseLoginDecryptionOptionsComp - wire up call to devicesService.hasDevicesOfTypes to replace getDevices() to avoid bringing down all trusted device information unnecessarily.
* PM-1049 - LoginDecryptionOptionsComp - Web HTML - clean up loading state so it displays spinner centered properly.
* PM-1049 - LoginDecryptionOptionsComp - Desktop HTML - Don't show login initiated title while page is loading to match other clients behavior.
* PM-1049 - Devices Services - Update naming of hasDevicesOfTypes to match new name on back end + route change to getDevicesExistenseByTypes
* PM-1049 - Device Response & View models - remove keys which are going to be deprecated on the base model
* PM-1049 - DevicesService - devicesBSubject --> devicesSubject rename per PR feedback
* PM-1049 - Devices Services - correct spelling of existence (*facepalm*)
* PM-1049 - Update comment for clarity per PR feedback
* PM-1049 - DevicesSvc - UserSymKey --> UserKey rename
* PM-1049 - BaseLoginDecryptionOptions - replace user email source - get from stateService vs tokenService.
* PM-1049 - BaseLoginDecryptionOptions - Remove uncessary check for userEmail as we will always have it here otherwise everything in the app is broken.
* PM-1049 - BaseLoginDecryptionOptions - Finish cleaning up removal of user email from showReqAdminApprovalBtn$ stream
* PM-1049 - LoginDecryptionOptionsComp - HTML revisions in web & browser to better space out buttons using tailwind or top margin to avoid need for multiple async pipes and shareReplay.
* PM-1049 - DevicesService - of course all observables should have $ suffix. Facepalm.
* PM-1049 - BaseLoginDecryptionOptionsComp - Update verbiage and style of destroy observable used for hooking into ngOnDestroy lifecycle to clean up all observables
* PM-1049 - BaseLoginDecryptionOptions - PR feedback changes - refactor user email to have an underlying bSubject stream to ensure subscription/promise execution separately from the template async pipe subscribing to the stream.
* PM-1049 - DevicesApiService - getDevicesExistenceByTypes - PR feedback - explicitly convert result to boolean instead of casting.
* PM-1049 - BaseLoginDecryptionOptionsComp - Add ShareReplay for getAccountDecryptionOptions + context per PR feedback
* PM-1049 - LoginDecryptionOptionsComp - Completely back away from template async pipe reactive approach as it caused massively increased complexity for little gain. Instead, just focus on reactively pulling asynchronously retrieved data and setting page loading state simply. This just works and is so much less overhead. + Add comments re flows of the component to be done later
* PM-1049- Revert DevicesService implementation from smart data store cache service giant mess into simple, clean data passthrough service to avoid complexity and keep moving forward. YAGNI
Co-authored-by: Andreas Coroiu <andreas@andreascoroiu.com>
* PM-1049 - DeviceCryptoService - Add decryptUserKey method (WIP)
* PM-1049 - AccountDecryptionOptions - add get helpers for checking for trusted device / key connector decryption option existence.
* PM-1049 - SSO Login Strategy - added comments in setUserKey method for where we will probably be consuming device keys and determining if the device is trusted or not (i.e., if we can get a decrypted user sym key in memory)
* PM-1049 - DeviceCryptoSvc.decryptUserKey - Update method to properly use state service device key retrieval + add TODO to figure out what to do if user has previously had a device key and has cleared their local cache (which will result in the device being untrusted now)
* PM-1049 - SSO Login Strategy - add comment re future passkey login strategy support
* PM-2759 - SSO & 2FA components updated with v0 of navigation logic to send users to LoginDecryptionOptions
* PM-1049 - Account > AccountDecryptionOptions - can't create getter helper methods for determining if user has decryption options b/c of issues w/ account deserialization. Moving past b/c I can just easily check if the given options are not undefined.
* PM-2759 - Add TODOs for deprecation of id token response resetMasterPassword logic and replacement with use of accountDecryptionOptions
---------
Co-authored-by: Andreas Coroiu <andreas@andreascoroiu.com>
* revert sharing disk cache between contexts
* fix tests
* add better tests to crypto service
* add hack to get around duplicate instances of disk cache on browser
* prevent duplicate cache deletes in browser
* fix browser state service tests
* Feature/PM-1212 - TDE - Approve with master password flow (#5706)
* PM-1212 - StateSvc - Add getUserDeviceTrustChoice && setUserDeviceTrustChoice to persist user's choice in local storage in case of refresh on login approval screens (ex: lock)
* PM-1212 - DeviceCryptoSvc - Add getUserDeviceTrustChoice && setUserDeviceTrustChoice as state service is lower level service for caching
* PM-1212 - LoginDecryptionOptionsComp - Save result of rememberEmail checkbox into local storage via deviceCryptoService.setUserDeviceTrustChoice
* PM-1212 - Lock component - after user key is set, check if user chose to establish trust, and if they did, then establish trust and reset choice.
* PM-1212 - Update naming of methods per discussion with Jake + add comment explaining intended single use retrieval and need for resetting the value.
* DeviceCryptoService - Refactor - decryptUserKey --> decryptUserKeyWithDeviceKey to match crypto service refactor naming convention
* PM-1212 - Refactor State Service per PR feedback to store trustDeviceChoiceForDecryption on Account.settings b/c the temp setting is scoped to a user.
* PM-2759 - SSO & 2FA Navigation to TDE Comp - Needs more work - Found scenarios on web with 2FA in which the expected navigation doesn't work. Adding TODO to assist in fixing
* (1) Add Trust to DeviceCryptoService name
(2) Move DeviceTrustCryptoService under auth folder
* PM-1212 - Add tests for new getUserTrustDeviceChoiceForDecryption and setUserTrustDeviceChoiceForDecryption methods + TODOs for future tests.
* PM-1212- Renaming / moving DeviceTrustCryptoService broke all the things - fixed all the client builds.
* PM-1212- Copy doc comment to abstraction per PR feedback
* PM-1212 - BaseLoginDecryptionOptions comp - remove unncessary cast to form control as apparently reactive forms now properly derives types.
* [PM-1203] Replace MP confirmation with verification code (#5656)
* [PM-1203] feat: ask for OTP if user does not have MP
* [PM-1203] feat: add backwards compatibility for accounts/servers without decryption options
* [PM-1203] feat: move hasMasterPassword to user-verification.service
* [PM-1203] fix: remove duplicate implementation from crypto service
* [PM-1203] fix: cli build
* Tweak device trust crypto service implementation to match mobile late… (#5744)
* Tweak device trust crypto service implementation to match mobile latest which results in more single responsibility methods
* Update tests to match device trust crypto service implementation changes
* update comment about state service
* update pinLockType states and add jsdocs
* add missed pinLockType changes
* [PM-1033] Org invite user creation flow 1 (#5611)
* [PM-1033] feat: basic redirection to login initiated
* [PM-1033] feat: add ui for TDE enrollment
* [PM-1033] feat: implement auto-enroll
* [PM-1033] chore: add todo
* [PM-1033] feat: add support in browser
* [PM-1033] feat: add support for desktop
* [PM-1033] feat: improve key check hack to allow regular accounts
* [PM-1033] feat: init asymmetric account keys
* [PM-1033] chore: temporary fix bug from merge
* [PM-1033] feat: properly check if user can go ahead an auto-enroll
* [PM-1033] feat: simplify approval required
* [PM-1033] feat: rewrite using discrete states
* [PM-1033] fix: clean-up and fix merge artifacts
* [PM-1033] chore: clean up empty ng-container
* [PM-1033] fix: new user identification logic
* [PM-1033] feat: optimize data fetching
* [PM-1033] feat: split user creating and reset enrollment
* [PM-1033] fix: add missing loading false statement
* [PM-1033] fix: navigation logic in sso component
* [PM-1033] fix: add missing query param
* [PM-1033] chore: rename to `ExistingUserUntrustedDevice`
* PM-1033 - fix component templates to reference `ExistingUserUntrustedDevice` so clients can build
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
* remove extra partial key
* set master key on lock component
* rename key hash to password hash on crypto service
* fix cli
* rename enc user key setter in crypto service
* Adds Events & Human Readable Messages (#5746)
* [PM-1202] Hide the Master Password tab on Settings / Security (#5649)
* [PM-1203] feat: ask for OTP if user does not have MP
* [PM-1203] feat: get master password status from decryption options
* [PM-1203] feat: add backwards compatibility for accounts/servers without decryption options
* [PM-1203] feat: move hasMasterPassword to user-verification.service
* fix merge issues
* Change getUserTrustDeviceChoiceForDecryption / setUserTrustDeviceChoiceForDecryption to getShouldTrustDevice / setShouldTrustDevice (#5795)
* Auth/[PM-1260] - Existing User - Login with Trusted Device (Flow 2) (#5775)
* PM-1378 - Refactor - StateSvc.getDeviceKey() must actually convert JSON obj into instance of SymmetricCryptoKey
* TODO: BaseLoginDecryptionOptionsComponent - verify new user check doesn't improperly pick up key connector users
* PM-1260 - Add new encrypted keys to TrustedDeviceUserDecryptionOptionResponse
* PM-1260 - DeviceTrustCryptoSvc - decryptUserKeyWithDeviceKey: (1) update method to optionally accept deviceKey (2) Return null user key when no device key exists (3) decryption of user key now works in the happy path
* PM-1260 - LoginStrategy - SaveAcctInfo - Must persist device key on new account entity created from IdTokenResponse for TDE to work
* PM-1260 - SSO Login Strategy - setUserKey refactor - (1) Refactor existing logic into trySetUserKeyForKeyConnector + setUserKeyMasterKey call and (2) new trySetUserKeyWithDeviceKey method for TDE
* PM-1260 - Refactor DeviceTrustCryptoService.decryptUserKeyWithDeviceKey(...) - Add try catch around decryption attempts which removes device key (and trust) on decryption failure + warn.
* PM-1260 - Account - Add deviceKey to fromJSON
* TODO: add device key tests to account keys
* TODO: figure out state service issues with getDeviceKey or if they are an issue w/ the account deserialization as a whole
* PM-1260 - Add test suite for decryptUserKeyWithDeviceKey
* PM-1260 - Add interfaces for server responses for UserDecryptionOptions to make testing easier without having to use the dreaded any type.
* PM-1260 - SSOLoginStrategy - SetUserKey - Add check looking for key connector url on user decryption options + comment about future deprecation of tokenResponse.keyConnectorUrl
* PM-1260 - SSO Login Strategy Spec file - Add test suite for TDE set user key logic
* PM-1260 - BaseLoginStrategy - add test to verify device key persists on login
* PM-1260 - StateService - verified that settings persist properly post SSO and it's just device keys we must manually instantiate into SymmetricCryptoKeys
* PM-1260 - Remove comment about being unable to feature flag auth service / login strategy code due to circ deps as we don't need to worry about it b/c of the way we've written the new logic to be additive.
* PM-1260 - DevicesApiServiceImplementation - Update constructor to properly use abstraction for API service
* PM-1260 - Browser - AuthService - (1) Add new, required service factories for auth svc and (2) Update auth svc creation in main.background with new deps
* PM-1260 - CLI - Update AuthSvc deps
* PM-1260 - Address PR feedback to add clarity / match conventions
* PM-1260 - Resolving more minor PR feedback
* PM-1260 - DeviceTrustCryptoService - remove debug warn
* PM-1378 - DeviceTrustCryptoSvc - TrustDevice - Fix bug where we only partially encrypted the user key with the device public key b/c I incorrectly passed userKey.encKey (32 bytes) instead of userKey.key (64 bytes) to the rsaEncrypt function which lead to an encryption type mismatch when decrypting the user's private key with the 32 byte decrypted user key obtained after TDE login. (Updated happy path test to prevent this from happening again)
* PM-1260 - AccountKeys tests - add tests for deviceKey persistence and deserialization
* PM-1260 - DeviceTrustCryptoSvc Test - tweak verbiage per feedback
* PM-1260 - DeviceTrustCryptoSvc - Test verbiage tweak part 2
* Update apps/browser/src/background/service-factories/devices-api-service.factory.ts
per PR feedback
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* Defect - LockComp - After setting user key, must AWAIT retrieval of user's previous choice to have trusted the device or not. (#5804)
* [PM-2928] [PM-2929] [PM-2930] Fixes for: [PM-1203] Replace MP confirmation with verification code (#5798)
* [PM-2928] feat: hide change email if user doen't have MP
* [PM-2929] feat: hide KDF settings if user doesn't have MP
* [PM-2930] feat: remove MP copy
* Removed self-hosted check from TDE SSO config. (#5837)
* [PM-2998] Move Approving Device Check (#5822)
* Switch to retrieving approving device from token response
- Remove exist-by-types API call
- Define `HasApprovingDevices` on TDE options
* Update Naming
* Update Test
* Update Missing Names
* [PM-2908] feat: show account created toast (#5810)
* fix bug where we weren't passing MP on Restart to migrate method in lock
* fix: buffer null error (#5856)
* Auth/[pm-2759] - TDE - SSO and 2FA routing logic (#5829)
* PM-2759 - SsoComp - (1) Temp remove all TDE routing logic (2) Refactor existing navigation logic via new component utility function navigateViaCallbackOrRoute
* PM-2759 - SSO Component - Create test suite for logIn logic
* PM-2759 - SsoComp Tests - add disclaimer regarding testing private methods and props
* PM-1259 - SSO Comp - Refactor LogIn method to use functions for each navigation case for improved readability
* PM-1259 - SSO Comp Tests - Add tests for error case during login + test for new handleLoginError logic
* PM-2759 - SsoComp - Deprecate resetMasterPassword and replace with AccountDecryptionOptions logic + update tests
* PM-2759 - SsoComp + tests - Add trusted device encryption first draft handling which has login success and force password reset handling
* PM-2759 - Minor SsoComp comment and method name tweaks
* PM-2759 - BaseTwoFactorComp - (1) Comment out TDE stuff for now (2) Add test suite (3) Replace global window in base comp constructor with angular injection token for window which follows best practices and allows for mocking so the comp can be unit tested
* PM-2759 - Update child 2FA components to use angular injection token for window like base comp
* PM-2759 - TwoFactorComp - Finish testing all logic in doSubmit
* PM-2759 - TwoFactorComponent - Refactor DoSubmit method logic into multiple simple functions to make logic easier to follow
* PM-2759 - Add newtrustedDeviceOption.hasManageResetPasswordPermission property to match server changes
* PM-2759 - Flag AuthResult.resetMasterPassword property as deprecated
* PM-2759 - SSO comp - TDE routing logic - User without MP and ResetPassword permission must set a MP
* PM-2759 - Update Sso Comp tests to reflect additionally added TDE > MP set required logic (when user has no MP but they can reset other user passwords)
* PM-2759 - SsoComp - Add comment explaining the happy paths better for TDE success navigation
* PM-2759 - SsoComp - Refactor isTrustedDeviceEncEnabled logic into own method
* PM-2759 - SsoComp - As the 2FA comp passes the org id through to each route, going to standardize on doing so across the board for now to avoid any tricky scenarios down the line where it is needed and it's not present
* PM-2759 - SsoComp - Finish renaming orgIdFromState to orgIdentifier
* PM-2759 - SsoComp - update tests for forcePasswordReset flows now passing orgIdentifier as query param
* PM-2759 - SsoComp Tests - Export mockAcctDecryptionOpts permutations so we can share them across SsoComp and TwoFactorComp tests
* PM-2759 - Refactor 2FA comp post login redirect logic to match SSO component + add TDE logic
* PM-2759 - SsoComp - Refactor tests a bit for improved re-use
* PM-2759 - Sso Comp tests - can't export consts from a spec file or the other spec files that import them will re-execute the whole test suite as a nested test suite. TIL.
* PM-2759 - TwoFactorComp tests - All existing navigation scenarios + new TDE scenarios should now be tested.
* PM-2759 - Web - 2FA comp - Fix build error b/c of renamed base comp prop (identifier --> orgIdentifier)
* PM-2759 - Fix SsoLogin strategy tests b/c they were broken w/ the addition of the HasManageResetPasswordPermission prop to the TrustedDeviceOption interface
* PM-2759 - Web TwoFactorComp - goAfterLogIn method must be an arrow function to inherit the parent base component scope so that important things like angular services can be defined. Web 2FA flow does not work without this being an arrow func.
* PM-2759 - Fix typo
* PM-2759 - SsoComp and TwoFactorComp tests - move service and other mocks into the top level before each to better ensure no crossover between test states per PR feedback
* PM-2759 - SsoComp - add clarity by refactoring unclear comment
* PM-2759 - SsoComp - Per excellent PR feedback, refactor if else statements to guard statements for better readability / design
* PM-2759 - TwoFactorComp - Replace ifs with guard statements
* PM-2759 - TwoFactorComp - add clarity to comment per PR feedback
* PM-2759 - Replace use of jest.Mocked with MockProxy per PR feedback
* PM-2759 - Use unknown over any per PR feedback
* Bypass Master Password Reprompt if a user does not have a MP set (#5600)
* Add a check for a master password in PasswordRepromptService.enabled()
* Add tests for enabled()
* Update state service method call
* Use UserVerificationService to determine if a user has a master password
* rename password hash to master key hash
* fix cli build from key hash renaming
* [PM-1339] Allow Rotating Device Keys (#5806)
* Merge remote-tracking branch 'origin/feature/trusted-device-encryption' into Auth/pm-1339/rotate-device-keys
* Implement Rotation of Current Device Keys
- Detects if you are on a trusted device
- Will rotate your keys of only this device
- Allows you to still log in through SSO and decrypt your vault because the device is still trusted
* Address PR Feedback
* Move Files to Auth Ownership
* fix: getOrgKeys returning null
* [PM-3143] Trusted device encryption: Refactor reset enroll service (#5869)
* create new reset enrollment service
* refactor: login decryption options according to TODO
* feat: add tests
* PM-3143 - Add override to overriden methods
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
* generate a master key from master password if needed (#5870)
* [PM-3120] fix: device key not being saved properly (#5882)
* Auth/pm 1050/pm 1051/remaining tde approval flows (#5864)
* fix: remove `Unauth guard` from `/login-with-device`
* [PM-3101] Fix autofill items not working for users without a master password (#5885)
* Add service factories for user verification services
* Update autofill service to check for existence of master password for autofill
* Update the context menu to check for existence of master password for autofill
* context menu test fixes
* [PM-3210] fix: use back navigation (#5907)
* Removed buttons (#5935)
* PM-2759 - Fix broken backwards compatibility for authResult.resetMast… (#5940)
* PM-2759 - Fix broken backwards compatibility for authResult.resetMasterPassword
* PM-2759 - Update TODO with specific tech debt task + target release date
* TDE - State Svc - setDeviceKey should support setting null for future support of clearing device key. (#5942)
* Check if a user has a mp before showing kdf warning (#5929)
* [PM-1200] Unlock settings changes for accounts without master password - clients (#5894)
* [PM-1200] chore: add comment for jake
* [PM-1200] chore: rename to `vault-timeout`
* [PM-1200] feat: initial version of `getAvailableVaultTimeoutActions`
* [PM-1200] feat: implement `getAvailableVaultTimeoutActions`
* [PM-1200] feat: change helper text if only logout is available
* [PM-1200] feat: only show available timeout actions
* [PM-1200] fix: add new service factories and dependencies
* [PM-1200] fix: order of dependencies
`UserVerificationService` is needed by `VaultTimeoutSettingsService`
* [PM-1200] feat: add helper text if no lock method added
* [PM-1200] refactor: simplify prev/new values when changing timeout and action
* [PM-1200] feat: fetch timeout action from new observable
* [PM-1200] refactor: make `getAvailableVaultTimeoutActions` private
* [PM-1200] feat: add test cases for `vaultTimeoutAction$`
* [PM-1200] feat: implement new timeout action logic
* [PM-1200] feat: add dynamic lock options to browser
* [PM-1200] feat: enable/disable action select
* [PM-1200] feat: add support for biometrics
* [PM-1200] feat: add helper text and disable unavailable options
* [PM-1200] feat: update action on unlock method changes
* [PM-1200] feat: update browser to use async pipe
* [PM-1200] fix: element not updating
* [PM-1200] feat: hide masterPassOnRestart pin option
* [PM-1200] feat: hide change master password from browser settins
* [PM-1200] feat: hide change master password from app menu
* [PM-1200] feat: logout if lock is not supported
* [PM-1200] feat: auto logout from lock screen if unlocking is not supported
* [PM-1200] feat: remove lock button from web menus
* Revert "[PM-1200] fix: element not updating"
This reverts commit b27f425f48570d0d5dbc9dedb9797023fef64d8b.
* Revert "[PM-1200] feat: update browser to use async pipe"
This reverts commit 766c15bc3dbadcf7dcef3053b148e7874f8939ce.
* [PM-1200] chore: add comment regarding detectorRef
* [PM-1200] feat: remove lock now button from browser settings
* [PM-1200] feat: add `userId` to unlock settings related methods
* [PM-1200] feat: remove non-lockable accounts from menu
* [PM-1200] fix: cli not building
---------
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
* [PM-3215][PM-3289] Create MasterKey from Password If Needed (#5931)
* Create MasterKey from Password
- Check if the MasterKey is stored or not
- Create it if it's not
* Add getOrDeriveKey Helper
* Use Helper In More Places
* Changed settings menu to be enabled whenever the account is not locked. (#5965)
* [PM-3169] Login decryption options in extension popup (#5909)
* [PM-3169] refactor: lock guard and add new redirect guard
* [PM-3169] feat: implement fully rewritten routing
* [PM-3169] feat: close SSO window
* [PM-3169] feat: store sso org identifier in state
* [PM-3169] fix: tests
* [PM-3169] feat: get rid of unconventional patch method
* PM-3169 - SSO & 2FA Comps - Update naming of new callback to match existing pattern + add tests for callback logic execution.
* PM-3169 - Update LockGuard to have a special exception for allowing the TDE Login with MP flow
* PM-3169 - Per discussion w/ Jake and Justin, rename login-initiated guard to be tde decryption required guard (more named for functionality vs specific route)
* PM-3169 - Add some additional context to new redirect guard scenario
* PM-3169 - Per PR feedback, replace all callback types with Promise<void> as the return values are not being used.
* PM-3169 - StateSvc - Per PR feedback, update setUserSsoOrganizationIdentifier signature to explicitly use null instead of partial<string> which doesn't do anything
* PM-3169 - Replace onSuccessfulLogin type to compile
* PM-3169 - Add clarification comment for why we are not using a query param for persisting the org identifier
* PM-3169 - Per discussion with Justin, only use memory for SsoOrgId as we don't need to persist it beyond that; tested and it worked on all 3 clients for new user TDE creation
* PM-3169 - Add missing ssoIdentifierRequired translation to desktop and browser
* PM-3169 - After discussing with Justin again, we realized that memory doesn't work on desktop if user refreshes app or closes and re-opens it so must use disk.
* PM-3169 - Per PR feedback, remove hasEverHadUserKey logic as we can just leverage existing getUserKey method to check if we have a user key or not; tested all guards in browser and web with no issues
* PM-3169 - Per design discussion with Danielle, move account created toast after successful account creation vs on load of page.
---------
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
* [PM-3314] Fixed missing MP prompt on lock component (#5966)
* Updated lock component to handle no master password.
* Added a comment.
* Add Missing Slash (#5967)
* Fix AdminAuthRequest Serialization on Desktop (#5970)
- toJSON isn't being called by ElectronStorageService
- Force it's conversion to JSON earlier so it happens for all storage methods
* Fix issue where we were incorrectly calling setRememberEmailValues in the AdminAuthRequest state - no need to do this as the email is already saved to state. By calling this method, we would actually overwrite the already saved email with null as the user's choice to remember email wasn't persisted through SSO on the login service. (#5972)
* PM-3329 - Restore everHadUserKey logic from PM-3169 which I incorrectly removed in order to fix routing logic so that user can lock and land on the lock screen properly (#5979)
* PM-3210 - TDE - LoginWithDevice routing fix - Mirror PR #5950 in just simply providing a back action on click which works for all app generated scenarios (#5982)
* PM-3332 - TDE - SsoLoginStrategy - For existing admin auth reqs, must… (#5980)
* PM-3332 - TDE - SsoLoginStrategy - For existing admin auth reqs, must manually handle 404 error case to prevent app from hanging and clear the local state if the admin auth req in the DB has been purged; i.e., it should fail silently.
* Add TODO for SSO Login Strategy tests
* PM-3331 - TDE - Firefox - Browser extension - fix access denied error… (#5984)
* PM-3331 - TDE - Firefox - Browser extension - fix access denied error on popup load which was caused by the canAccessFeature guard failing to lookup the TDE feature flag as the server config was returning null even after a successful server call as only returned the value if the user was unauthenticated for some reason
* PM-3331 - After discussion with Andre, further refactor ConfigService logic to always return the latest information from the server so that requests for feature flag data will always get the most up to date information.
* PM-3345 - TDE - Desktop - Biometrics setting submenu tweak - do not s… (#5988)
* PM-3345 - TDE - Desktop - Biometrics setting submenu tweak - do not show require MP or PIN entry on restart if user doesn't have at least one of those options b/c otherwise user can get into a bad state where they cannot unlock
* PM-3345 - TDE - Desktop - Settings comp - if user turns off PIN and Biometric is on + require PIN on restart is enabled then must turn that setting off to prevent bad user state
* PM-3345 - Final tweak to logic
* [PM-2852] Final merge from Key Migration branch to TDE Feature Branch (#5977)
* [PM-3121] Added new copy with exclamation mark
* [PM 3219] Fix key migration locking up the Desktop app (#5990)
* Only check to migrate key on VaultTimeout startup
* Remove desktop specific check
* PM-3332 - LoginWithDevice - Add error handling logic around admin auth request retrieval similar to sso login strategy to prevent error state and allow re-creation of an admin auth request if it has been purged from the server for whatever reason. (#5991)
* PM-3355 - TDE - Browser JIT Account Creation - Browser create user logic still had logic for simply closing the extension tab but as we no longer open the login decryption options in a tab we needed to update the logic here to navigate the user directly onto the vault. (#5993)
* Add distinctUntilChanged to fix multiple value changes for biometrics firing (#5999)
* Add optional chaining to master key (#6007)
* PM-3369 - TDE - Persist user's choice to trust device to state when user ma… (#6000)
* PM-3369 - Persist user's choice to trust device to state when user makes choice + persist previous choices out of state
* PM-3369 - Must set trust device in state on load if it's never been set before
* PM-3369 - Refactor BaseLoginDecOptions to properly set trust device choice in state on load
* Update libs/angular/src/auth/components/base-login-decryption-options.component.ts
Co-authored-by: Jake Fink <jfink@bitwarden.com>
---------
Co-authored-by: Jake Fink <jfink@bitwarden.com>
* Updated email change component to getOrDeriveMasterKey (#6009)
* [PM-3330] Force Update to Lockable Accounts on PIN/Biometric Update (#6006)
* Add Listener For Events that Need To Redraw the Menu
* Send redrawMenu Message When Pin/Biometrics Updated
* DeviceTrustCryptoService - don't worry about checking if a device should establish trust or not if the user doesn't have trusted device encryption on (#6010)
* Auth / pm 3351 / TDE Login - Browser & Desktop vault sync issue fix (#6002)
* PM-3351 - TDE Login on desktop and browser via SSO comp with no 2FA should trigger sync like standard onSuccessfulLogin process used to so user lands on vault with data.
* PM-3351 - 2FA Comp - Refactor onSuccessfulLogin logic to only execute in the success path just like the SSO component + adding specific onSuccessfulLoginTde flow just like SSO comp. + removed unnecessary calls to loginService.clearValues(). Added browser & desktop definitions for onSuccessfulLoginTde which is just a fullSync kick off.
* TODO
* PM-3351 - remove await to restore code back to previous state without hang.
* PM-3351 - 2FA Comp - Don't await onSuccessfulLoginTde b/c it causes a hang
* PM-3351 - remove sso comp incorrect todo
* PM-3351 - SsoComp - don't await onSuccessfulLoginTde for browsers sake
* PM-3351 - SsoComp - remove awaits from onSuccessfulLoginTde and onSuccessfulLogin to avoid any hangs on desktop and browser
* PM-3351 - Convert onSuccessfulLoginTde to promise<void> as its return is not used + refactor all to be consistent and clearly communciate that the sync won't be awaited.
* PM-3351 - Convert onSuccessfulLogin to promise<void> and update all methods accordingly to more clearly indicate that the syncs and any other logic won't be awaited.
* [PM-3356] Fallback to OTP When MasterPassword Hasn't Been Used (#6017)
* Fallback to OTP When MasterPassword Hasn't Been Used
* Update Test and Rename Method
* Revert "DeviceTrustCryptoService - don't worry about checking if a device should establish trust or not if the user doesn't have trusted device encryption on (#6010)" (#6020)
This reverts commit 6ec22f9570.
* PM-3390 - TDE - Redraw desktop after user creation to update isLocked checks and get menu to be enabled properly (#6018)
* [PM-3383] Hide Change Password menu option for user with no MP (#6022)
* Hide Change Master Password menu item on desktop when a user doesn't have a master password.
* Renamed variable for consistency.
* Updated to base logic on account.
* Fixed menubar
* Resolve merge errors in crypto service spec
* Fixed autofill to use new method on userVerificationService (#6029)
* PM-3456 - TDE Admin Auth Req Flow - FF dead object issue - The foreground popup must retrieve the long lived background services for the new TDE services (the AuthRequestCryptoService service fixes this issue, but the DeviceTrustCryptoService should have been added to services.module as well) (#6037)
* skip auto key check when using biometrics on browser (#6041)
* Added comments for backward compatibility removal. (#6039)
* Updated warning message. (#6059)
* Tde pr feedback (#6051)
* move pin migration to the crypto service
* refactor config service logic
* refactor lock component load logic
* rename key connector methods
* add date to backwards compat todo
* update backwards compat todo
* don't specify defaults in redirectGuard
* nit
* add null & undefined check for userid before using the account
* fix ui tests
* add todo for tech debt
* add todo comment
* Fix storybook per PR feedback
* Desktop & Browser - lock comp - add optional chaining check for focusable input - user can just have biometric and not have a MP or a PIN so must support that.
* Main.background.ts - remove duplicate instantiations of the userVerificationApiService and userVerificationService which were added in two separate PRs
* Per PR feedback - (1) Browser app routing module - fix incorrect import for redirect guard (2) Created index.ts file for auth guards to simplify imports and updated imports
* Per PR feedback, (1) Update jslib-services.module to provide actual instance of VaultTimeoutService (2) Update init service to use concrete VaultTimeoutService vs abstraction.
Co-authored-by: Matt Gibson <git@mgibson.dev>
* Per PR feedback - update services module AuthRequestCryptoService and DeviceTrustCryptoService to use shorthand format.
* Per PR feedback, add devicesService to main background and update services module to ensure the popup leverages the background devicesService
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
Co-authored-by: Matt Gibson <git@mgibson.dev>
* Updated message keys for CrowdIn to pick them up. (#6066)
* TDE PR Feedback resolutions round 2 (#6068)
* Per PR feedback - main.background.ts - move userVerificationService and userVerificationApiService to correct location
* Per PR feedback - JS lib services + vault timeout service updates - (1) Correctly type callbacks based on injection tokens (2) Update vault timeout service to have proper types based on injection tokens
* Per PR Feedback - update web init service to inject actual VaultTimeoutService vs abstraction similar to what we did for desktop here: 55a797d4ff
* Per more feedback - revert incorrect changes to VaultTimeoutService based on existing injection token types for LOGOUT_CALLBACK and LOCKED_CALLBACK.. and instead update the injection token types themselves to match how they are being used.
* Per PR feedback - in browser main.background.ts, inject concrete VaultTimeoutService instead of abstraction so we don't have to cast it anymore (matching web & desktop)
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Jacob Fink <jfink@bitwarden.com>
Co-authored-by: Matt Gibson <MGibson1@users.noreply.github.com>
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
Co-authored-by: Andreas Coroiu <andreas@andreascoroiu.com>
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: André Bispo <abispo@bitwarden.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Vincent Salucci <vincesalucci21@gmail.com>
Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
Co-authored-by: Matt Gibson <git@mgibson.dev>
* Change altool to notarytool for desktop app notarizing
* Comment for testing
* Add team id
* Try to notarize with old method
* TEst vaslues
* Change after-sign notarization option
* CHange notarization in package
* Fix
* fix
* Maybe fix
* Use altool to upload
* Re enable if after testing
* Implement ProtonPass json importer
* Add protonpass-importer json type definition
* Fix alphabetical order in importer imports
* Add importer error message for encrypted protonpass imports
* Add i18n to protonpass importer
* Add protonpass (zip) importer
* Fix protonpass importer
* Add unit tests for protonpass importer
* Make protonpass importer not discard totp codes
* Merge protonpass json & zip importers
* Add protonpass creditcard import & fix note import
* Fix protonpass zip import not recognizing zip files on windows/chrome
* Make protonpass importer use vault types
* Make protonpass importer treat vaults as folders
* Make protonpass importer treat folders as collections for organizations
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Add types to protonpass test data
* Fix protonpass importer's moveFoldersToCollections
* Add tests for folders/collections
* Remove unecessary type cast in protonpass importer
* Remove unecessary type annotations in protonpass importer
* Add assertion for credit card cvv in protonpass importer
* Handle trashed items in protonpass importer
* Fix setting expiry month on credit cards
* Fix wrong folder-assignment
Only the first item of a "vault" was getting assigned to a folder
Extend unit tests to verify behaviour
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith@web.de>
* upon action outside of the extenstion requiring password reprompt, open new tab with reprompt
* allow popup view component to load with default action and send context menu actions on reprompt ciphers to password reprompt
* open password reprompt in new window instead of new tab
* update test and linting
* Apply suggestions from code review
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* add support for getTab in Manifest V2
* remove unneeded loadAction check
* allow auto-fill button in popout window
* add LoadAction type
* update code to use new BrowserPopoutWindowService
* access queryParams with subscribe
* do not dismiss window if no loadAction was specified
* rehide autofill option for non-single-action popout windows
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Update npm minor
* Do not update past prettier major version
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Add password history to json exports
Change callout to not mention missing password history any longer
* Added item meta dates to json exports
Added vault items creation-/revision-/deleted-dates to json exports
* Removed unnecessary promises
* Add bitwarden-json-export types
Define types
Use types in vault-export-service
Move existing password-protected type to export-types
* Use bitwarden-json-export types in bitwarden-json-importer
* Clean up passwordHistory if needed
* Define and use bitwarden-csv-export-types
* ignore TLD when checking for no banner display on a vault page
* do not show the notification banner on the configured bitwarden vault domain
* add types
* updated urls in premium web component and premium libs to use the cloudwebvaulturl
* moved premium.component in web from base settings to a new settings folder inside vault
* [PM-1796] The autofill keyboard shortcut does not prompt a user to unlock a locked extension within an incongito browsing session
* [PM-1796] Implementing fixes for how we handle focus redirection when logging a user in and attempting to autofill within the Firefox Workspaces addon
* [PM-1796] Removing the `openerTab` value from the createNewTab method within brwoserApi.ts
* [PM-1796] Removing async declaration from createNewTab
* [PM-1796] Removing unnecessary param from the call to openBitwardenExtrensionTab
* [PM-2147] [BEEEP] Open login form used to unlock extension in a separate window instead of a tab
* [PM-2147] [BEEEP] Open login form used to unlock extension in a separate window instead of a tab
* [PM-2147] [BEEEP] Modifying the position where the window opens and starting cleanup of comments within implementation
* [PM-2147] [BEEEP] Cleaning up comments within implementation
* [PM-2147] [BEEEP] Removing unnecessary method
* [PM-2147] [BEEEP] Removing package-lock changes
* [PM-2147] [BEEEP] Cleaning up implementation
* [PM-2147] [BEEEP] Reverting addition to the whitelist-capital-letters filter and updating named file
* [PM-2147] [BEEEP] Reverting addition to the whitelist-capital-letters filter and updating named file
* [PM-2147] [BEEEP] Adjusting implementation of notifications bar to trigger presentation on lock only when not adding a new vault item
* [PM-2147] [BEEEP] Adjusting implementation of how we open a login prompt window to ensure we are showing the address bar to the user
* [PM-2147] [BEEEP] Modifying the method closeBitwardenLoginPromptWindow to not check for a popup type window
* [PM-2147] [BEEEP] Fixing bug where notification bar does not close when unlocking vault
* [PM-2147] [BEEEP] Adjusting placement of method BrowserApi.getWindow to have it present closer to getTab
* [PM-2147] [BEEEP] Implementing a sepearate service BrowserPopoutService that will maintain the most recently created popouts and selectively remove those when re-opening the login prompt
* [PM-2147] [BEEEP] Modifying position of BrowserPopoutWindowService
* [PM-2147] [BEEEP] Modifying position of BrowserPopoutWindowService
* [PM-2147] [BEEEP] Modifying how we handle identifying a single use popout
* Migrate callouts to the CL ones
* Add folder/collection selection
* Use bitTypography as page header/title
* Migrate submit button to CL
* Migrate fileSelector and fileContents
* Add ability to import into an existing folder/collection
Extended import.service and abstraction to receive importTarget on import()
Pass selectedImportTarget to importService.import()
Wrote unit tests
* Added vault selector, folders/collections selection logic and component library to the import
* Revert changes to the already migrated CL fileSelector, fileContents and header/title
* Fix fileContents input and spacing to submit button
* Use id's instead of name for tghe targetSelector
* Remove unneeded empty line
* Fix import into existing folder/collection
Map ciphers with no folder/no collection to the new rootFolder when selected by the user
Modified and added unit tests
* Added CL to fileSelector and fileInput on vault import
* Added reactive forms and new selector logic to import vault
* Added new texts on Import Vault
* Corrected logic on enable targetSelector
* Removing target selector from being required
* Fixed imports after messing up a merge conflict
* Set No-Folder as default
* Show icons (folder/collection) on targetSelector
* Add icons to vaultSelector
* Set `My Vault` as default of the vaultSelector
* Updates labels based on feedback from design
* Set `My Vault` as default of the vaultSelector pt2
* Improvements to reactive forms on import.component
* Only disabling individual vault import on PersonalOwnership policy
* Use import destination instead of import location
* Add hint to folder/collection dropdown
* Removed required attribute as provided by formGroup
* Display no collection option same as no folder
* Show error on org import with unassigned items
Only admins can have unassigned items (items with no collection)
If these are present in a export/backup file, they should still be imported, to not break existing behaviour. This is limited to admins.
When a member of an org does not set a root collection (no collection option) and any items are unassigned an error message is shown and the import is aborted.
* Removed for-attribute from bit-labels
* Removed bitInput from bit-selects
* Updates to messages.json after PR feedback
* Removed name-attribute from bit-selects
* Removed unneeded variables
* Removed unneeded line break
* Migrate form to use bitSubmit
Rename old submit() to performImport()
Create submit arrow function calling performImport() (which can be overridden/called by org-import.component)
Remove #form and ngNativeValidate
Add bitSubmit and bitFormButton directives
Remove now unneeded loading variable
* Added await to super.performImport()
* Move form check into submit
* AC-1558 - Enable org import with remove individual vault policy
Hide the `My Vault` entry when policy is active
Always check if the policy applies and disable the formGroup if no vault-target is selectable
* [AC-1549] Import page design updates (#5933)
* Display select folder/collection in targetSelector
Filter the no-folder entry from the folderViews-observable
Add labels for the targetSelector placeholders
* Update importTargetHint and remove importTargetOrgHint
* Update language on importUnassignedItemsError
* Add help icon with link to the import documentation
---------
Co-authored-by: Andre Rosado <arosado@bitwarden.com>
* [AC-1423] Update organization subscription cloud page (#5614)
* [AC-1423] Add ProgressModule to shared.module.ts
* [AC-1423] Update cloud subscription page styles
- Remove bootstrap styles
- Use CL components where applicable
- Use CL typography directives
- Update heading levels to prepare for new SM sections
* [AC-1423] Add usePasswordManager boolean to organization domain
* [AC-1423] Introduce BitwardenProductType enum
* [AC-1423] Update Organization subscription line items
- Add product type prefix
- Indent addon services like additional storage and service accounts
- Show line items for free plans
* [AC-1423] Simply sort function
* [AC-1423] Remove header border
* [AC-1423] Make "Password Manager" the default fallback for product name
* [AC-1420] Add Secrets Manager subscribe component (#5617)
* [AC-1418] Add secrets manager manage subscription component (#5661)
* [AC-1423] Add minWidth input to bit-progress component
* [AC-1423] Add ProgressModule to shared.module.ts
* [AC-1423] Update cloud subscription page styles
- Remove bootstrap styles
- Use CL components where applicable
- Use CL typography directives
- Update heading levels to prepare for new SM sections
* [AC-1423] Add usePasswordManager boolean to organization domain
* [AC-1423] Introduce BitwardenProductType enum
* [AC-1423] Update Organization subscription line items
- Add product type prefix
- Indent addon services like additional storage and service accounts
- Show line items for free plans
* [AC-1423] Simply sort function
* [AC-1423] Remove header border
* [AC-1423] Remove redundant condition
* [AC-1423] Remove ineffective div
* [AC-1423] Make "Password Manager" the default fallback for product name
* Revert "[AC-1423] Add minWidth input to bit-progress component"
This reverts commit 95b2223a30.
* [AC-1423] Remove minWidth attribute
* [AC-1423] Switch to AddonProductType enum instead of boolean
* Revert "[AC-1423] Switch to AddonProductType enum instead of boolean"
This reverts commit 204f64b4e7.
* [AC-1423] Tweak sorting comment
* [AC-1418] Add initial SecretsManagerAdjustSubscription component
* [AC-1418] Add initial SM adjustment form
* [AC-1418] Adjust organization-subscription-update.request.ts to support both PM and SM
* [AC-1418] Rename service account fields in the options interface
* [AC-1418] Add api service call to update SM subscription
* [AC-1418] Cleanup form html
* [AC-1418] Add missing SM plan properties
* [AC-1418] Add SM subscription adjust form and logic to hide it
* [AC-1418] Add better docs to options interface
* [AC-1418] Fix conflicting required/optional labels for auto-scaling limits
* [AC-1418] Adjust labels and appearance to better match design
* [AC-1418] Use the SM plan for billing interval
* [AC-1418] Hide SM billing adjustment component behind feature flag
* [AC-1418] Update request model to match server
* [AC-1418] Cleanup BitwardenProductType after merge
Add to barrel file and update applicable imports.
* [AC-1418] Revert change to update PM subscription request model
* [AC-1418] Add new update SM subscription request model
* [AC-1418] Add new service method to update SM subscription
* [AC-1418] Use new model and service method
* [AC-1418] Cleanup SM subscription UI flags
* [AC-1418] Move SM adjust subscription component into SM billing module
* [AC-1418] Update SM seat count minimum to 1
* [AC-1418] Add missing currency codes
* [AC-1418] Simplify monthly price calculation
* [AC-1418] Increase PM adjust subscription form input width
* [AC-1418] Add check for null subscription
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* add the additional properties (#5743)
* Allow autoscale limits to be removed, update naming (#5781)
* [AC-1488] Store Organization.SmServiceAccounts as total not additional (#5784)
* Allow autoscale limits to be removed, update naming
* Display additional service accounts only
---------
Co-authored-by: Shane Melton <smelton@bitwarden.com>
* [AC-1473] SM beta ending callout (#5719)
* [AC-1423] Add minWidth input to bit-progress component
* [AC-1423] Add ProgressModule to shared.module.ts
* [AC-1423] Update cloud subscription page styles
- Remove bootstrap styles
- Use CL components where applicable
- Use CL typography directives
- Update heading levels to prepare for new SM sections
* [AC-1423] Add usePasswordManager boolean to organization domain
* [AC-1423] Introduce BitwardenProductType enum
* [AC-1423] Update Organization subscription line items
- Add product type prefix
- Indent addon services like additional storage and service accounts
- Show line items for free plans
* [AC-1423] Simply sort function
* [AC-1423] Remove header border
* [AC-1423] Remove redundant condition
* [AC-1423] Remove ineffective div
* [AC-1423] Make "Password Manager" the default fallback for product name
* Revert "[AC-1423] Add minWidth input to bit-progress component"
This reverts commit 95b2223a30.
* [AC-1423] Remove minWidth attribute
* [AC-1423] Switch to AddonProductType enum instead of boolean
* Revert "[AC-1423] Switch to AddonProductType enum instead of boolean"
This reverts commit 204f64b4e7.
* [AC-1423] Tweak sorting comment
* [AC-1418] Add initial SecretsManagerAdjustSubscription component
* [AC-1418] Add initial SM adjustment form
* [AC-1418] Adjust organization-subscription-update.request.ts to support both PM and SM
* [AC-1418] Rename service account fields in the options interface
* [AC-1418] Add api service call to update SM subscription
* [AC-1418] Cleanup form html
* [AC-1418] Add missing SM plan properties
* [AC-1418] Add SM subscription adjust form and logic to hide it
* [AC-1418] Add better docs to options interface
* [AC-1418] Fix conflicting required/optional labels for auto-scaling limits
* [AC-1418] Adjust labels and appearance to better match design
* [AC-1418] Use the SM plan for billing interval
* [AC-1418] Hide SM billing adjustment component behind feature flag
* [AC-1418] Update request model to match server
* [AC-1418] Cleanup BitwardenProductType after merge
Add to barrel file and update applicable imports.
* [AC-1418] Revert change to update PM subscription request model
* [AC-1418] Add new update SM subscription request model
* [AC-1418] Add new service method to update SM subscription
* [AC-1418] Use new model and service method
* [AC-1418] Cleanup SM subscription UI flags
* [AC-1418] Move SM adjust subscription component into SM billing module
* [AC-1418] Update SM seat count minimum to 1
* [AC-1418] Add missing currency codes
* [AC-1418] Simplify monthly price calculation
* add daysRemaining util function and unit tests
* [AC-1474] update organization models to include SM beta flag
* add SM beta callout to org subscription page
* update messages.json
* remove beta field from profile org response
* improve daysRemaining code clarity
* set SM beta in org model constructor
* tweak free SM row visibility
* refactor callout description
* Revert "remove beta field from profile org response"
This reverts commit 6c6249e1ec.
* fix dates
* [AC-1468]: hide adjust SM component if beta user
* add sm beta field to org sub response; remove everywhere else
* fix copy
---------
Co-authored-by: Shane Melton <smelton@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* [AC-1531] Fix SM subscribe component not showing in free org billing tab (#5848)
Also:
* Fix spacing in layout
* Send zero values for free plans
* Fix: properly delete enroll component
* remove the beta end message for free org (#5877)
* [AC-1458] Update local organization data after subscribing to Secrets Manager (#5888)
* [AC-1567] Fix max additional service account cost estimate (#5923)
* Fix max additional service account cost estimate
* Update i18n string ref
* Make i18n string keys consistent
* [AC-1461] Secrets Manager seat autoscaling cleanup (#5924)
* Remove unused return value from putOrganizationUserBulkEnableSecretsManager
* Fix service account limit validator (#5926)
* Updated Utils.daysRemaining method to calculate result using Math.floor and updated unit tests.
---------
Co-authored-by: Shane Melton <smelton@bitwarden.com>
Co-authored-by: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com>
Co-authored-by: Rui Tome <rtome@bitwarden.com>
Co-authored-by: Will Martin <contact@willmartian.com>
Co-authored-by: Álison Fernandes <vvolkgang@users.noreply.github.com>
Co-authored-by: Rui Tomé <108268980+r-tome@users.noreply.github.com>
* update desktop domains
* update web domains
* remove old translations from desktop
* update translations on browser
* change 'Region' to 'Server' on web
* change labels
* remove 'region' translation
* adjust alignmend so 'Self-hosted' label lines up with others
* adjust width and layout of trial-initiation header to accomodate longer text
* Disable API call if the expiration date is in the past
* Updates suggested by Thomas
* fixes
* suggested change from thomas
* removing unused service
* adding UUID under the secret name on secrets list
* thomas' suggested changes
* Adding small attribute to bitbutton
* Copying a secret will work on all pages now that show secrets
* Change everything to Uint8Array
related to https://github.com/jestjs/jest/issues/14379
* Work on failing type tests
* Revert changes to custom matcher setup
* Remove last BufferArrays from tests
* Fix custom matcher type errors in vscode
* Remove errant `.buffer` calls on Uint8Arrays
* Encryption Pair should serialize Array Buffer and Uint8Array
* Fix EncArrayBuffer encryption
---------
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* [AC-1344] Simplified DeleteMany and SoftDeleteMany request creation
* [AC-1344] Added method putRestoreManyCiphersAdmin to apiService
* [AC-1344] Added method restoreManyWithServer to cipherService
* [AC-1344] Rewrote if statements and changed the method return type
* Migrate Send list html to use Component Library and TailWind
* Added ComponentLibrary search module to Send
* Updated the No-Items on Send List to the new CL
* Added missing type on button at send.component.html
* Changed send to standalone component on web
* Moved no send icon to the consuming component
* removed unnecessary href on send component html
* Added sort to send list
* Removed SendComponent from loose-components module and added on app module
* Removed unnecessary click handler on send name button
* Created own file for no-send icon
* set icons folder as lowercase
* Corrected no-send.icon import
* Setting name as default sort on send list
* Added extra height to no-send.icon and removed classes from bit-no-items title container
* Removed the size small from options button
* Update webpack config to support proxying web socket connections for notifications
* turn off runtime error overlay
---------
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Change appSelectCopy to accept a dynamic input on what to copy
* Renamed select-copy directive to copy-text directive to be more accurate with the new behaviour
Signed-off-by: Andre Rosado <arosado@bitwarden.com>
* Moved CopyTextDirective on jslib module to be in alphabetic ordering
---------
Signed-off-by: Andre Rosado <arosado@bitwarden.com>
Co-authored-by: Andre Rosado <arosado@bitwarden.com>
* Add tailwind to desktop
* Add tailwind to browser
* Toy around with using CL in desktop
* Move custom css into the tailwind theme
* Revert component experiment
* Add components to browser tsconfig
* Fix build
* Add formGroup to base FolderAddEditComponent
* [web] use DialogService to open the modal
* [web] migrate FolderAddEditComponent use component library
* [desktop] use the formGroup in the template
* [browser] use the formGroup in the template
* [browser & desktop] remove disable on form invalid
* [web] Migrate to async actions
* [web] Strengthen typing for FolderAddEdit dialog
* Show form error instead of error toast
* Move browser folder add edit component to vault
* Remove extra template variables
* Remove inner form
* Remove inner form
* Update apps/web/src/app/vault/individual-vault/folder-add-edit.component.html
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
---------
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* [PM-2594] Added property "CloudVault" to EnvironmentServerConfigData and EnvironmentServerConfigResponse
* [PM-2594] Replaced hardcoded vault urls with value obtained from ConfigService
* [PM-2594] Renamed EnvironmentServerConfigResponse.cloudVault to cloudWebVault
* [PM-2594] Updated unit test with new property "cloudWebVault"
* [PM-2594] Added methods to get and set CloudWebVaultUrl on EnvironmentService. Configured ConfigurationService to set value based on cloudVaultRegion
* [PM-2594] Added JSDOC comments to methods getCloudWebVaultUrl and setCloudWebVaultUrl
* [PM-2594] Renamed EnvironmentServerConfigData.cloudVaultRegion to cloudRegion
* [PM-2594] Fixed unit test
* Migrate file-password-prompt to Dialog
* Fix issue with cancel/empty password returned
* Removed unneeded click handler to cancel dialog
* Added margin as requested by design
* Only apply margin to top of field
* Call submit when clicking on Import data
* Add form and and submit trigger
* add dialog; add service method; add menu button
* update service layer
* update service method; add i18n; add success and error logic
* remove comment
* remove SM Beta copy in member dialog
* refactor error logic to utilize bitAction
* update i18n key
* use i18n in menu option
* use i18n in footer
* rename component file
* rename enableAccess method; remove button; use userName pipe
* only show if SM flag is enabled
* [SM-830] fix: close checkboxes on dialog close
* Remove permission field from access token dialog; remove unused i18n key
* remove permissions column from access token table
* fix SA name placehold in access token dialog
* remove comment
* pass SA view into dialog upon opening
* Change 'New' button to dropdown with folders and collections
* Individual vault changes to support adding collections
* Add org selector to CollectionDialogComponent
* Implement CollectionService.upsert() in CollectionAdminService.save()
* Filter collections to ones that users can create collections in
* Filter organizations by ones the user can create a collection in
* CollectionDialog observable updates
* Remove CollectionService.upsert from CollectionAdminService and return collection on save from CollectionDialog.
* Filter out collections that the user does not have access to in collection dialog for Individual Vault.
* Remove add folder action from vault filter
* Remove add button from filters as it is no longer used
* Update comment to reference future ticket
* Change CollectionDialogResult from a class to an interface
* Remove extra call to loadOrg() in the case of opening the modal from the individual vault
* Use async pipe instead of subscribe for organizations
* Begin implementing TOTP autofill
* Add support for Cloudflare
* Fix linting errors
* Add GitHub support
* Automatically check for autocomplete="one-time-code"
* Fix TOTP-filling for Steam
* Make auto-fill on page load work for TOTP
* [PM-2609] Introduce logic to handle skipping autofill of TOTP on page load
* [PM-2609] Ensuring other forms of user initiated autofill can autofill the TOTP value for a vault item
---------
Co-authored-by: Daniel James Smith <djsmith@web.de>
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Added a validator when adding users to a free org
* Updated based on PR feedback
Removed parameters passing in the org to member-dialog.
Removed i18n service from validator
* Moved i18n responsibility back to the validator
Also added jsdoc comments
* Updated validator to be an injectable class
* Added back in jsdocs
* Moved the validator initialization to ngOnInit
* Updated validator to take error message a a param
* [AC-1144] Added new messages for warning removing/revoking user without master password
* [AC-1144] Added property 'hasMasterPassword' to OrganizationUserUserDetailsResponse and OrganizationUserView
* [AC-1144] Added user's name to 'No master password' warning
* [AC-1144] Added property 'hasMasterPassword' to ProviderUserResponse
* [AC-1144] Added alert to bulk "remove/revoke users" action when a selected user has no master password
* [AC-1144] Moved 'noMasterPasswordConfirmationDialog' method to BasePeopleComponent
* [AC-1144] Removed await from noMasterPasswordConfirmationDialog
* [AC-1144] Changed ApiService.getProviderUser to output ProviderUserUserDetailsResponse
* [AC-1144] Added warning on removing a provider user without master password
* [AC-1144] Added "No Master password" warning to provider users
* [AC-1144] Added "no master password" warning when removing/revoking user in modal view
* [AC-1144] Reverted changes made to ProviderUsers
* [AC-1144] Converted showNoMasterPasswordWarning() into a property
* [AC-1144] Fixed issue when opening invite member modal
* Add feature flag route guard and tests
* Add additional test for not showing error toast
* Strengthen error toast test with message check
* Cleanup leaking test state in platformService mock
* Negate if statement to reduce nesting
* Update return type to CanActivateFn
* Use null check instead of undefined
* Introduce interface to support different feature flag types
- Switch to observable pattern to access serverConfig$ subject
- Add catchError handler to allow navigation in case of unexpected exception
- Add additional tests
* Add additional test for missing feature flag
* Remove subscription to the serverConfig observable
Introduce type checking logic to determine the appropriately typed flag getter to use in configService
* [AC-1192] Create initial device approvals component and route
* [AC-1192] Introduce appIfFeature directive for conditionally rendering content based on feature flags
* [AC-1192] Add DeviceApprovals link in Settings navigation
* Remove align middle from bitCell directive
The bitRow directive supports alignment for the entire row and should be used instead
* [AC-1192] Add initial device approvals page template
* [AC-1192] Introduce fingerprint pipe
* [AC-1192] Create core organization module in bitwarden_license directory
* [AC-1192] Add support for new Devices icon to no items component
- Add new Devices svg
- Make icon property of bit-no-items an Input property
* [AC-1192] Introduce organization-auth-request.service.ts with related views/responses
* [AC-1192] Display pending requests on device approvals page
- Add support for loading spinner and no items component
* [AC-1192] Add method to bulk deny auth requests
* [AC-1192] Add functionality to deny requests from device approvals page
* [AC-1192] Add organizationUserId to pending-auth-request.view.ts
* [AC-1192] Add approvePendingRequest method to organization-auth-request.service.ts
* [AC-1192] Add logic to approve a device approval request
* [AC-1192] Change bitMenuItem directive into a component and implement ButtonLikeAbstraction
Update the bitMenuItem to be a component and implement the ButtonLikeAbstraction to support the bitAction directive.
* [AC-1192] Update menu items to use bitActions
* [AC-1192] Update device approvals description copy
* [AC-1192] Revert changes to bitMenuItem directive
* [AC-1192] Rework menus to use click handlers
- Wrap async actions to catch/log any exceptions, set an in-progress state, and refresh after completion
- Show a loading spinner in the header when an action is in progress
- Disable all menu items when an action is in progress
* [AC-1192] Move Devices icon into admin-console web directory
* [AC-1192] bit-no-items formatting
* [AC-1192] Update appIfFeature directive to hide content on error
* [AC-1192] Remove deprecated providedIn for OrganizationAuthRequestService
* [AC-1192] Rename key to encryptedUserKey to be more descriptive
* [AC-1192] Cleanup loading/spinner logic on data refresh
* [AC-1192] Set middle as the default bitRow.alignContent
* [AC-1192] Change default alignRowContent for table story
* [AC-1192] Rename userId to fingerprintMaterial to be more general
The fingerprint material is not always the userId so this name is more general
* [AC-1192] Remove redundant alignContent attribute
* [AC-1192] Move fingerprint pipe to platform
* [AC-1145] Update entity-events.component.ts to a CL dialog
- Add EntityEventsDialogParams
- Add static helper method to open the dialog with the dialog service
- Update existing usages of the entity-events.component.ts
* [AC-1145] Update entity-events.component.ts to use CL components and form actions
- Use bit-table and TableDataSource
- Update to reactive form for date filter
- Make dialog component standalone
- Use bitAction in-place of component promises
- Remove redundant try/catch that is now handled by bitAction and bitSubmit
- Add new try/catch on first load to catch any errors during initial dialog open
* [PM-2049] Make dataSource and filterFormGroup protected
* [PM-2049] Remove bit-form-field container
Remove the bit-form-field tags that wrapped the date inputs to avoid additional styling that is not applicable to inline form elements.
Add back the missing `-` that was removed by mistake.
* [PM-2049] Remove entity events dialog component selector
* Extract passwordStrength from passwordGenerationService
Extract passwordStrength from password-generation.service.ts
Create new password-strength.service.ts
Create new password-strength.service.abstraction.ts
Register new password-strength service
Fix usages in libs
* Fix usage in web
* Fix usage in desktop
* Fix usage in CLI
* Fix usage in browser
Move password-generation-factory to tools
* Fix tests
* Change dependency in jslib-services.module
* Defining the card brand according to its number
* Moving cardBrandByPatterns function to Card View
* Getting Card brand via cardBrandByPatterns function
* Changing cardBrandByPatterns method to static. See:
The reason being that someone wanting to use this outside of the onCardNumberChange would need to know to set the cc-number on the view-model before calling cardBrandByPatterns
* Defining the card brand according to its number on Desktop
* Defining the card brand according to its number on Web
* Added new forwarder (Forward Email <https://forwardemail.net>)
* fix: fixed Basic authorization header
* fix: fixed returned email value
* feat: added verbose message for end-users (e.g. "Not Found" vs. "Domain does not exist on your account." (automatically localized with i18n for user)
* fix: fixed Buffer.from to Utils.fromBufferToB64
* fix: fixed fromBufferToB64 to fromUtf8ToB64
* Remove try-catch to properly display api errors
---------
Co-authored-by: Daniel James Smith <djsmith@web.de>
If a collection name is long the name gets collapsed and
the user cannot see the full name until they enter this collection.
Adding the name to the title of the button displays the collection's
full name on hover as a tooltip in most browsers.
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Rename service-factory folder
* Move cryptographic service factories
* Move crypto models
* Move crypto services
* Move domain base class
* Platform code owners
* Move desktop log services
* Move log files
* Establish component library ownership
* Move background listeners
* Move background background
* Move localization to Platform
* Move browser alarms to Platform
* Move browser state to Platform
* Move CLI state to Platform
* Move Desktop native concerns to Platform
* Move flag and misc to Platform
* Lint fixes
* Move electron state to platform
* Move web state to Platform
* Move lib state to Platform
* Fix broken tests
* Rename interface to idiomatic TS
* `npm run prettier` 🤖
* Resolve review feedback
* Set platform as owners of web core and shared
* Expand moved services
* Fix test types
---------
Co-authored-by: Hinton <hinton@users.noreply.github.com>
* Add eudevtest config
* Add eudevtest to build
* Add release for eudevtest
* Change url
* Add eudevtest to the deploy non prod web
* Remove release-eudevtest-web workflow
* [AC-1104] Allow importBlockedByPolicy to be overridden
Adjust the import component so that the importBlockedByPolicy flag can be overridden by the org import component to always return false.
* [AC-1104] Allow disabledByPolicy to be overridden in export component
Adjust the export component so that the disabledByPolicy flag can be overridden by the org export component to always return false.
* [AC-1104] Cleanup logic that disables export form
* [AC-1104] Use observable subscription for assigning importBlockedByPolicy flag
* [AC-1264] Add optional success callback for import component
Use the optional callback in org-import.component.ts to clear the file and file contents when the user does not have access to the vault page
* [AC-1264] Re-order properties
* [AC-1104] Refactor import component to only use onSuccess callback that can be overridden
* Add trim validator to SM dialogs
* Swap to creating a generic component
* Swap to BitValidators.trimValidator
* Fix storybook
* update validator to auto trim whitespace
* update storybook copy
* fix copy
* update trim validator to run on submit
* add validator to project name in secret dialog; update secret name validation to on submit
---------
Co-authored-by: William Martin <contact@willmartian.com>
* PM-2403 - (1) Fix issue with Safari's tab extension not closing after successful SSO Login + 2FA continue which sidesteps the inconsistent MP invalid issue (due to invalid KDF config settings on reload) -- Firefox + sidebar, opera + sidebar, chrome, safari, and edge tested (2) Refactor reload logic to exempt the current window from the reload logic as we really only need to reload sidebars so they end up on the lock screen vs staying on the login screen and we are just going to close the open extension running in the tab. (3) Added comments
* PM-2403 - Per PR feedback, update reloadOpenWindows exemptCurrentHref filter to properly work
* PM-2403 - Per PR feedback, remove unneeded new method and replace with existing method closeBitwardenExtensionTab after testing on all browsers (apparently the chrome.tabs namespace is supported in all major browsers that we support now)
* PM-2403 - Refactor sync to be kicked off earlier in the process b/c to make sure that closing the window does not abort it
* PM1378 - (1) Create state service methods for securely storing a device symmetric key while following existing pattern of DuckDuckGoKey generation (2) Create makeDeviceKey method on crypto service which leverages the new state service methods for storing the device key.
* PM-1378 - Document CSPRNG types w/ comments explaining what they are and when they should be used.
* PM-1378 - TODO to add tests for makeDeviceKey method
* PM-1378 - Create Devices API service for creating and updating device encrypted master keys + move models according to latest code standards ( I think)
* PM-1378 - TODO clean up - DeviceResponse properly moved next to device api service abstraction per ADR 0013
* PM-1378 - CryptoService makeDeviceKey test written
* PM-1378 - Tweak crypto service makeDeviceKey test to leverage a describe for the function to better group related code.
* PM-1378 - Move known devices call out of API service and into new devices-api.service and update all references. All clients building.
* PM-1378 - Comment clean up
* PM-1378 - Refactor out master key naming as that is a reserved specific key generated from the MP key derivation process + use same property on request object as back end.
* PM-1378 - Missed a use of master key
* PM-1378 - More abstraction updates to remove master key.
* PM-1378 - Convert crypto service makeDeviceKey into getDeviceKey method to consolidate service logic based on PR feedback
* PM-1378- Updating makeDeviceKey --> getDeviceKey tests to match updated code
* PM-1378 - Current work on updating establish trusted device logic in light of new encryption mechanisms (introduction of a device asymmetric key pair in order to allow for key rotation while maintaining trusted devices)
* PM-1378 - (1) CryptoService.TrustDevice() naming refactors (2) Lots of test additions and tweaks for trustDevice()
* PM-1378 - Updated TrustedDeviceKeysRequest names to be consistent across the client side board.
* PM-1378 - Move trusted device crypto service methods out of crypto service into new DeviceCryptoService for better single responsibility design
* PM-1378 - (1) Add getDeviceByIdentifier endpoint to devices api as will need it later (2) Update TrustedDeviceKeysRequest and DeviceResponse models to match latest server side generic encrypted key names
* PM-1378 - PR feedback fix - use JSDOC comments and move from abstraction to implementation
* PM-1378 - Per PR feedback, makeDeviceKey should be private - updated tests with workaround.
* PM-1378- Per PR feedback, refactored deviceKey to use partialKey dict so we can associate userId with specific device keys.
* PM-1378 - Replace deviceId with deviceIdentifier per PR feedback
* PM-1378 - Remove unnecessary createTrustedDeviceKey methods
* PM-1378 - Update device crypto service to leverage updateTrustedDeviceKeys + update tests
* PM-1378 - Update trustDevice logic - (1) Use getEncKey to get user symmetric key as it's the correct method and (2) Attempt to retrieve the userSymKey earlier on and short circuit if it is not found.
* PM-1378 - Replace deviceId with deviceIdentifier because they are not the same thing
* PM-1378 - Per PR feedback, (1) on web/browser extension, store device key in local storage under account.keys existing structure (2) on desktop, store deviceKey in secure storage. (3) Exempt account.keys.deviceKey from being cleared on account reset
* PM-1378 - Desktop testing revealed that I forgot to add userId existence and options reconciliation checks back
* PM-1378 - Per discussion with Jake, create DeviceKey custom type which is really just an opaque<SymmetricCryptoKey> so we can more easily differentiate between key types.
* PM-1378 - Update symmetric-crypto-key.ts opaque DeviceKey to properly setup Opaque type.
* PM-1378 - Fix wrong return type for getDeviceKey on DeviceCryptoServiceAbstraction per PR feedback
* [AC-561] Rename DeleteOrganizationComponent to DeleteOrganizationDialogComponent
* [AC-561] Refactor delete organization dialog to use dialog service
- Use new bit-dialog
- Use reactive form and bitSubmit directives
- Add injected dialog params
- Switch to observable pattern
- Use dialog result instead of success event emitter
- Add helper method to open dialog using dialog service
- Update usage in families-for-enterprise-setup.component.ts and account.component.ts
* [AC-561] Create a UserVerification module
Move the user verification components into their own module that can be imported in multiple modules without conflict and allow tree shaking.
* [AC-561] Move delete-organization-dialog into its own folder
* [AC-561] Create delete organization dialog module
* [AC-561] Cleanup delete org dialog import statements
* [AC-561] Remove unused property
* [AC-561] Use organization observable from organizationService
* [AC-561] Use organization object instead of pull out storing the name individually
* [AC-561] Make the delete organization dialog a standalone component
- Remove the delete organization dialog module
- Move the dialog component up a directory
- Remove references to the deleted module
* [AC-561] Fix DialogServiceAbstraction references after merge
* [AC-561] Cleanup dialog loading spinner and cancel button
* [AC-561] Fix broken barrel file after merge
* [PM-169][PM-142][PM-191] Add Environments to Web and Desktop (#5294)
* [PM-1351] Add property to server-config.response. Change config to be able to fetch without being authed.
* [PM-1351] fetch every hour.
* [PM-1351] fetch on vault sync.
* [PM-1351] browser desktop fetch configs on sync complete.
* [PM-1351] Add methods to retrieve feature flags
* [PM-1351] Add enum to use as key to get values feature flag values
* [PM-1351] Remove debug code
* [PM-1351] Get flags when unauthed. Add enums as params. Hourly always fetch.
* [PM-1351] add check for authed user using auth service
* [PM-169] Web: add drop down to select environment
* [PM-169] Fix pop up menu margins. Add DisplayEuEnvironmentFlag.
* [PM-169] Change menu name.
* [PM-169] Add environment selector ts and html. Add declaration and import on login.module
* [PM-169] Add environment selector to desktop.
* [PM-169] Ignore lint error.
* [PM-169] add takeUntil to subscribes
* [PM-191] PR Fixes, code format
* [PM-168] Add Environments to extension login/registration (#5434)
Angular 15 introduced a breaking change that calls setDisabledState() whenever a CVA is added. This was re-enabling all the internal form group rows (even those that should have remained disabled).
* Remove reference cycle between ThemingService and the global window object
* Deregister messageListeners on a safari popup to avoid mem leaks
* Use pagehide event instead of unload
* [PM-1796] The autofill keyboard shortcut does not prompt a user to unlock a locked extension within an incongito browsing session
* [PM-1796] Implementing fixes for how we handle focus redirection when logging a user in and attempting to autofill within the Firefox Workspaces addon
* [PM-1796] Removing the `openerTab` value from the createNewTab method within brwoserApi.ts
* [PM-1796] Removing async declaration from createNewTab
* [PM-1796] Removing unnecessary param from the call to openBitwardenExtrensionTab
* [AC-358] Add selfHostSubscriptionExpiration property to organization-subscription.response.ts
* [AC-358] Update selfHost org subscription template
- Replace "Subscription" with "SubscriptionExpiration"
- Add question mark help link
- Add helper text for grace period
- Add support for graceful fallback in case of missing grace period in subscription response
* Update libs/common/src/billing/models/response/organization-subscription.response.ts
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-358] Remove unnecessary hypen
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-358] Introduce SelfHostedOrganizationSubscription view
- Encapsulate expiration/grace period logic in the new view object.
- Remove API response getters from the angular component
- Replace the API response object with the new view
* [AC-358] Clarify name for new expiration without grace period field
* [AC-358] Update constructor parameter name
* [AC-358] Simplify new selfhost subscription view
- Make expiration date properties public
- Remove obsolete expiration date getters
- Update the component to use new properties
- Add helper to component for determining if the subscription should be rendered as expired (red text)
* [AC-358] Rename isExpired to isExpiredAndOutsideGracePeriod to be more explicit
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [PM-2054] Updated Password Generator History to use Component Library
* [PM-2054] Corrected paddings
* [PM-2054] Added missing type to buttons
* [PM-2054] Removed unused imports and run prettier
* [PM-2054] Swap list by bit-table
* [PM-1389] don't include background page while reloading windows
* [PM-1389] update sidebar action apis
* [PM-1389] simplify return from getSidebarAction
* [PM-1380] fix device type call after browser api change
* [AC-1145] Add TDE feature flag
* [AC-1145] Update sso-config to use new member decryption type and remove keyConnectorEnabled
* [AC-1145] Add new TDE option to SSO config form and update to CL radio buttons
* [AC-1145] Update checkboxes to CL checkboxes
* [AC-1145] Fix messages.json warning
* [AC-1145] Update to new form async actions
* [AC-1145] Modify key connector option display logic to check for TDE feature flag
* [AC-1145] Remove obsolete app-checkbox component
* [AC-1145] Update TDE option description to refer to master password reset policy
* Checking if the user has selected access tokens to revoke, if not error message
* change messaging
* SM-664: Refactor revoke function and make the bwi-minus-circle red
---------
Co-authored-by: Colton Hurst <colton@coltonhurst.com>
* [PM-1176] Hovering over the `Learn More about auto-fill` link in the browser extension does not change the cursor
* [PM-1176] Modifying how the anchor element is formatted by prettier
* [PM-1176] Adding translation methodology to the aria-label "opens in a new window" value
* updated low ksf iterations warning
* Removed test implementation
* Removed unused translation and updated key
* Enabled low kdf on this branch for testing
* Removed duplicate showKdf initialiazation
* [PM-1700] Put KDF warning behind a LaunchDarkly Feature Flag (#5308)
* Added feature flag for low kdf iteration
* Added feature flag implementation to component
* Renamed feature flag to align with what is setup on LaunchDarkly
* Add autofill values for german websites
* Added commonly used fieldnames for German websites
---------
Co-authored-by: Daniel James Smith <djsmith@web.de>
* replicate the recordActivity function everytime a successful login occurs
* rejig the exisiting recordActivity function to use state service for lastActive value
* revert change and just use onblur instead
* Update apps/browser/src/background/main.background.ts
* insted of bluring, pipe up unlocked message to update lastActive
* remove pingpong, use subscribe to update last active
* Update apps/browser/src/popup/app.component.ts
Co-authored-by: Matt Gibson <fungibl@gmail.com>
* add missing imports
---------
Co-authored-by: Matt Gibson <fungibl@gmail.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Added button type to each button element related to the vault team
* Removed disable statement comment
* [PM-1399] Resolve eslint errors for button type - admin-console (#5275)
* Added button type to each button element related to the admin console team
* Added button type to each button element related to the billing team
* Removed disable statement comment
* [PM-1399] Resolve eslint errors for button type - tools (#5284)
* Added button type to each button element related to the tools team
* Added button type to each button element related to the tools team
* Added button type to each button element related to the auth team (#5295)
This PR introduces a generic `DialogService` which can be used by all the clients. This allows us to decouple dialogs from the `PlatformUtilsHelper`.
The `DialogService` provides a new method, `openSimpleDialog` which is the new interface for that type of dialogs.
This gives us 3 different implementations:
- Web: DialogService modern dialogs
- Browser: SweetAlert
- Desktop: Native electron based
* [PM-233] "No Items" graphic is overlapping on several screens
* [PM-233] Removing setting search input as readonly/disabled when "Send" functionality is disabled
Upgrade Electron to version 24, node to 18 and npm to 9. Electron changed to using node 18 in 23, with node 18 using npm 9 as default.
There doesn't seem to be any breaking changes except the deprecation of Windows 7, 8.1, and Server 2012. A somewhat undocumented breaking change was that elements in the title bar are now draggable which broke the account switching selector. Resolved by adding a no-drag css rule.
- electronjs.org/blog/electron-22-0
- electronjs.org/blog/electron-23-0
- electronjs.org/blog/electron-24-0
* Add disableFavicon$ to stateService
* Change IconComponent's ChangeDetectionStrategy and use disableFavicon$ observable
* Only get first result from disableFavicon observable
* Move disabledFavicon$ to SettingsService
* Update usage of disableFavicon to use SettingsService
* Remove getting and setting of disabledFavicon on login
* Settings service observable adjustments
* Fix for popup initially having a null value for the disableFavicon setting in settingsService
* Move disabledFavicon$ subscription to ngOnInit
* feat: experiment with observables
* Remove SettingsService from browser app component
* Fix storybook changes
* Update apps/web/src/app/vault/components/vault-items/vault-items.stories.ts
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
* Fix mock function signature
---------
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
* [PM-1351] Add property to server-config.response. Change config to be able to fetch without being authed.
* [PM-1351] fetch every hour.
* [PM-1351] fetch on vault sync.
* [PM-1351] browser desktop fetch configs on sync complete.
* [PM-1351] Add methods to retrieve feature flags
* [PM-1351] Add enum to use as key to get values feature flag values
* [PM-1351] Remove debug code
* [PM-1351] Get flags when unauthed. Add enums as params. Hourly always fetch.
* [PM-1351] add check for authed user using auth service
* [PM-1351] remove unnecessary timer on account unlock
* [PM-687] refactor observable in base accept component
* [PM-687] add emergency access invitation to global state
* [PM-687] save invite to state and check on login
* [PM-687] move emergency access check above queryParams observable
* Logic for calculating if we should apply height fix for safari
* Revert safari height fix for safari >= 16.1
* Deprecate static isBrowser funcions, using them directly is incorrect
* Changes based on feedback
* Update CSS to use & selector
---------
Co-authored-by: Hinton <hinton@users.noreply.github.com>
Locking all non-active accounts prior to active lead to process reload
issues.
Remove unnecessary routing
Prefer Record keys to deep Account object value
Await promises
* [AC-1340] Calling Cipher DeleteAdmin endpoints when user has canEditAnyCollection permission
* [AC-1340] Fixed CLI and Desktop builds
* [AC-1340] Changed CipherService delete methods parameter 'orgAdmin' to 'asAdmin' and to nullable
* [AC-1340] Changed variable names from 'orgAdmin' to 'asAdmin'
* [AC-1340] Reverted change on DeleteCommand
* PM-1887 - Fix Account Creation Terms of service checkbox not clickable in Safari. Reworked check for breaches and terms of service checkboxes to be implemented with Tailwind instead of a mix of Tailwind & Bootstrap as well. Confirmed checkboxes still work in Edge, Firefiox, and Chrome as well as Safari now.
* PM-1887 - Add for="<id>" attributes to bit-labels for accessibility.
* PM-1887 - Make ID consistent w/ dashes instead of underlines and dashes.
* Create and register new libs/exporter
Create package.json
Create tsconfig
Create jest.config
Extend shared and root tsconfig and jest.configs
Register with eslint
* Migrate exportService to libs/exporter
Move exportService (abstraction and impl) into libs/exporter
Refactored exportService to be split into vault-export and event-export
Created barrel-files for both exports
Moved export.service.spec.ts into vault-export
Created an export-helper, which helps build the filename (extract method refactor from ExportService)
* Move components in libs/angular into tools-subfolder
Moved components
Updated imports in jslib-services.module and jslib.module
* Register libs/exporter with browser and fix imports
Move export.component into tools-subfolder
* Register libs/exporter with cli and fix imports
Move export.command into tools-subfolder
* Register libs/exporter with desktop and fix imports
Move export.component into tools-subfolder
* Move export models to libs/exporter
* Update web imports
* Update package-lock.json
* Move export models back as it would create circular dependency
Reponse models in common rely on export models which are in libs/exporter, which relies on common
* Fix up web for event-export
* Update CODEOWNERS
* Add export-models to team-tools-dev
* Simplify domain import
* Moving EventExport into web
* [AC-779] fix: policy link
* [AC-779] fix: search string set by url not showing in input field
* [AC-779] fix: navigation to cipher events
* [AC-779] fix: collection link
* [AC-779] chore: clean up old components
* [AC-779] chore: remove some copy pasta
* Fail on unsupported export format
Issue #5194: https://github.com/bitwarden/clients/issues/5194
The cli previously would take any value for the export format and
default to unencrypted json if it wasn't a supported format. This
behavior is a little dangerous because if for instance typed
"json_encrypted" instead of "encrypted_json" and naively saved the file
you might be surprised to learn the payload was not actually encrypted
even though the command completed successfully.
This change adds a guard clause when converting the string value passed
in via `--format` into the type `ExportFormat` to ensure that the format
provided is one of the supported types.
* Move isSupportedExportFormat to private method
* [EC-1070] Introduce flag for enforcing master password policy on login
* [EC-1070] Update master password policy form
Add the ability to toggle enforceOnLogin flag in web
* [EC-1070] Add API method to retrieve all policies for the current user
* [EC-1070] Refactor forcePasswordReset in state service to support more options
- Use an options class to provide a reason and optional organization id
- Use the OnDiskMemory storage location so the option persists between the same auth session
* [AC-1070] Retrieve single master password policy from identity token response
Additionally, store the policy in the login strategy for future use
* [EC-1070] Introduce master password evaluation in the password login strategy
- If a master password policy is returned from the identity result, evaluate the password.
- If the password does not meet the requirements, save the forcePasswordReset options
- Add support for 2FA by storing the results of the password evaluation on the login strategy instance
- Add unit tests to password login strategy
* [AC-1070] Modify admin password reset component to support update master password on login
- Modify the warning message to depend on the reason
- Use the forcePasswordResetOptions in the update temp password component
* [EC-1070] Require current master password when updating weak mp on login
- Inject user verification service to verify the user
- Conditionally show the current master password field only when updating a weak mp. Admin reset does not require the current master password.
* [EC-1070] Implement password policy check during vault unlock
Checking the master password during unlock is the only applicable place to enforce the master password policy check for SSO users.
* [EC-1070] CLI - Add ability to load MP policies on login
Inject policyApi and organization services into the login command
* [EC-1070] CLI - Refactor update temp password logic to support updating weak passwords
- Introduce new shared method for collecting a valid and confirmed master password from the CLI and generating a new encryption key
- Add separate methods for updating temp passwords and weak passwords.
- Utilize those methods during login flow if not using an API key
* [EC-1070] Add route guard to force password reset when required
* [AC-1070] Use master password policy from verify password response in lock component
* [EC-1070] Update labels in update password component
* [AC-1070] Fix policy service tests
* [AC-1070] CLI - Force sync before any password reset flow
Move up the call to sync the vault before attempting to collect a new master password. Ensures the master password policies are available.
* [AC-1070] Remove unused getAllPolicies method from policy api service
* [AC-1070] Fix missing enforceOnLogin copy in policy service
* [AC-1070] Include current master password on desktop/browser update password page templates
* [AC-1070] Check for forced password reset on account switch in Desktop
* [AC-1070] Rename WeakMasterPasswordOnLogin to WeakMasterPassword
* [AC-1070] Update AuthServiceInitOptions
* [AC-1070] Add None force reset password reason
* [AC-1070] Remove redundant ForcePasswordResetOptions class and replace with ForcePasswordResetReason enum
* [AC-1070] Rename ForceResetPasswordReason file
* [AC-1070] Simplify conditional
* [AC-1070] Refactor logic that saves password reset flag
* [AC-1070] Remove redundant constructors
* [AC-1070] Remove unnecessary state service call
* [AC-1070] Update master password policy component
- Use typed reactive form
- Use CL form components
- Remove bootstrap
- Update error component to support min/max
- Use Utils.minimumPasswordLength value for min value form validation
* [AC-1070] Cleanup leftover html comment
* [AC-1070] Remove overridden default values from MasterPasswordPolicyResponse
* [AC-1070] Hide current master password input in browser for admin password reset
* [AC-1070] Remove clientside user verification
* [AC-1070] Update temp password web component to use CL
- Use CL for form inputs in the Web component template
- Remove most of the bootstrap classes in the Web component template
- Use userVerificationService to build the password request
- Remove redundant current master password null check
* [AC-1070] Replace repeated user inputs email parsing helpers
- Update passwordStrength() method to accept an optional email argument that will be parsed into separate user inputs for use with zxcvbn
- Remove all other repeated getUserInput helper methods that parsed user emails and use the new passwordStrength signature
* [AC-1070] Fix broken login command after forcePasswordReset enum refactor
* [AC-1070] Reduce side effects in base login strategy
- Remove masterPasswordPolicy property from base login.strategy.ts
- Include an IdentityResponse in base startLogin() in addition to AuthResult
- Use the new IdentityResponse to parse the master password policy info only in the PasswordLoginStrategy
* [AC-1070] Cleanup password login strategy tests
* [AC-1070] Remove unused field
* [AC-1070] Strongly type postAccountVerifyPassword API service method
- Remove redundant verify master password response
- Use MasterPasswordPolicyResponse instead
* [AC-1070] Use ForceResetPassword.None during account switch check
* [AC-1070] Fix check for forcePasswordReset reason after addition of None
* [AC-1070] Redirect a user home if on the update temp password page without a reason
* [AC-1070] Use bit-select and bit-option
* [AC-1070] Reduce explicit form control definitions for readability
* [AC-1070] Import SelectModule in Shared web module
* [AC-1070] Add check for missing 'at' symbol
* [AC-1070] Remove redundant unpacking and null coalescing
* [AC-1070] Update passwordStrength signature and add jsdocs
* [AC-1070] Remove variable abbreviation
* [AC-1070] Restore Id attributes on form inputs
* [AC-1070] Clarify input value min/max error messages
* [AC-1070] Add input min/max value example to storybook
* [AC-1070] Add missing spinner to update temp password form
* [AC-1070] Add missing ids to form elements
* [AC-1070] Remove duplicate force sync and update comment
* [AC-1070] Switch backticks to quotation marks
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-431] Add new organization invite process (#4841)
* [AC-431] Added properties 'key' and 'keys' to OrganizationUserAcceptRequest
* [AC-431] On organization accept added check for 'initOrganization' flag and send encrypt keys if true
* [AC-431] Reverted changes on AcceptOrganizationComponent and OrganizationUserAcceptRequest
* [AC-431] Created OrganizationUserAcceptInitRequest
* [AC-431] Added method postOrganizationUserAcceptInit to OrganizationUserService
* [AC-431] Created AcceptInitOrganizationComponent and added routing config. Added 'inviteInitAcceptedDesc' to messages
* [AC-431] Remove blank line
* [AC-431] Remove requirement for logging in again
* [AC-431] Removed accept-init-organization.component.html
* Update libs/common/src/abstractions/organization-user/organization-user.service.ts
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-431] Sending collection name when initializing an org
* [AC-431] Deleted component accept-init-organization and incorporated logic into accept-organization
* Update libs/common/src/abstractions/organization-user/organization-user.service.ts
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-431] Returning promise chains
* [AC-431] Moved ReAuth check to org accept only
* [AC-431] Fixed import issues
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-434] Hide billing screen for reseller clients (#4955)
* [AC-434] Retrieving ProviderType for each Org
* [AC-434] Hide subscription details if user cannot manage billing
* [AC-434] Renamed providerType to provider-type
* [AC-434] Reverted change that showed Billing History and Payment Methods tabs
* [AC-434] Hiding Secrets Manager enroll
* [AC-434] Renamed Billing access variables to be more readable
* Apply suggestions from code review
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-434] Reduce duplication in permission code
* [AC-434] npm prettier
* [AC-434] Changed selfhost subscription permission
* [AC-434] Added canEditSubscription check for change plan buttons
* [AC-434] Removed message displaying provider name in subscription
* [AC-434] canEditSubscription logic depends on canViewSubscription
* [AC-434] Hiding next charge value for users without billing edit permission
* [AC-434] Changed canViewSubscription and canEditSubscription to be clearer
* [AC-434] Altered BillingSubscriptionItemResponse.amount and BillingSubscriptionUpcomingInvoiceResponse.amount to nullable
* [AC-434] Reverted change on BillingSubscriptionItemResponse.amount
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Updated IsPaidOrgGuard reference from org.CanManageBilling to canEditSubscription
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* SG-1026 - Documenting / slight refactoring of notification-bar - WIP
* SG-1026 - More documentation WIP
* SG-1026 - Continued documentation of notification bar + testing theories for specific sites as part of research to identify areas for possible improvement + added types where appropriate.
* SG-1026 - getSubmitButton docs
* SG-1026 - Autofill Service tweak - On account creation (ex: talkshoe.com), even if the pageDetails contained a valid form to watch, the loadPasswordFields method parameter for fillNewPassword being false for inputs with autoCompleteType of "new-password" would cause the account creation form to not be watched (null form data returned to notification bar). Setting this to true will help capture more account creations in the above specified scenario.
* SG-1026 - Additional documentation / comment clean up
* SG-1026 - Remove unused pageDetails array
* SG-1026 - These changes address form detection issues for the password change form on talkshoe.com: (1) Update autofill.service getFormsWithPasswordFields(...) method to group autofill.js found password type fields under a single form in a very specific scenario where the most likely case is that it is a password change form with poorly designed mark up in a SPA (2) Notification bar - when listening to a form, we must use both the loginButtonNames and the changePasswordButton names as we don't know what type of form we are listening to (3) Notification bar - on page change, we must empty out the watched forms array to prevent forms w/ the same opId being added to the array on SPA url change (4) Notification bar - getSubmitButton update - If we cannot find a submit button within a form, try going up one level to the parent element and searching again (+ added save to changePasswordButtonNames). (5) Notification bar - when listening to a form with a submit button, we can attach the formOpId to the button so we can only have DOM traversal in one location and retrieve the form off the button later on in the form submission logic. For now, I'm just adding it as a fallback, but it could be the primary approach with more testing.
* SG-1026 - On first load of the notification-bar content script, we should start observing the DOM immediately so we properly catch rendered forms instead of waiting for a second. This was especially prevelant on refreshing the password change form page on talkshoe.com.
* SG-1026 - Due to the previous, timeout based nature of the calls to collectPageDetailsIfNeeded (now handlePageChange), the mutation observer could get setup late and miss forms loading (ex: refreshing a password change page on talkshoe.com). DOM observation is now setup as fast as possible on page load for SPAs/Non SPAs and on change for SPAs by having the mutation observer itself detect page change and deterministically calling handlePageChange(). However, with these changes, page detail collection still only occurs after a minimum of ~1 second whether or not it was triggered from the mutation observer detecting forms being injected onto the page or the scheduleHandlePageChange running (which has a theoretical maximum time to page detail collection of ~1.999 seconds but this does require the mutation observer to miss the page change in a SPA which shouldn't happen).
* SG-1026 - Identified issue with current form retrieval step in autofill service which prevents multi-step account creation forms from being returned to the notification-bar content script from the notification.background.ts script.
* SG-1026 - Add logic to formSubmitted to try and successfully process multi-step login form (email then password on https://login.live.com/login.srf) with next button that gets swapped out for a true submit button in order to prompt for saving user credentials if not in Bitwarden. This logic works *sometimes* as the submit button page change often stops the submit button event listeners from being able to fire and send the login to the background script. However, that is a separate issue to be solved, and sometimes is better than never. This type of logic might be useful in solving the multi-step account creation form on https://signup.live.com/signup but that will require additional changes to the autofill service which current intercepts forms without passwords and prevents them from reaching the notification-bar.ts content script.
* SG-1026 - Add note explaining the persistence of the content script
* SG-1026 - Update stack overflow link to improve clarity.
---------
Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
* [EC-974] feat: scaffold new vault-items component
* [EC-974] feat: add basic mocked data to story
* [EC-974] feat: add initial table version
* [EC-974] chore: split rows into separate components
* [EC-974] chore: rename item row to cipher row
* [EC-974] feat: create common vault item interface
* [EC-974] feat: use cdk virtual scrolling
* [EC-974] fix: tweak `itemSize`
* [EC-974] chore: move vault-items component to app/vault folder
* [EC-974] feat: initial support for extra column
* [EC-974] feat: start adding org badge
Having issues with modules import
* [EC-974] feat: add working owner column on collections row
* [EC-974] feat: add owner to ciphers
* [EC-974] fix: org name badge bugs when reused
* [EC-974] feat: fix and translate columns
* [EC-974] feat: allow collections to be non-editable
* [EC-974] feat: use data source
* [EC-974] fix: remove profile name from vault items
* [EC-974] feat: add events
* [EC-974] feat: add support for copy event
* [EC-974] feat: add support for collections column
* [EC-974] feat: add support for group badges
* [EC-974] chore: rename for consistency
* [EC-974] feat: change story to use template
* [EC-974] feat: add support for launching
* [EC-974] feat: add support for attachements
* [EC-974] feat: add stories for all use-cases
* [EC-974] feat: add support for cloning
* [EC-974] feat: add support for moving to organization
* [EC-974] feat: add support for editing cipher collections
* [EC-974] feat: add support for event logs
* [EC-974] feat: add support for trash/delete/restore
* [EC-974] feat: add support for editing collections
* [EC-974] feat: add support for access and delete collections
* [EC-974] feat: don't show menu if it's empty
* [EC-974] feat: initial buggy implementation of selection
* [EC-974] feat: implement bulk move
* [EC-974] feat: add support for bulk moving to org
* [EC-974] feat: add support for bulk restore
* [EC-974] feat: add support for bulk delete
* [EC-974] feat: add ability to disable the table
* [EC-974] feat: create new filter function based on routed model
* [EC-974] wip: start replacing vault items component
* [EC-974] feat: add support for fetching ciphers
* [EC-974] feat: hide trash by default
* [EC-974] feat: add support for the rest of the data
* [EC-974] feat: implement organization filtering using org badge
* [EC-974] feat: fix navigation to "my vault"
* [EC-974] feat: don't show bulk move options when filtering on org items
* [EC-974] feat: prepare for disabling table
* [EC-974] fix: add missing router link to collections
* [EC-974] feat: connect all outputs
* [EC-974] fix: list not properly refreshing after delete
* [EC-974] feat: limit selection to top 500 items
* [EC-974] feat: implement refresh tracker
* [EC-974] feat: use refresh tracker to disable vault items
* [EC-974] feat: add empty list message
* [AC-974] feat: add initial load with spinner and fix empty -> show list bug
* [EC-974] feat: replace action promise with simple loading boolean
* [EC-974] feat: refactor individual vault header
* [EC-974] feat: cache and make observables long lived
* [EC-974] feat: implement searching
* [EC-974] feat: add support for showing collections
* [EC-974] feat: add ciphers to org vault list
* [EC-974] feat: show group column
* [EC-974] feat: tweak settings for org vault
* [EC-974] feat: implement search using query params
* [EC-974] feat: add support for events that are common with individual vault
* [EC-974] feat: add support for all events
* [EC-974] feat: add support for empty list message and no permission message
* [EC-974] feat: always show table
* [EC-974] feat: fix layout issues due to incorrect row height
* [EC-974] feat: disable list if empty
* [EC-974] feat: improve sync handling
* [EC-974] feat: improve initial loading sequence
* [EC-974] feat: improve initial load sequence in org vault
* [EC-974] refactor: simplify and optimize data fetching
* [EC-974] feat: use observables from org service
* [EC-974] feat: refactor org vault header
* [EC-974] fix: data not refreshing properly
* [EC-974] fix: avoid collection double fetching
* [EC-974] chore: clean up refresh tracker
* [EC-974] chore: clean up old vault-items components
* [EC-974] chore: clean up old code in vault component
* [EC-974] fix: reduce rows in story
The story ends up too big for chromatic.
* [EC-974] docs: tweak and typo fixes of asyncToObservable docs comment
* [EC-974] fix: `attachements` typo
* [EC-974] chore: remove review question comment
* [EC-974] chore: remove unused `securityCode` if statement
* [EC-974] fix: use `takeUntill` for legacy dialogs
* [EC-974] fix: use CollectionDialogTabType instead of custom strings
* [EC-974] fix: copy implementation
* [EC-974] fix: use `useTotp` to check for premium features
* [EC-974] fix: use `tw-sr-only`
* [EC-974] chore: remove unecessary eslint disable
* [EC-974] fix: clarify vault item event naming
* [EC-974] fix: remove `new` from `app-new-vault-items`
* [EC-974] fix: collection row not disabled during loading
* [EC-974] chore: simplify router links without path changes
* [EC-974] feat: invert filter function to get rid of `cipherPassesFilter`
* [EC-974] fix: move `NestingDelimiter` to collection view
Nesting is currently only a presentational construct, and the concept does not exist in our domain.
* [EC-974] fix: org vault header not updating when switching org
* [EC-974] fix: table sizing jumping around
* [EC-974] fix: list not refreshing after restoring item
* [EC-974] fix: re-add missing unassigned collection
* [EC-974] fix don't show new item button in unassigned collection
* [EC-974] fix: navigations always leading to individual vault
* [EC-974] fix: remove checkbox when collections are not editable
* [EC-974] fix: null reference blocking collections from refreshing after delete
* [EC-974] fix: don't show checbox for collections that user does not have permissions to delete
* [EC-974] fix: navigate away from deleted folder
* [EC-974] chore: clean up un-used output
* [EC-974] fix: org badge changing color randomly
* [EC-974] fix: lint issues after merge
* [EC-974] fix: lower amount of ciphers in story
chromatic doesn't like large snapshots
* [EC-974] fix: "all collections" not taking `organizationId` filter into account
* [EC-974] fix: make sure unassigned appears in table too
* [EC-974] feat: add unassigned to storybook
* [EC-974] fix: forced row height not being applied properly
* [EC-974] fix: hopefully fix table jumping once and for all
* [EC-974] fix: attachemnts getting hidden
* [EC-974] feat: extract collection editable logic to parent component
* [EC-974] feat: separately track editable items
* [EC-974] feat: optimize permission checks
* [EC-974] fix: bulk menu hidden on chrome
:lolcry:
* [EC-974] fix: don't show groups column if org doesnt use groups
* [EC-974] feat: make entire row clickable
* [EC-974] fix: typo resulting in non-editable collections
* let node-ipc use individual pipes on Windows
This fixes an issue with multiple users on Windows. There should be an individual Windows pipe used for communication between browser plugin and desktop for each user. However, the naming scheme used the same name for every user. This change adds some uniqueness with a hash over username and unique directory name.
* Fix ipc socket root for native-messaging too
* use only homedir as unique
* Prefer callback over error-flow to prompt for password
Remove error-flow to request file password
Prefer callback, which has to be provided when retrieving/creating an instance.
Delete ImportError
Call BitwardenPasswordProtector for all Bitwarden json imports, as it extends BitwardenJsonImporter
Throw errors instead of returning
Return ImportResult
Fix and extend tests import.service
Replace "@fluffy-spoon/substitute" with "jest-mock-extended"
* Fix up test cases
Delete bitwarden-json-importer.spec.ts
Add test case to ensure bitwarden-json-importer.ts is called given unencrypted or account-protected files
* Move file-password-prompt into dialog-folder
* Add import success dialog
* Fix typo
* Only list the type when at least one got imported
* update copy based on design feedback
* Remove unnecessary /index import
* Remove promptForPassword_callback from interface
PR feedback from @MGibson1 that giving every importer the ability to request a password is unnecessary. Instead, we can pass the callback into the constructor for every importer that needs this functionality
* Remove unneeded import of BitwardenJsonImporter
* Fix spec constructor
* Fixed organizational import
Added an else statement, or else we'd import into an org and then also import into an individual vault
* fix: renamed to billing sync token
* Use translated string
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
---------
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Move URI matching logic into uriView
* Fix url parsing: always assign default protocol, otherwise no protocol with port is parsed incorrectly
* Codescene: refactor domain matching logic
* Fix encrypted export using fixed PBKDF2 iterations
* Replace hardcoded KdfType in importer
* Clean up kdf handling in password-protected export
* Extract BitwardenPasswordProtectedFileFormat
* Rename bitwarden-json-types
* Move StateService import to fix linting issue
* Make linter happy
* Use abstraction instead of implementation
---------
Co-authored-by: Daniel James Smith <djsmith@web.de>
* Prevent rerouting to dispaly modal message, and refactored components where thsi was used
* Added upgrade badge to organization reports view
* created guard to prevent free organization users from accessing reports
* Added isUpgradeRequired getter to organization class
* Modifiewd reports home to pass upgrade badge and add new guard to organization reports module
* Fixed routing bug when routing to billing subscription page
* Refactored to use async pipe and observables
* Renamed getter name to be more descriptive
* Removed checkAccess from reports
* Renamed guard
* Removed unused variables
* Lint fix
* Lint fix
* prettier fix
* Corrected organiztion service reference
* Moved homepage to ngonInit
* [PM-1629] Update the upgrade dialog for users without billing rights (#5102)
* Show dialog with description when user does not have access to the billing page
* switched conditions to nested if to make the logic clearer