* Add back notifications connection on locked accounts
* Updated tests.
* Make sure web push connection service is started synchronously
* Fixed merge conflicts.
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* [PM-24143] Add perUserCache$ to SearchService index$
* [PM-24143] Cleanup and optimize isSearchable
* [PM-24143] Remove unused search flags and subscription from the vault-items component
* [PM-24143] Add search text for desktop vault items. Consolidate SearchTextDebounceInterval constant to SearchService
* [PM-24143] Ensure cipher search indexing is non-blocking
* [PM-24143] Remove redundant index ciphers operation
* [PM-24143] Add search performance measurements
* [PM-24143] Remove artificial delay
* [PM-24143] Remove startWith from index$ to avoid basic search with lunr queries
* [PM-24143] Re-organize isSearchable to check long lunr queries for index existence
* [PM-19479] Client-Managed SDK state definition
* Remove test code
* Update based on latest sdk
* Add DB config
* Remove uuid conversion step
* Move mapper into separate file
* Revert to client managed state
* Move mapper to Cipher
* Typo
---------
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
* create libs/assets
* treeshake lib and filter out non-icons from icon story
* update docs
* fix icon colors in browser and desktop
* better name for vault icon
* move illustrations
* feat(notification-processing): [PM-19877] System Notification Implementation - Minor changes to popup logic and removed content in login component.
* docs(notification-processing): [PM-19877] System Notification Implementation - Added more docs.
* docs(notification-processing): [PM-19877] System Notification Implementation - Added markdown document.
* fix(notification-processing): [PM-19877] System Notification Implementation - Updated condition for if notification is supported.
* fix(notification-processing): [PM-19877] System Notification Implementation - Updated services module with correct platform utils service.
* Throw error if appA11yTitle is null in icon button
* Add required label input
* Fix icon button errors in CL components and storeis
* fix popover aria-label errors
* remove commented code
* add labels to icon buttons in browser
* add labels to icon buttons in web
* add labels to icon buttons in license
* add labels to icon buttons in send
* add labels to icon buttons in angular
* fix missing pipe error
* fix sso icon button missed in error
* update labels in vault
* add section expand button label
* Adding labels to icon buttons
* Add lint rule to not allow icon buttons without label input
* rename util file
* trigger updates on title change
* update eslint rule name and folder
* add edit collection label to vault headers
* fix web header story label
* add show/hide summary labels
* update summary message
* fix breadcrumbs label message
* fix JSDoc to use correct input
* remove commented code
* use label as aria-label always. Remove init function
* add moreBreadcrumbs translation message to other apps
* add @bitwarden/team-ui-foundation as code owner for component eslint rules
* switch title to const variable
* add jsdoc comment on what the label input is used for
* [PM-22415] Tax ID notifications for Organizations and Providers (#15996)
* [NO LOGIC] Rename BillableEntity to BitwardenSubscriber
This helps us maintain paraody with server where we call this choice type ISubscriber. I chose BitwardenSubscriber to avoid overlap with RxJS
* [NO LOGIC] Move subscriber-billing.client to clients folder
* [NO LOGIC] Move organization warnings under organization folder
* Move getWarnings from OrganizationBillingApiService to new OrganizationBillingClient
I'd like us to move away from stashing so much in libs and utilizing the JsLibServicesModule when it's not necessary to do so. These are invocations used exclusively by the Web Vault and, until that changes, they should be treated as such
* Refactor OrganizationWarningsService
There was a case added to the Inactive Subscription warning for a free trial, but free trials do not represent inactive subscriptions so this was semantically incorrect. This creates another method that pulls the free trial warning and shows a dialog asking the user to subscribe if they're on one.
* Implement Tax ID Warnings throughout Admin Console and Provider Portal
* Fix linting error
* Jimmy's feedback
* remove duplicate messages keys
* revert changes to popover stories
* add back dupe myItems key for now as it was already here
* fix directive type errors
* remove variable left in error from merge conflict
* revert unintentional change to reports layout
* add back reports change
---------
Co-authored-by: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com>
This PR makes it so the devices are always sorted in this order (by default):
1. Has Pending Auth Request (if any) comes first
2. Current Device comes second (or first if there are no pending auth requests)
3. First Login Date - the rest of the devices are sorted by first login date (newest to oldest)
This sort order is preserved even after a user approves/denies and auth request - that is, the approved/denied device will re-sort to its correct position according to it's first login date.
Feature Flag: `PM14938_BrowserExtensionLoginApproval`
- Renames the `LoginApprovalComponent` to `LoginApprovalDialogComponent`
- Renames the property `notificationId` to `authRequestId` for clarity
- Updates text content on the component
* Move pin service to km ownership
* Run format
* Eslint
* Fix tsconfig
* Fix imports and test
* Clean up imports
* Remove unused dependency on PinService
* Fix comments
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Introduce ActiveUserAccessor
* Use ActiveUserAccessor over AccountService
* Updates tests and testing utils to support ActiveUserAccessor
* Update all injection points
* Fix types test
* Use ternary instead
* Removed flag and components.
* More cleanup
* Removed ChangePasswordComponent.
* Removed old EmergencyAccessTakeover
* Removed service initialization.
* Fixed test failures.
* Fixed tests.
* Test changes.
* Updated comments
* Delete old password-strength component
A PasswordStrengthV2Component had been created in July 2024 and now all usages of the old component have been replaced.
* Re-add canAccessFeature back into app-routing.module.
Messed up by merging main.
---------
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Adds a `redirect-to-vault-if-unlocked.guard.ts` that does the following:
- If there is no active user, allow access to the route
- If the user is specifically Unlocked, redirect the user to /vault
- Otherwise, allow access to the route (fallback/default)
* add `CipherViewLike` and utilities to handle `CipherView` and `CipherViewLike`
* migrate libs needed for web vault to support `CipherViewLike`
* migrate web vault components to support
* add for CipherView. will have to be later
* fetch full CipherView for copying a password
* have only the cipher service utilize SDK migration flag
- This keeps feature flag logic away from the component
- Also cuts down on what is needed for other platforms
* strongly type CipherView for AC vault
- Probably temporary before migration of the AC vault to `CipherListView` SDK
* fix build icon tests by being more gracious with the uri structure
* migrate desktop components to CipherListViews$
* consume card from sdk
* add browser implementation for `CipherListView`
* update copy message for single copiable items
* refactor `getCipherViewLikeLogin` to `getLogin`
* refactor `getCipherViewLikeCard` to `getCard`
* add `hasFido2Credentials` helper
* add decryption failure to cipher like utils
* add todo with ticket
* fix decryption failure typing
* fix copy card messages
* fix addition of organizations and collections for `PopupCipherViewLike`
- accessors were being lost
* refactor to getters to fix re-rendering bug
* fix decryption failure helper
* fix sorting functions for `CipherViewLike`
* formatting
* add `CipherViewLikeUtils` tests
* refactor "copiable" to "copyable" to match SDK
* use `hasOldAttachments` from cipherlistview
* fix typing
* update SDK version
* add feature flag for cipher list view work
* use `CipherViewLikeUtils` for copyable values rather than referring to the cipher directly
* update restricted item type to support CipherViewLike
* add cipher support to `CipherViewLikeUtils`
* update `isCipherListView` check
* refactor CipherLike to a separate type
* refactor `getFullCipherView` into the cipher service
* add optional chaining for `uriChecksum`
* set empty array for decrypted CipherListView
* migrate nudge service to use `cipherListViews`
* update web vault to not depend on `cipherViews$`
* update popup list filters to use `CipherListView`
* fix storybook
* fix tests
* accept undefined as a MY VAULT filter value for cipher list views
* use `LoginUriView` for uri logic (#15530)
* filter out null ciphers from the `_allDecryptedCiphers$` (#15539)
* use `launchUri` to avoid any unexpected behavior in URIs - this appends `http://` when missing
Creates a new `DeviceManagementComponent` that fetches devices and formats them before handing them off to a view component for display.
View components:
- `DeviceManagementTableComponent` - displays on medium to large screens
- `DeviceManagementItemGroupComponent` - displays on small screens
Feature flag: `PM14938_BrowserExtensionLoginApproval`
* fix(change-password): [PM-23811] Tooltip Missing Bug - Fixed import to show tooltip.
* fix(change-password-component): Change Password Update [18720] - Changed to use common module.
* PM-23700 - SendPasswordService - create and test
* PM-23700 - SendPassword Service comment clean up
* PM-23700 - Use barrel file exports and register default service.
* PM-23700 - DefaultSendPasswordService - work with Bernd to deliver better service
* Removed flag.
* Fixed tests to no longer reference flag.
* Fixed test.
* Removed duplicate test class.
* Moved files into folders for yubikey and authenticator
* Removed TwoFactorAuthEmailComponentService since it is no longer needed
* Removed export
* Fixed export
* feat(change-password-component): Change Password Update [18720] - Very close to complete.
* fix(policy-enforcement): [PM-21085] Fix Bug with Policy Enforcement - Removed temp code to force the state I need to verify correctness.
* fix(policy-enforcement): [PM-21085] Fix Bug with Policy Enforcement - Recover account working with change password component.
* fix(policy-enforcement): [PM-21085] Fix Bug with Policy Enforcement - Made code more dry.
* fix(change-password-component): Change Password Update [18720] - Updates to routing and the extension. Extension is still a wip.
* fix(change-password-component): Change Password Update [18720] - Extension routing changes.
* feat(change-password-component): Change Password Update [18720] - More extension work
* feat(change-password-component): Change Password Update [18720] - Pausing work for now while we wait for product to hear back.
* feat(change-password-component): Change Password Update [18720] - Removed duplicated anon layouts.
* feat(change-password-component): Change Password Update [18720] - Tidied up code.
* feat(change-password-component): Change Password Update [18720] - Small fixes to the styling
* feat(change-password-component): Change Password Update [18720] - Adding more content for the routing.
* feat(change-password-component): Change Password Update [18720] - Removed circular loop for now.
* feat(change-password-component): Change Password Update [18720] - Made comments regarding the change password routing complexities with change-password and auth guard.
* feat(change-password-component): Change Password Update [18720] - Undid some changes because they will be conflicts later on.
* feat(change-password-component): Change Password Update [18720] - Small directive change.
* feat(change-password-component): Change Password Update [18720] - Small changes and added some clarification on where I'm blocked
* feat(change-password-component): Change Password Update [18720] - Org invite is seemingly working, found one bug to iron out.
* refactor(change-password-component): Change Password Update [18720] - Fixed up policy service to be made more clear.
* docs(change-password-component): Change Password Update [18720] - Updated documentation.
* refactor(change-password-component): Change Password Update [18720] - Routing changes and policy service changes.
* fix(change-password-component): Change Password Update [18720] - Wrapping up changes.
* feat(change-password-component): Change Password Update [18720] - Should be working fully
* feat(change-password-component): Change Password Update [18720] - Found a bug, working on password policy being present on login.
* feat(change-password-component): Change Password Update [18720] - Turned on auth guard on other clients for change-password route.
* feat(change-password-component): Change Password Update [18720] - Committing intermediate changes.
* feat(change-password-component): Change Password Update [18720] - The master password policy endpoint has been added! Should be working. Testing now.
* feat(change-password-component): Change Password Update [18720] - Minor fixes.
* feat(change-password-component): Change Password Update [18720] - Undid naming change.
* feat(change-password-component): Change Password Update [18720] - Removed comment.
* feat(change-password-component): Change Password Update [18720] - Removed unneeded code.
* fix(change-password-component): Change Password Update [18720] - Took org invite state out of service and made it accessible.
* fix(change-password-component): Change Password Update [18720] - Small changes.
* fix(change-password-component): Change Password Update [18720] - Split up org invite service into client specific implementations and have them injected into clients properly
* feat(change-password-component): Change Password Update [18720] - Stopping work and going to switch to a new branch to pare down some of the solutions that were made to get this over the finish line
* feat(change-password-component): Change Password Update [18720] - Started to remove functionality in the login.component and the password login strategy.
* feat(change-password-component): Change Password Update [18720] - Removed more unneded changes.
* feat(change-password-component): Change Password Update [18720] - Change password clearing state working properly.
* fix(change-password-component): Change Password Update [18720] - Added docs and moved web implementation.
* comments(change-password-component): Change Password Update [18720] - Added more notes.
* test(change-password-component): Change Password Update [18720] - Added in tests for policy service.
* comment(change-password-component): Change Password Update [18720] - Updated doc with correct ticket number.
* comment(change-password-component): Change Password Update [18720] - Fixed doc.
* test(change-password-component): Change Password Update [18720] - Fixed tests.
* test(change-password-component): Change Password Update [18720] - Fixed linting errors. Have more tests to fix.
* test(change-password-component): Change Password Update [18720] - Added back in ignore for typesafety.
* fix(change-password-component): Change Password Update [18720] - Fixed other type issues.
* test(change-password-component): Change Password Update [18720] - Fixed tests.
* test(change-password-component): Change Password Update [18720] - Fixed more tests.
* test(change-password-component): Change Password Update [18720] - Fixed tiny duplicate code.
* fix(change-password-component): Change Password Update [18720] - Fixed desktop component.
* fix(change-password-component): Change Password Update [18720] - Removed unused code
* fix(change-password-component): Change Password Update [18720] - Fixed locales.
* fix(change-password-component): Change Password Update [18720] - Removed tracing.
* fix(change-password-component): Change Password Update [18720] - Removed duplicative services module entry.
* fix(change-password-component): Change Password Update [18720] - Added comment.
* fix(change-password-component): Change Password Update [18720] - Fixed unneeded call in two factor to get user id.
* fix(change-password-component): Change Password Update [18720] - Fixed a couple of tiny things.
* fix(change-password-component): Change Password Update [18720] - Added comment for later fix.
* fix(change-password-component): Change Password Update [18720] - Fixed linting error.
* PM-18720 - AuthGuard - move call to get isChangePasswordFlagOn down after other conditions for efficiency.
* PM-18720 - PasswordLoginStrategy tests - test new feature flagged combine org invite policies logic for weak password evaluation.
* PM-18720 - CLI - fix dep issue
* PM-18720 - ChangePasswordComp - extract change password warning up out of input password component
* PM-18720 - InputPassword - remove unused dependency.
* PM-18720 - ChangePasswordComp - add callout dep
* PM-18720 - Revert all anon-layout changes
* PM-18720 - Anon Layout - finish reverting changes.
* PM-18720 - WIP move of change password out of libs/auth
* PM-18720 - Clean up remaining imports from moving change password out of libs/auth
* PM-18720 - Add change-password barrel file for better import grouping
* PM-18720 - Change Password comp - restore maxWidth
* PM-18720 - After merge, fix errors
* PM-18720 - Desktop - fix api service import
* PM-18720 - NDV - fix routing.
* PM-18720 - Change Password Comp - add logout service todo
* PM-18720 - PasswordSettings - per feedback, component is already feature flagged behind PM16117_ChangeExistingPasswordRefactor so we can just delete the replaced callout (new text is in change-password comp)
* PM-18720 - Routing Modules - properly flag new component behind feature flag.
* PM-18720 - SSO Login Strategy - fix config service import since it is now in shared deps from main merge.
* PM-18720 - Fix SSO login strategy tests
* PM-18720 - Default Policy Service - address AC PR feedback
---------
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
* WIP - default collection sorting
* apply filtering to popup list filters service.
* add tests. add feature flag checks
* finalize my items collection filters
* fix type error
* re-add service
* re-add comment
* remove unused code
* fix sorting logic
* shorten variable name to fit one line
* fix error
* fix more errors
* abstract logic to vault filter service
* fix test
* export sort as function instead of adding to class
* fix more tests
* add collator arg
* remove ts-ignore. fix type errors
* remove optional param
* fix vault filter service
When a user logs in via SSO after their org has offboarded from TDE, we now show them a helpful error message stating that they must either login on a Trusted device, or ask their admin to assign them a password.
Feature flag: `PM16117_SetInitialPasswordRefactor`
* Add new device type for DuckDuckGo browser
* Added feature support property for sync domains
* Added new features
* Added isDuckDuckGo() to CLI
* Addressed PR feedback.
* Renamed new property
* Fixed rename that missed CLI.
This PR makes it so that `SetInitialPasswordComponent` handles the TDE offboarding flow where an org user now needs to set an initial master password.
Feature flag: `PM16117_SetInitialPasswordRefactor`
Creates a `SetInitialPasswordComponent` to be used in scenarios where an existing and authed user must set an initial password.
Feature Flag: `PM16117_SetInitialPasswordRefactor`
* feat: Create methods for calling GET auth-request/pending endpoint.
* feat: update banner service on web, and desktop vault
* test: updated banner test to use auth request services
* fix: DI fixes
* feat: add RequestDeviceId to AuthRequestResponse
* fix: add Browser Approvals feature flags to desktop vault and web vault banner service
* test: fix tests for feature flag
* Created new service to get restricted types for the CLI
* Created service for cli to get restricted types
* Utilized restriction service in commands
* Renamed function
* Refactored service and made it simpler to check when a cipher type is restricted or not
* Moved service to common so it can be utilized on the cli
* Refactored service to use restricted type service
* Removed userId passing from commands
* Exclude restrict types from export
* Added missing dependency
* Added missing dependency
* Added missing dependency
* Added service utils commit from desktop PR
* refactored to use reusable function
* updated reference
* updated reference
* Fixed merge conflicts
* Refactired services to use isCipherRestricted
* Refactored restricted item types service
* Updated services to use the reafctored item types service
* add restricted item types to legacy vault components
* filter out restricted item types from new menu item in desktop
* use CIPHER_MENU_ITEMS
* use CIPHER_MENU_ITEMS. move restricted cipher service to common
* use move restricted item types service to libs. re-use cipher menu items
* add shareReplay. change variable name
* move restricted filter to search service. remove unecessary import
* add reusable service method
* clean up spec
* add optional chain
* remove duplicate import
* move isCipherViewRestricted to service module
* fix logic
* fix logic
* remove extra space
---------
Co-authored-by: SmithThe4th <gsmith@bitwarden.com>
* PM-19555 - LogoutService - build abstraction, default, and extension service and register with service modules
* PM-19555 - Lock Comp - use logoutService
* PM-19555 - LoginDecryptionOptions - Use logout service which removed need for extension-login-decryption-options.service
* PM-19555 - AccountSwitcher logic update - (1) Use logout service + redirect guard routing (2) Remove logout method from account switcher service (3) use new NewActiveUser type
* PM-19555 - Extension - Acct Switcher comp - clean up TODOs
* PM-19555 - Add TODOs for remaining tech debt
* PM-19555 - Add tests for new logout services.
* PM-19555 - Extension - LoginInitiated - show acct switcher b/c user is AuthN
* PM-19555 - Add TODO to replace LogoutCallback with LogoutService
* PM-19555 WIP
* PM-19555 - Extension App Comp - account switching to account in TDE locked state works now.
* PM-19555 - Extension App Comp - add docs
* PM-19555 - Extension App Comp - add early return
* PM-19555 - Desktop App Comp - add handling for TDE lock case to switch account logic.
* PM-19555 - Extension - Account Component - if account unlocked go to vault
* PM-19555 - Per PR feedback, clean up unnecessary nullish coalescing operator.
* PM-19555 - Extension - AppComponent - fix everHadUserKey merge issue
* PM-19555 - PR feedback - refactor switchAccount and locked message handling on browser & desktop to require user id. I audited all callsites for both to ensure this *shouldn't* error.
* Refactor components to remove limitItemDeletion feature flag usage
This commit simplifies the logic in various components by removing the limitItemDeletion feature flag. The conditions for displaying restore and delete actions are now based solely on the cipher's permissions, enhancing code clarity and maintainability.
* Refactor cipher deletion logic to remove the feature flag and collection ID dependency
This commit updates the cipher deletion logic across multiple components and services by removing the unnecessary dependency on collection IDs. The `canDeleteCipher$` method now solely relies on the cipher's permissions, simplifying the code and improving maintainability.
* Remove LimitItemDeletion feature flag from feature-flag enum and default values
* Remove configService from ServiceContainer and MainBackground constructor parameters
* Remove configService from RestoreCommand instantiation in OssServeConfigurator and VaultProgram classes
* add generic `union-of-values` helper
* migrate `GeneratorDialogAction` to a constant
* migrate `VaultState` to a constant
* migrate `AtRiskCarouselDialogResult` to a constant
* migrate `CredentialGeneratorDialogAction` to a constant
* migrate `FolderAddEditDialogResult` to a constant
* migrate `ViewCipherDialogResult` to a constant
* migrate `VisibleVaultBanner` to a constant
* migrate `VaultFilterLabel` to a constant
* migrate `WebVaultGeneratorDialogResult` to a constant
* migrate `BulkDeleteDialogResult` to a constant
* migrate `BulkMoveDialogResult` to a constant
* migrate `AddEditCipherDialogResult` to a constant
* migrate `VaultItemDialogResult` to a constant
* migrate `BrowserPromptState` to a constant
* migrate `NudgeType` to a constant
* migrate `SecurityTaskStatus` to a constant
* migrate `CipherRepromptType` to a constant
* migrate `SecureNoteType` to a constant
* migrate `FieldType` to a constant
* migrate `LinkedIdType` to a constant
* migrate `CollectionAssignmentResult` to a constant
* migrate `AddEditFolderDialogResult` to a constant
* migrate `AttachmentDialogResult` to a constant
* fix CipherType in delete organization dialog
* fix `in` statement in VaultFilter
* Fix build errors across enum updates
* fix two more CipherType castings
* update CipherResponse `CipherType`
* define type for `fieldType` parameter
* refine how `cipherTypeNames` is generated and add utility function for grabbing cipher type name
* use `CipherType` rather than `number`
* add stricter typing for `FieldType`
* add fixme for `CipherType` to be ADR-0025 compliant
* remove error throw for `toCipherTypeName` and instead update typing to have `| undefined`
* add helpers for CipherType conversions
* prefer `undefined`
* remove margin bottom from empty vault nudge
* update page title to vault options
* show badge on import of vault settings
* add margin between no items title and icon
* add mock to test
* add comment for destroying vault settings page
* fix logic for manage/create collection
* account for deleted ciphers when showing the import nudge
* refactor name of vault import nudge
* remove margin from the bottom of paragraph tag in generator spotlight
* update aria-label text to match translation key
* Remove `SendNudgeStatus` nudge type
* update web send page to use new title and description
* update old no sends title and description
* hide internal contents on generator nudge
* remove NudgeService from send-v2 test
Upgrade Angular to v19 using the update guide.
- Add `standalone: false` to any missed component in stories or tests.
- Update jest.config to follow the new best practices.
* Get userId from response if available
This is a small improvement for the Auth team which avoids inspection of the access token, sometimes.
* Initialize sdk clients with a userId
* return both Cipher and encryptedFor when encrypting a cipher
Update cipher api requests to include encryptedFor attribute
* Prefer named types with documentation
* Update sdk to latest
* Fixup types
* Fixup tests
* Revert getting userId from identity token response
---------
Co-authored-by: Shane <smelton@bitwarden.com>
* first draft at an idea dependency graph
* ignore existing errors
* remove conflicting rule regarding internal platform logic in libs
* review: allow components to import from platform
* added generator spotlight to credential generator component
* moved generator spotlight to browser component and add as slot in libs. update copy for send
* added an aria label for the generator nudge body content
* new copy and styles for browser send will be behind feature flag
* update featureflag call to observable in send-v2
* changed how nudge text is made in credential generator
* added new observable to vault nudges to return specific boolean. Update naming of vault types. update observable calls in credential-generator and send-v2
* update send-v2 and credential generator to use new renamed nudges
* update to create nudge generator spotlight component. using this inside the credential generator for nudge spotlight
* fix imports for Nudge related code
* add libs/angular to storybook
---------
Co-authored-by: Nick Krantz <nick@livefront.com>
* account security nudge
* fix messages.json
* fix tests
* fix logic for account security item
* fix tests
* adjust account security nudge work to updated nudge service
* fix account security nudge
* remove unused code. do not show account security badge
* include ff and safari in link html
* fix import
* Revert "include ff and safari in link html"
This reverts commit cd12a36274.