* Create unavailable message for biometrics when in clamshell mode
* Move browser biometrics
* Inject nativemessagingbackground instead of using constructor
* Fix linting
* Fix build on browser
* Require userId for setting masterKeyEncryptedUserKey
* Replace folders for specified user
* Require userId for collection replace
* Cipher Replace requires userId
* Require UserId to update equivalent domains
* Require userId for policy replace
* sync state updates between fake state for better testing
* Revert to public observable tests
Since they now sync, we can test single-user updates impacting active user observables
* Do not init fake states through sync
Do not sync initial null values, that might wipe out already existing data.
* Require userId for Send replace
* Include userId for organization replace
* Require userId for billing sync data
* Require user Id for key connector sync data
* Allow decode of token by userId
* Require userId for synced key connector updates
* Add userId to policy setting during organization invite accept
* Fix cli
* Handle null userId
---------
Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
Migrate the index.html to use tailwind instead of bootstrap
* Extracted some more global styles to override the bootstrap styles for layout
frontend. We should revisit this when we remove bootstrap.
* Removed Angular specific logo for anon pages. Now uses the same css class as
loading page to prevent duplicated assets.
* Log reloading behavior
* Remove hints from responses.
changing password implies updating the hint, but no longer displays the old one. This is a security risk for shoulder surfing and breaks the escrow model we have where it is only shared via email when requested.
* Update change password hint label
* updated cipher service to stop using the deprecated getUserKeyWithLegacySupport and use the version that requires a user id
* Added account service mock
* fixed cipher test
* Fixed test
* removed async from encryptCipher
* updated encryptSharedCipher to pass userId to the encrypt function
* Pass userId to getUserKeyWithLegacySupport on encryptSharedCipher
* pass in userid when setting masterKeyEncryptedUserKey
* Added activer usedId to new web refresh function
Upgrade storybook to version v8 which is a major upgrade. Storybook provides an
upgrade wizard which did most of the work.
- Ran npx storybook upgrade.
- Manually updated `remark-gfm` since the newer mdx requires v 4.
- Migrated all old stories still using `Story` to `StoryObj`.
* Add additional extension refresh menu behind feature flag.
* Open new cipher dialog with proper cipher type selected.
* Adjust onboarding copy and default to login cipher.
* Update "New item" button styles.
* Add test to ensure onboarding component always calls onAddCipher.emit with the login cipher type.
* Hide onboarding and new item changes behind feature flag
* Fix missing mock in test.
* Remove extensionRefreshEnabled$ and conditional styles from the "add new" button.
* Remove rounding class from menu "new" button.
* [PM-10723] Remove autocomplete="new-password" attribute from 2fa based code inputs
* [PM-10723] Remove autocomplete="new-password" attribute from 2fa based code inputs
* send list items container
* update send list items container
* finalize send list container
* remove unecessary file
* undo change to config
* prefer use of takeUntilDestroyed
* add send items service
* and send list filters and service
* undo changes to jest config
* add specs for send list filters
* Revert "Merge branch 'PM-9853' into PM-9852"
This reverts commit 9f65ded13f, reversing
changes made to 63f95600e8.
* add send items service
* Revert "Revert "Merge branch 'PM-9853' into PM-9852""
This reverts commit 81e9860c25.
* finish send search
* fix formControlName
* add specs
* finalize send search
* layout and copy fixes
* cleanup
* Remove unneeded empty file
* Remove the erroneous addition of send-list-filters to vault-export tsconfig
* update tests
* hide send list filters for non-premium users
* fix and add specss
* Fix small typo
* Re-add missing tests
* Remove unused NgZone
* Rename selector for send-search
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
* Update unix biometrics for desktop biometrics rework
* Implement polkit policy setup
* Enable browser integration on Linux
* Remove polkit policy file
* Undo change to messages.json
* Fix biometrics setup, implement missing functions
* Implement osSupportsBiometrics
* Fix polkit settings message
* Remove unwraps in biometrics unix rust module
* Force password reprompt on start on linux with biometrics
* Merge branch 'main' into feature/unix-biometrics
* Allow browser extension to be unlocked on Linux via Polkit
* Implement availability check
* Cleanup
* Add auto-setup, manual setup, setup detection and change localized prompts
* Implement missing methods
* Add i18n to polkit message
* Implement missing method
* Small cleanup
* Update polkit consent message
* Fix unlock and print errors on failed biometrics
* Add dependencies to core crate
* Fix reference and update polkit policy
* Remove async-trait
* Add tsdoc
* Add comment about auto setup
* Delete unused init
* Update help link
* Remove additional settings for polkit
* Add availability-check to passwords implementation on linux
* Add availability test
* Add availability check to libsecret
* Expose availability check in napi crate
* Update d.ts
* Update osSupportsBiometric check to detect libsecret presence
* Improve secret service detection
* Add client half to Linux biometrics
* Fix windows build
* Remove unencrypted key handling for biometric key
* Move rng to rust, align linux bio implementation with windows
* Consolidate elevated commands into one
* Disable snap support in linux biometrics
---------
Co-authored-by: DigitallyRefined <129616584+DigitallyRefined@users.noreply.github.com>
Enables one of the recommended rules of @angular-eslint. Since this rule was fairly trivial to fix and has no QA effects it seemed reasonable to migrate all code.
* [PM-8524] Update appA11yTitle to keep attributes in sync after first render
* [PM-8524] Introduce UriOptionComponent
* [PM-9190] Introduce AutofillOptionsComponent
* [PM-9190] Add AutofillOptions to LoginDetailsSection
* [PM-9190] Add autofill options component unit tests
* [PM-9190] Add UriOptionComponent unit tests
* [PM-9190] Add missing translations
* [PM-9190] Add autofill on page load field
* [PM-9190] Ensure updatedCipherView is completely separate from originalCipherView
* [CL-348] Do not override items if there are no OptionComponents available
* [PM-9190] Mock AutoFillOptions component in Login Details tests
* [PM-9190] Cleanup storybook and missing web translations
* [PM-9190] Ensure storybook decryptCipher returns a separate object
* Add changes for the upgrade dialog
* Resolve the free org to any org type besides Families
* Resolve the pr comments on navigation
* resolve family plan upgrade from free
* add messaging for finish sign up component
* Add product enum for finish sign up components
* Allow confirmation details component to display secret manager confirmation
* add FinishSignUp component
- Started as exact copy of trial initiation component
- Consolidated with secrets manager trial components
* Integration finish sign up component into routing
- Use anon layout component
- Add resolver to pass the accurate title to the layout
* migrate to product tier type
* use existing ProductType enum
* migrate to accept org service
* fix query param parsing for free trial text
* migrate finish sign up to complete trial naming
* migrate fully to productTier
* fix import of free trial resolver
* increase max width of anon layout
* add auth-input component
* refactor component makeup
* export the users password if needed to auto login the user
* handle login situations where a stepper isn't used
* fix type check
* allow max width of anon layout to be configurable
* remove account created toast
* update productTier query param in text resolver
* set maxWidth for secrets manager trial route
* parse product query param as an int
* properly show registration error
* update routes to be from the root rather than relative
* install updated prettier and apply fixes
* fix missing password in test
---------
Co-authored-by: Conner Turnbull <133619638+cturnbull-bitwarden@users.noreply.github.com>
* Creating a landing page for SM, where user can request access from admins
* moving files to better folder, also fixing UI
* updating file paths
* cleaning up the code
* Updating API request to be the new one, and fixing HTML
* Adding coowners
* Updating OrganizaitonId in the request model to be a Guid
* Update apps/web/src/app/secrets-manager/secrets-manager-landing/request-sm-access.component.ts
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* Update apps/web/src/app/layouts/product-switcher/navigation-switcher/navigation-switcher.component.ts
Co-authored-by: Maciej Zieniuk <167752252+mzieniukbw@users.noreply.github.com>
* Update apps/web/src/app/layouts/product-switcher/navigation-switcher/navigation-switcher.component.ts
Co-authored-by: Maciej Zieniuk <167752252+mzieniukbw@users.noreply.github.com>
* Suggested changes from Maceij and Thomas
* fixing merge issues
* fixing issues
* Fixing logic to match top bar
* updating file name to not start with a capital letter
* renaming folder
* updating names
* Getting around the lint issue
* fixing lint issues
* Changes requested by Vicky
* Maciej suggested changes
* Fixing comments
* Update apps/web/src/app/secrets-manager/secrets-manager-landing/sm-landing-api.service.ts
Thomas's suggested improvement
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* ui fixes
* New awesome changes, to include the scenario where a Provider user is logged in, and to handle if an admin needs instructions to enable SM for themselves
* renaming fuctions and variables
---------
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
Co-authored-by: Maciej Zieniuk <167752252+mzieniukbw@users.noreply.github.com>
* setup SetPassword component
* accept query params
* add InputPasswordComponent to template
* add route
* add dynamic translation with org name
* feature flag route
* setup onInit
* add set password logic
* move to libs
* remove comments
* update AuthGuard routing
* use ToastService
* replace deprecated methods
* replace orgId input with policy input
* use getter for msg instead of ngOnInit
* cleanup
* refactor to use services
* more refactoring of service
* address browser routing and translations
* add desktop service
* simplify queryParam handler
* remove ngOnDestroy
* small edits
* use inject()
* add jsdocs
* create basic tests
* add success toasts on successfuly set password
* add tests
* update feature-flag
* move model to service
* refactor client services to override setPassword()
* add error handling to setPassword()
* move auto enroll logic to service
* update tests
* fix test
* adjust padding on password-callout list
* revert refactor of auto enroll logic
* refactor keyPair generation to own method
* update page title and button text
* update pageSubtitle and translations
* fix test
* refactor "Assign collections" to "Assign to collections"
* show singular or plural version of collection assignment success message
* update singular and plural warning text
* refactor switch to be an `if`
* Added function to return cipherview observable and trigger the decryption process if the cipherviews$ observable returns empty
* Updated the vault component to use getCipherViews$ observable function
* converted vault banner to standalone component
* converted vault header to standalone component
* fixed unawaited promises
converted component to standalone component
* cleaned up vault module
* fixed imports
* refactored getCipherView$ observable
* refactored onVaultItemsEvent to switch case
* Refactored to use toast service instead of platform utils service for toast
* Added function to return cipherview observable and trigger the decryption process if the cipherviews$ observable returns empty
* Updated the vault component to use getCipherViews$ observable function
* converted vault banner to standalone component
* converted vault header to standalone component
* fixed unawaited promises
converted component to standalone component
* cleaned up vault module
* fixed imports
* refactored getCipherView$ observable
* refactored onVaultItemsEvent to switch case
* Refactored to use toast service instead of platform utils service for toast
* merged with main and fixed conflicts
* reordered standalone property
* converted components to standalone
* cleaned up ng module for org vault
* cleaned up vault module individual vault
* fixed conflicts
* Replaced deprecated toast service
* refactored to use switch case for org vault
* fixed comments and fixed failing tests
reverted to use getAllDecrypted
* Add shared duo component
* Fix duo import
* Fix wrong i18n service DI in duo desktop component
* Remove duo v2
* Add override to functions
* Remove web duo implementation
* Update apps/browser/src/auth/popup/two-factor-auth-duo.component.ts
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
* Update apps/desktop/src/auth/two-factor-auth-duo.component.ts
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
* Update libs/angular/src/auth/components/two-factor-auth/two-factor-auth-duo.component.ts
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
* Fix missing service on duo components
* Fix missing service on base duo auth component
* Fix constructor super calls in duo auth component
* Fix duo auth components incorrectly extending base class
---------
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
* PM-6198 - Majority of client work done; WIP on registration finish comp
* PM-6198 - Registration Finish - Add registerVerificationEmailClicked logic
* PM-6198 - RegistrationLinkExpired component; added translations on other clients just in case we use the component on other clients in the future.
* PM-6198 - Clean up comment
* initial add of assign collections component
* grab cipherId from query params
* add organization selection for moving a cipher
* add multi-select for collections
* add transfer of cipher to an organization
* temp: do not show assign collections while a cipher already has an organization
* account for initial collections for a cipher
* block assign-collections route with feature flag
* replace hardcoded string with i18n
* separate out async calls to switchMap to avoid async subscribe
* use local cipher rather than decrypting again
* use anchor for better semantics
* migrate form submission to bitSubmit directive
* swap to "assign" rather than "save"
* integrate with base AssignCollections component
* clean up messages file
* remove unneeded takeUntilDestroyed
* remove unneeded bitFormButton
* remove unused translations
* lint fix
* refactor assign-collections component to take in a button reference
- This allows consuming components to not have to worry about loading/disabled states
- The base AssignCollections component will change the submit button when supplied
* Implement multi-worker encryption service
* Fix feature flag being flipped and check for empty input earlier
* Add tests
* Small cleanup
* Remove restricted import
* Rename feature flag
* Refactor to BulkEncryptService
* Rename feature flag
* Fix cipher service spec
* Implement browser bulk encryption service
* Un-deprecate browserbulkencryptservice
* Load browser bulk encrypt service on feature flag asynchronously
* Fix bulk encryption service factories
* Deprecate BrowserMultithreadEncryptServiceImplementation
* Copy tests for browser-bulk-encrypt-service-implementation from browser-multithread-encrypt-service-implementation
* Make sure desktop uses non-bulk fallback during feature rollout
* Rename FallbackBulkEncryptService and fix service dependency issue
* Disable bulk encrypt service on mv3
* Change condition order to avoid expensive api call
* Set default hardware concurrency to 1 if not available
* Make getdecrypteditemfromworker private
* Fix cli build
* Add check for key being null
The people screen has a button that can be clicked to open a modal for
inviting new users to an organization. This modal depends on data from
the people list for conditional logic, like whether or not the seat count
cor the organization has been reached. If the modal is opened before the
people list loads these conditions can not process correctly, causing
bugs.
This commit disabled the button until the people list loads to prevent
this kind of behavior.
When removing boostrap it seems the hidden attribute to the file inputs stops working. This implements a "quick" fix by just adding the tw-hidden class.
* Add provider portal members page behind a FF
* Fix reinvite issue
* Import scrolling module
* Add deprecations to old classes
* Move members.component init to constructor
* Rename new-base.people.component to base.members.component
* Hide bulk reinvite when no users can be re-invited on AC members page
* Rename events() to openEventsDialog()
* Fix return type for members component getUsers()
* Make table headers sortable
* Extract row height class to ts file
* Convert open methods to static methods for bulk dialogs
* Rename and refactor member-dialog.component
* Prevent event emission for searchControl and set filter in members component constructor
* use featureFlaggedRoute rather than using FF in components
* Add BaseBulkConfirmComponent for use in both web and bit-web
* Add BaseBulkRemoveComponent for use in both web and bit-web
* Thomas' feedback on base confirm/remove
* Remaining feedback