* Create standalone password-strength-v2 component
* Add deprecation notice to old component
* PM-8645: Use new password-strength component on export
* Remove unneccessary variable
* Remove setPasswordScoreText method
* Rename passwordStrengthResult to passwordStrengthScore and assign proper type
* Add missing types
* Document component Inputs/Outputs
* Add unit tests
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Factor general integration logic out of the forwarder code.
- Integration metadata - information generalized across any integration
- Rpc mechanism - first step towards applying policy to integrations is abstracting their service calls (e.g. static baseUrl)
Email forwarder integrations embedded this metadata. It was extracted to begin the process of making integrations compatible with meta-systems like policy.
This PR consists mostly of interfaces, which are not particularly useful on their own. Examples on how they're used can be found in the readme.
* Add shared two-factor-options component
* Add new refactored two-factor-auth component and totp auth componnet behind feature flag
* Fix default value for twofactorcomponentrefactor featureflag
* Fix username field used for ProtonPass import
ProtonPass has changed their export format and userName is not itemEmail
* Import additional field itemUsername
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* PM-7321 - Temp add input password
* PM-7321 - update input password based on latest PR changes to test.
* PM-7321 - Progress on testing input password component + RegistrationFinishComponent checks
* PM-7321 - more progress on registration finish.
* PM-7321 - Wire up RegistrationFinishRequest model + AccountApiService abstraction + implementation changes for new method.
* PM-7321 - WIP Registration Finish - wiring up request building and API call on submit.
* PM-7321 - WIP registratin finish
* PM-7321 - WIP on creating registration-finish service + web override to add org invite handling
* PM-7321 - (1) Move web-registration-finish svc to web (2) Wire up exports (3) wire up RegistrationFinishComponent to call registration finish service
* PM-7321 - Get CLI building
* PM-7321 - Move all finish registration service and content to registration-finish feature folder.
* PM-7321 - Fix RegistrationFinishService config
* PM-7321 - RegistrationFinishComponent- handlePasswordFormSubmit - error handling WIP
* PM-7321 - InputPasswordComp - Update to accept masterPasswordPolicyOptions as input instead of retrieving it as parent components in different scenarios will need to retrieve the policies differently (e.g., orgInvite token in registration vs direct call via org id post SSO on set password)
* PM-7321 - Registration Finish - Add web specific logic for retrieving master password policies and passing them into the input password component.
* PM-7321 - Registration Start - Send email via query param to registration finish page so it can create masterKey
* PM-7321 - InputPassword comp - (1) Add loading input (2) Add email validation to submit logic.
* PM-7321 - Registration Finish - Add submitting state and pass into input password so that the rest of the registration process keeps the child form disabled.
* PM-7321 - Registration Finish - use validation service for error handling.
* PM-7321 - All register routes must be dynamic and change if the feature flag changes.
* PM-7321 - Test registration finish services.
* PM-7321 - RegisterRouteService - Add comment documenting why the service exists.
* PM-7321 - Add missing input password translations to browser & desktop
* PM-7321 - WebRegistrationFinishSvc - apply PR feedback
* remove infinite scroll, use virtual scroll instead
* use TableDataSource for search
* allow sorting by name
* replacing PlatformUtilsService.showToast with ToastService
* misc FIXMEs
* Add empty state for invoices
* Make cards on create client dialog tabbable
* Add space in $ / month per member
* Mute text, remove (Monthly) and right align menu on clients table
* Made used seats account for all users and fixed column sort for used/remaining
* Resize pricing cards
* Rename assignedSeats to occupiedSeats
* fix: handle undefined value in migration 66
* fix: the if-statement was typo
* feat: duplicate error behavior in fake storage service
* feat: fix all migrations that were setting undefined values
* feat: add test for disabled fingrint in migration 66
* fix: default single user state saving undefined value to state
* revert: awaiting floating promise
gonna fix this in a separate PR
* Revert "feat: fix all migrations that were setting undefined values"
This reverts commit 034713256c.
* feat: automatically convert save to remove
* Revert "fix: default single user state saving undefined value to state"
This reverts commit 6c36da6ba5.
* initial add of card details section
* add card number
* update card brand when the card number changes
* add year and month fields
* add security code field
* hide number and security code by default
* add `id` for all form fields
* update select options to match existing options
* make year input numerical
* only display card details for card ciphers
* use style to set input height
* handle numerical values for year
* update heading when a brand is available
* remove unused ref
* use cardview types for the form
* fix numerical input type
* disable card details when in partial-edit mode
* remove hardcoded height
* update types for formBuilder
* Introduce `verificationType`
* Update template to use `verificationType`
* Implement a path for `verificationType = 'custom'`
* Delete `clientSideOnlyVerification`
* Update `EnrollMasterPasswordResetComponent` to include a server-side hash check
* Better describe the custom scenerio through comments
* Add an example of the custom verficiation scenerio
* Move execution of verification function into try/catch
* Migrate existing uses of `clientSideOnlyVerification`
* Use generic type option instead of casting
* Change "given" to "determined" in a comment
* Move vault-timeout-input to @bitwarden/auth/angular
Move vault-timeout-input.component.ts to @bitwarden/auth/angular/vault-timeout-input
Expose via barrel file
Fix imports on clients
* Add dependencies to package.json
Not necessary right now, but good practice for once we move to building each package independently
* Make VaultTimeoutInputComponent a standalone component
* Update selector to present team ownership
* Use new standalone on web
Move vault-timeout-input.component.html to @bitwarden/auth/angular/vault-timeout-input/
Delete old vault-timeout-input.component on web
Register new component on loose-components-module
Update used selector in preferences.component
* Remove unneeded export of VaultTimeoutInputComponent
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Initial checking of collect many
* should update to better handle parameters
* cleaning up event collection params
* Adding documentation
* Removing commented out code saved for testing
* Adding pr changes and using the account service for event collection user id
* browser main.background event collection service needed the account service
* Add export-web.component
Introduce new export-web component
Delete old component
export.module - With export-web being standalone there's no need for a importModule
Change routing to load new component
* Prepare export.component to receive a orgId via the hosting-component
* Remove unused onSaved as it's replaced by onSuccessfulExport
* Refactor org-vault-export.component
Introduce new org-vault-export.component.html as the old component relied on the markup from password manager
Refactor org-vault-export.component
Retrieve organizationId from Route and pass it into the shared export.component
Ensure when exporting from AC to include all data from the selected org
org-vault-export.module - With the new component being standalone there's no need for a importModule
Change routing to load new org-vault-export component
* PM-8641 - Add success toast to base-export component
This ensures a success toast is shown on all clients consistently
Add missing entries into clients messages.json
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* utilizing locale service in duo
* refactor launchDuoUri method
* Add cookie information back in ext. and desktop to support backwards compatibility
* Update duo-redirect.ts
fixing comment
* finish key rotation distribution and fix legacy user
* add ticket to TODO
* PR feedback: docs and renaming
* fix webauthn tests
* add test for send service
* add await to test
* Migrate all tools owned toasts to use CL ToastService instead of PlatformUtilsService
* Fix test that was missing a mock
* Fix double checking file and file-content selection
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Added new report card and FeatureFlag for MemberAccessReport
* Add new "isEnterpriseOrgGuard"
* Add member access icon
* Show upgrade organization dialog for enterprise on member access report click
* verify member access featureflag on enterprise org guard
* add comment with TODO information for follow up task
* Improved readability, removed path to wrong component and refactored buildReports to use the productType
* added TODO to remove the feature flag on cleanup
* changing ProductType to ProductTierType on isEnterpriseOrgGuard
* setup for InputPasswordComponent and basic story
* add all input fields
* add translated error messages
* update validation
* add password-callout
* update hint text
* use PolicyService in component
* setup SetPasswordComponent
* remove div
* add default button text
* add mocks for InputPassword storybook
* simplify ngOnInit
* change param and use PolicyApiService
* check for breaches and validate against policy
* user toastService
* use useValue for mocks
* hash before emitting
* validation cleanup and use PreloadedEnglishI18nModule
* add ngOnDestroy
* create validateFormInputsDoNotMatch fn
* update validateFormInputsComparison and add deprecation jsdocs
* rename validator fn
* fix bugs in validation fn
* cleanup and re-introduce services/logic
* toggle password inputs together
* update hint help text
* remove SetPassword test
* remove master key creation / hashing
* add translations to browser/desktop
* mock basic password-strength functionality
* add check for controls
* hash before emitting
* type the EventEmitter
* use DEFAULT_KDF_CONFIG
* emit master key
* clarify comment
* update password mininum help text to match org policy requirement
* [PM-8027] Inlin menu appears within input fields that do not relate to user login
* [PM-8027] Inlin menu appears within input fields that do not relate to user login
* [PM-8027] Inlin menu appears within input fields that do not relate to user login
* [PM-8027] Working through logic heuristics that will help us determine login form fields
* [PM-8027] Fixing jest test
* [PM-8027] Reworking inline menu to qualify and setup the listeners for each form field after page deatils have been collected
* [PM-8027] Cleaning up implementation details
* [PM-8027] Cleaning up implementation details
* [PM-8027] Cleaning up implementation details
* [PM-8027] Updating update of page details after mutation to act on an idle moment in the browser
* [PM-8027] Updating how we guard against excessive getPageDetails calls
* [PM-8027] Refining how we identify a username login form field
* [PM-8027] Refining how we identify a password login form field
* [PM-8027] Refining how we identify a username login form field
* [PM-8027] Fixing jest tests for the overlay
* [PM-8027] Fixing jest tests for the collectPageDetails method
* [PM-8027] Removing unnecessary code
* [PM-8027] Removing unnecessary code
* [PM-8027] Adding jest test to validate new behavior
* [PM-8027] Working through jest tests for the InlineMenuFieldQualificationService
* [PM-8027] Working through jest tests for the InlineMenuFieldQualificationService
* [PM-8027] Working through jest tests for the InlineMenuFieldQualificationService
* [PM-8027] Working through jest tests for the InlineMenuFieldQualificationService
* [PM-8027] Working through jest tests for the InlineMenuFieldQualificationService
* [PM-8027] Finalization of Jest test for the implementation
* [PM-8027] Fixing a typo
* [PM-8027] Incorporating a feature flag to allow us to fallback to the basic inline menu fielld qualification method if needed
* [PM-8027] Incorporating a feature flag to allow us to fallback to the basic inline menu fielld qualification method if needed
* [PM-8027] Fixing issue with username fields not qualifyng as a valid login field if a viewable password field is not present
* [PM-8027] Fixing an issue where a field that has no form and no visible password fields should be qualified if a single password field exists in the page
* [PM-8027] Fixing an issue where a field that has no form and no visible password fields should be qualified if a single password field exists in the page
* [PM-8869] Autofill features broken on Safari
* [PM-8869] Autofill features broken on Safari
* [PM-5189] Fixing an issue found within Safari
* [PM-8027] Reverting flag from a fallback flag to an enhancement feature flag
* [PM-8027] Fixing jest tests
* PM-7324 - Register new registration start comp at signup route on web
* PM-7324 - Add registerSendVerificationEmail logic in API service layer.
* PM-7324 - Update registration start comp to actually send information to API and trigger email.
* PM-7324 - progress on opt in for marketing emails redesign.
* PM-7324 - Add feature flag and feature flag guard to sign up route.
* PM-7324 - RegistrationEnvSelector - emit initial value
* PM-7324 - Registration Start comp - wire up setReceiveMarketingEmailsByRegion logic.
* PM-7324 - Registration start html - use proper link for email pref management.
* PM-7324 - Translate text
* PM-7324 - Design pass
* PM-7324 - design pass v2
* PM-7324 - Update Tailwind config to add availability of anon layout to desktop and browser extension
* PM-7324 - Desktop - AppRoutingModule - Add new signup route protected by the email verification feature flag.
* PM-7324 - BrowserExtension - AppRoutingModule - Add signup route protected by feature flag
* PM-7324 - Feature flag all register page navigations to redirect users to the new signup page.
* PM-7324 - Update AnonLayoutWrapperComponent constructor logic to avoid passing undefined values into I18nService.t method
* PM-7324 - Accept org invite web comp - adjust register url and qParams
* PM-7324 - Add AnonLayoutWrapperData to desktop & browser since we don't need titleId.
* PM-7324 - Revert anon layout wrapper comp changes as they were made separately and merged to main.
* PM-7234 - Fix registration start component so the login route works for the browser extension.
* PM-7324 - Registration start story now building again + fix storybook warning around BrowserAnimationsModule
* PM-7324 - Registration Start - add missing tw-text-main to fix dark mode rendering.
* PM-7324 - Update storybook docs
* PM-7324 - Get stub of registration finish component so that the verify email has something to land on.
* PM-7324 - Registration start - receive marketing materials should never be required.
* PM-7324 - Add finish signup route + required translations to desktop & browser.
* PM-7324 - AnonLayoutWrapperComponent - Resolve issues where navigating to a sibling anonymous route wouldn't update the AnonLayoutWrapperData.
* PM-7324 - Remove unnecessary array
* PM-7324 - Per PR feedback, improve setReceiveMarketingEmailsByRegion
* PM-7324 - Per PR feedback, inject login routes via route data
* PM-7324 - Document methods in account api service
* PM-7324 - PR feedback - jsdoc tweaks
* Refactor list organizations command to use organizationService.memberOrganizations$
* Deprecate OrganizationService.getAll method and update CLI get command to use the organizations observable
* [AC-2763] Do not restrict providers if they are also a member of the organization
* [AC-2763] Reduce branching complexity
* [AC-2763] Remove explicit restrict provider access checks in Vault
We can safely fall back organization helpers for cipher access as it already accounts for provider users who are members.
* [PM-8639] Add data-testid attribute for test automation
* [PM-8669] Add autofill aria label
* [PM-8674] Show autofill menu options for card/identities when not in the autofill suggestion list
* [PM-8635] Hide menu items when copy cipher field directive is disabled
* [PM-8636] Disable copy menu dropdown when no items available to copy
* [CL-309] Add title override to bitBadge
* [PM-8669] Update menu-item directive disabled input
* [PM-7683] Fix race condition for remainingCiphers$
* [PM-7683] Use strict equality check
* Send current Org user Id on collection creation through CLI
* Run npm prettier
* Add organization services to CreateCommand creation on ServeCommand
* Refactor organization data models to include organizationUserId property
* Refactor create command to utilize the OrganizationUserId on the Organization object
* Add users to collection request in edit command
* fix: organization.data test update to correct deserialization, refs AC-2286
---------
Co-authored-by: Vincent Salucci <vincesalucci21@gmail.com>
* Require lifetime specification of user-scoped data
* Decouple tests for different classes
This coupling assumed constant interfaces with classes that isn't a guarantee and requires significant acrobatics to make types work, now that key definitions are not a consistent base.
* Fix types
* Clone Initial Data In `runMigrator`
- When using test cases, mutating the input data causes problems.
* Migrate `minimizeOnCopy` & `browserIntegrationEnabled`
* Update From Main
* Move Fingerprint Setting
- No Migration Yet
* Add Fingerprint to Migrations
* Convert Messaging to `async`
* Switch to calling `Boolean` for Map Function
* Catch Errors
* Remove LogService
* Do not update appId if it is not null
* Prefer linear transformations to side-effect-based changes
This leaves us open to repeat emits due to updates, but distinct until changed stops those.
Tracker improvements are due to passed in observables with replay causing immediate emits when `expectingEmission`s. This converts to a cold observable that only emits when the tracked observable does _after_ subscribing.
* Prefer while
* PR review
* [PM-7683] Add fullAddressForCopy helper to identity.view
* [PM-7683] Introduce CopyCipherFieldService to the Vault library
- A new CopyCipherFieldService that can be used to copy a cipher's field to the user clipboard
- A new appCopyField directive to make it easy to copy a cipher's fields in templates
- Tests for the CopyCipherFieldService
* [PM-7683] Introduce item-copy-actions.component
* [PM-7683] Fix username value in copy cipher directive
* [PM-7683] Add title to View item link
* [PM-8456] Introduce initial item-more-options.component
* [PM-8456] Add logic to show/hide login menu options
* [PM-8456] Implement favorite/unfavorite menu option
* [PM-8456] Implement clone menu option
* [PM-8456] Hide launch website instead of disabling it
* [PM-8456] Ensure cipherList observable updates on cipher changes
* [PM-7683] Move disabled logic into own method
* [PM-8456] Cleanup spec file to use Angular testbed
* [PM-8456] Fix more options tooltip
* [PM-8485] Introduce new PopupCipherView
* [PM-8485] Use new PopupCipherView in items service
* [PM-8485] Add org icon for items that belong to an organization
* [PM-8485] Fix tests
* [PM-8485] Remove share operator from cipherViews$
* [PM-7683] Add fullAddressForCopy helper to identity.view
* [PM-7683] Introduce CopyCipherFieldService to the Vault library
- A new CopyCipherFieldService that can be used to copy a cipher's field to the user clipboard
- A new appCopyField directive to make it easy to copy a cipher's fields in templates
- Tests for the CopyCipherFieldService
* [PM-7683] Introduce item-copy-actions.component
* [PM-7683] Fix username value in copy cipher directive
* [PM-7683] Add title to View item link
* [PM-8456] Introduce initial item-more-options.component
* [PM-8456] Add logic to show/hide login menu options
* [PM-8456] Implement favorite/unfavorite menu option
* [PM-8456] Implement clone menu option
* [PM-8456] Hide launch website instead of disabling it
* [PM-8456] Ensure cipherList observable updates on cipher changes
* [PM-7683] Move disabled logic into own method
* [PM-8456] Cleanup spec file to use Angular testbed
* [PM-8456] Fix more options tooltip
* [PM-7683] Add fullAddressForCopy helper to identity.view
* [PM-7683] Introduce CopyCipherFieldService to the Vault library
- A new CopyCipherFieldService that can be used to copy a cipher's field to the user clipboard
- A new appCopyField directive to make it easy to copy a cipher's fields in templates
- Tests for the CopyCipherFieldService
* [PM-7683] Introduce item-copy-actions.component
* [PM-7683] Fix username value in copy cipher directive
* [PM-7683] Add title to View item link
* [PM-7683] Move disabled logic into own method
Utilizing resources based on thread availability improves performance vs fixed threading.
The linked issue for CI crashes has not been closed. Once this is solves, `runInBand` may improves performance in CI.
* PM-8367 - WIP - initial comp creation
* PM-8367 - Majority of new registration self hosted env config dialog working
* PM-8367 - RegistrationEnvSelectorComponent - add method handleSelfHostedEnvConfigDialogResult and add toast for happy path.
* PM-8367 - Add validation TODO
* PM-8367 - RegistrationSelfHostedEnvConfigDialogComponent - Add validator
* PM-8367 - RegEnvSelector - Only show self hosted if the client is browser or desktop since we will be using the selector on web as well.
* PM-8367 - Registration start comp - add env selector
* PM-8367 - Registration start - add proper import for standalone comps.
* PM-8367 - Registration Start - get storybook fixed with registration env selector
* PM-8367 - Add self hosted server to web translations only for storybook
* PM-8367 - Add more storybook examples and update docs (WIP - need to test self hosted selection)
* PM-8367 - Registration Start - update stories
* PM-8367 - Env Selector now emits selected region so that parent comps can listen to it if needed.
* PM-8367 - Registration Start - wire up handler for selectedRegionChange so that the parent comp can successfully track isSelfHost and hide / show the terms / privacy policy checkbox
* PM-8367 - TODO cleanup
* PM-8367 - Registration start docs - stage gate is two words.
* PM-8367 - Per working session with Will, move top level provided services to app level instead of module level to solve dialog null injector errors.
* PM-8367 - Storybook working for self hosted env dialog
* PM-8367 - Add dialog scroll feature to bitDialog and implement in self hosted env dialog.
* PM-8367 - Revert bit dialog changes and scroll implementation.
* PM-8367 - Tweak registration start docs
* PM-8367 - Remove unused changeDetectorRef
* PM-8367 - Add docs per PR feedback
* PM-7392 - EncryptSvc - add new method for detecting if a simple string is an enc string.
* PM-7392 - TokenSvc - add checks when setting and retrieving the access token to improve handling around the access token encryption.
* PM-7392 - (1) Clean up token svc (2) export access token key type for use in tests.
* PM-7392 - Get token svc tests passing; WIP more tests to come for new scenarios.
* PM-7392 - Access token secure storage to disk fallback WIP but mostly functional besides weird logout behavior.
* PM-7392 - Clean up unnecessary comment
* PM-7392 - TokenSvc - refresh token disk storage fallback
* PM-7392 - Fix token service tests in prep for adding tests for new scenarios.
* PM-7392 - TokenSvc tests - Test new setRefreshToken scenarios
* PM-7392 - TokenSvc - getRefreshToken should return null or a value - not undefined.
* PM-7392 - Fix test name.
* PM-7392 - TokenSvc tests - clean up test names that reference removed refresh token migrated flag.
* PM-7392 - getRefreshToken tests done.
* PM-7392 - Fix error quote
* PM-7392 - TokenSvc tests - setAccessToken new scenarios tested.
* PM-7392 - TokenSvc - getAccessToken - if secure storage errors add error to log.
* PM-7392 - TokenSvc tests - getAccessToken - all new scenarios tested
* PM-7392 - EncryptSvc - test new stringIsEncString method
* PM-7392 - Main.ts - fix circ dep issue.
* PM-7392 - Main.ts - remove comment.
* PM-7392 - Don't re-invent the wheel and simply use existing isSerializedEncString static method.
* PM-7392 - Enc String - (1) Add handling for Nan in parseEncryptedString (2) Added null handling to isSerializedEncString. (3) Plan to remove encrypt service implementation
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* PM-7392 - Remove encrypt service method
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* PM-7392 - Actually fix circ dep issues with Justin. Ty!
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* PM-7392 - TokenSvc - update to use EncString instead of EncryptSvc + fix tests.
* PM-7392 - TokenSvc - (1) Remove test code (2) Refactor decryptAccessToken method to accept access token key and error on failure to pass required decryption key to method.
* PM-7392 - Per PR feedback and discussion, do not log the user out if hte refresh token cannot be found. This will allow users to continue to use the app until their access token expires and we will error on trying to refresh it. The app will then still work on a fresh login for 55 min.
* PM-7392 - API service - update doAuthRefresh error to clarify which token cannot be refreshed.
* PM-7392 - Fix SetRefreshToken case where a null input would incorrectly trigger a fallback to disk.
* PM-7392 - If the access token cannot be refreshed due to a missing refresh token or API keys, then surface an error to the user and log it so it isn't a silent failure + we get a log.
* PM-7392 - Fix CLI build errors
* PM-7392 - Per PR feedback, add missing tests (thank you Jake for writing these!)
Co-authored-by: Jake Fink <jfink@bitwarden.com>
* PM-7392 - Per PR feedback, update incorrect comment from 3 releases to 3 months.
* PM-7392 - Per PR feedback, remove links.
* PM-7392 - Per PR feedback, move tests to existing describe.
* PM-7392 - Per PR feedback, adjust all test names to match naming convention.
* PM-7392 - ApiService - refreshIdentityToken - log error before swallowing it so we have a record of it.
* PM-7392 - Fix copy for errorRefreshingAccessToken
* PM-7392 - Per PR feedback, move error handling toast responsibility to client specific app component logic reached via messaging.
* PM-7392 - Swap logout reason from enum to type.
* PM-7392 - ApiService - Stop using messaging to trigger toast to let user know about refresh access token errors; replace with client specific callback logic.
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* PM-7392 - Per PR feedback, adjust enc string changes and tests.
* PM-7392 - Rename file to be type from enum
* PM-7392 - ToastService - we need to await the activeToast.onHidden observable so return the activeToast from the showToast.
* PM-7392 - Desktop AppComp - cleanup messaging
* PM-7392 - Move Logout reason custom type to auth/common
* PM-7392 - WIP - Enhancing logout callback to consider the logout reason + move show toast logic into logout callback
* PM-7392 - Logout callback should simply pass along the LogoutReason instead of handling it - let each client's message listener handle it.
* PM-7392 - More replacements of expired with logoutReason
* PM-7392 - More expired to logoutReason replacements
* PM-7392 - Build new handlers for displaying the logout reason for desktop & web.
* PM-7392 - Revert ToastService changes
* PM-7392 - TokenSvc - Replace messageSender with logout callback per PR feedback.
* PM-7392 - Desktop App comp - replace toast usage with simple dialog to guarantee users will see the reason for them being logged out.
* PM-7392 - Web app comp - fix issue
* PM-7392 - Desktop App comp - don't show cancel btn on simple dialogs.
* PM-7392 - Desktop App comp - Don't open n simple dialogs.
* PM-7392 - Fix browser build
* PM-7392 - Remove logout reason from CLI as each logout call handles messaging on its own.
* PM-7392 - Previously, if a security stamp was invalid, the session was marked as expired. Restore that functionality.
* PM-7392 - Update sync service logoutCallback to include optional user id.
* PM-7392 - Clean up web app comp
* PM-7392 - Web - app comp - only handle actually possible web logout scenarios.
* PM-7392 - Browser Popup app comp - restore done logging out message functionality + add new default logout message
* PM-7392 - Add optional user id to logout callbacks.
* PM-7392 - Main.background.ts - add clarifying comment.
* PM-7392 - Per feedback, use danger simple dialog type for error.
* PM-7392 - Browser Popup - add comment clarifying expectation of seeing toasts.
* PM-7392 - Consolidate invalidSecurityStamp error handling
* PM-7392 - Per PR feedback, REFRESH_ACCESS_TOKEN_ERROR_CALLBACK can be completely sync. + Refactor to method in main.background.
* PM-7392 - Per PR feedback, use a named callback for refreshAccessTokenErrorCallback in CLI
* PM-7392 - Add TODO
* PM-7392 - Re-apply bw.ts changes to new service-container.
* PM-7392 - TokenSvc - tweak error message.
* PM-7392 - Fix test
* PM-7392 - Clean up merge conflict where I duplicated dependencies.
* PM-7392 - Per discussion with product, change default logout toast to be info
* PM-7392 - After merge, add new logout reason to sync service.
* PM-7392 - Remove default logout message per discussion with product since it isn't really visible on desktop or browser.
* PM-7392 - address PR feedback.
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Jake Fink <jfink@bitwarden.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Added select-payment-method.component in shared lib
Because we're going to be implementing the same functionality for providers and orgs/users, I wanted to start moving some of this shared functionality into libs so it can be accessed in both web and bit-web. Additionally, the Stripe and Braintree functionality has been moved into their own services for more central management.
* Added generalized manage-tax-information component to shared lib
* Added generalized add-account-credit-dialog component to shared libs
* Added generalized verify-bank-account component to shared libs
* Added dialog for selection of provider payment method
* Added provider-payment-method component
* Added provider-payment-method component to provider layout
* add initial type filter
- use `bit-select` while the chip component is being developed
* get cipherTypes$ from service
- integrate with user settings
* initial add of folder selection
* initial add of vault selection
* initial add of collections filter
* update `VaultPopupListFilterService` to `VaultPopupListFiltersService`
* integrate hasFilterApplied$
* intermediate commit of integration to the filters component
* do not return the tree when the value is null
* return null when the updated option is null
* update vault-popup-list to conform to the chip select structure
* integration of bit-chip-select
* move "no folder" option to the end of the list
* show danger icon for deactivated organizations
* show deactivated warning when the filtered org is disabled
* update documentation
* use pascal case for constants
* store filter values as full objects rather than just id
- This allows secondary logic to be applied when filters are selected
* move filter form into service to be the source of truth
* fix tests after adding "jest-preset-angular/setup-jest"
* remove logic to have dynamic cipher type filters
* use ProductType enum
* invert conditional for less nesting
* prefer `decryptedCollections$` over getAllDecrypted
* update comments
* use a `filterFunction$` observable rather than having to pass filters back to the service
* fix children testing
* remove check for no folder
* reset filter form when filter component is destroyed
* add takeUntilDestroyed for organization valueChanges
* allow takeUntilDestroyed to use internal destroy ref
- The associated unit tests needed to be configured with TestBed rather than just `new Service()` for this to work
* use controls object for type safety
* PM-8358 - UserVerificatonFormInput - fix incorrect init logic. We needed to execute the processSecretChanges logic to convert null into { type: 0, secret: null } (VerificationWithSecret) for all non-biometric verification flows. .
* PM-8358 - UserVerificationService - verifyUser(...) - throw error if called with null. It should only happen if a dev makes a mistake in theory.
* Add Helper For Preparing a Record For Use in `forkJoin`
* Update & Test CryptoService Changes
* Delete Unused Code
* Update DeviceTrustService
* Update CipherService
* Make `userPublicKey$` Public
* Rename convertValues File
* Update libs/common/src/platform/abstractions/crypto.service.ts
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
* Add `convertValues` Tests
* Add Doc Comments
* Convert to `function`'s
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
* Fix Test Typos
* Add param doc
* Update Test Name
* Add `@throws` Docs
---------
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
* Create and register @bitwarden/generator-core
- Create libs/tools/generator/core
- Register new library within tsconfigs
- Register new library within eslint.configs
* Create and register @bitwarden/generator-extensions
- Create libs/tools/generator/extensions
- Register new library within tsconfigs
- Register new library within eslint.configs
* Create and register @bitwarden/generator-components
- Create libs/tools/generator/components
- Register new library within tsconfigs
- Register new library within eslint.configs
* Update libs/tools/generator/components/package.json
Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com>
* Update libs/tools/generator/extensions/package.json
Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com>
* Add empty barrel files for new libs
* Fix extension of test.environment
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com>
Fastmail API returns and error when passed a null value in forDomain.
Empty string is the preferred blank option.
Co-authored-by: yara <ybeadenkopf@fastmailteam.com>
* use deep linked url for org invite instead of separate state
* remove organization invite state & fix tests
* clear login redirect for SSO JIT users since they are accepted when setting MP
* create accept org invite service and consolidate components in module
* finish switch to accept org invite service
* move logic to accept org service
* the rest of the owl
* clear org invite along with deep linked route
* pr feedback
* fix test and add error to catch null invite
* pr feedback
* clear stored invite if it doesn't match provided one
* add hostname to footer via env service
* add logic for showing/hiding environment
* add docs
* add web env-selector
* refactor to use one slot for env-selector
* add storybook docs
* add env hostname to stories
* remove sample route
* Change `object` to `Record<string, unknown>`
* Change `object` to `Record<string, unknown>` Pt. 2
* Update ForegroundSyncService
- Manage finish message in the listener to more gaurantee a message back
- Make the timeout much longer
- Allow it to throw if the background sync service threw
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* Create the send-ui library package
Create folder
Create package.json
Create jest config
Create tsconfig and tsconfig.spec.json
Create README
Add empty barrel file for exporting future members
* Register @bitwarden/send-ui with all clients and libs
* Register with eslint
* Fix linting issue with README
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Make export.component a standalone component
Fix lint issue with takeUntil
* Create shareable export.component.html
Copied existing export.component.html as that has already been migrated to use the component library components
Strip the markup from the dialog and the submit-button
* Add outputs to inform the hosting component about certain events (submit, loading, disabled)
Emit successful Export
Expose a form-id so the hosting component can bind to this form
Fix name of output
* Ensure that the file gets prefixed with `org`when exporting from an organization
* When exporting from an organization ensure Organization_ClientExportedVault is collected
* Add comments to the components outputs
* Better way of addressing the previously fixed lint issue
* Fix disabling the form not emitting the formDisabled state
* Add better comments to Outputs based on PR feedback
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* PM-5086 - WIP start on registration start component
* PM-5086 - more WIP progress on registration start comp
* PM-5086 - Setup secondary component
* PM-5086 - (1) Validation working (2) States implemented (3) 2nd state for check email mostly completed except for correct icon
* PM-5086 - Registration Start - check email state - update icon to be correct from figma.
* PM-5086 - Refactor self hosted conditional + actually hide the checkbox if it is self hosted.
* PM-5086 - WIP good progress on getting browser & desktop creating account on logic working.
* PM-5086 - Accessibility pass + WIP on region selector
* PM-5086 - Accessibility pass with Danielle
* PM-5086 - Migrate env selector logic to own component.
* PM-5086 - Update AnonLayoutWrapperComp import
* PM-5086 - Remove unncessary focus.
* PM-5086 - WIP first draft of registration env selector; name might change to differentiate it from existing env selector.
* PM-5086 - Rename env selector to be more clear and use registration-env-selector instead.
* PM-5086 - (1) Export registration env selector (2) Change comp name not just file name.
* PM-5086 - Create new registration page stub
* PM-5086 - Fix build issue where select module was missing from new registration env selector.
* PM-5086 - Registration --> registration start.
* PM-5086 - Add missing translation from registration-start-secondary-component to desktop & browser.
* PM-5086 - Add missing translations
* PM-5086 - Registration Env Selector - forms require form groups. duh.
* PM-5086 - Registration Env Selector - working now.
* PM-5086 - Registration Start desktop mostly working with env selector issues.
* PM-5086 - Registration start - get self hosted env dialog to close on close click. Backdrop click doesn't work but escape does still.
* PM-5086 - TODO: figure out if there is a better way to get the dialog to close.
* PM-5086 - Registration start - get goBack working to properly re-show env selector
* PM-5086 - Self Hosted Env Comp - re-emit current env on close so that select based env selectors can reset
* PM-5086 - RegistrationEnvSelector - Refactor init logic to also listen for env updates so that the user's choices on the self hosted settings dialog get communicated to this comp
* PM-5086 - Registration Start Desktop - Don't allow users to close dialog via escape as we need them to either close or save to get the env service to set the env correctly.
* PM-5086 - Browser Registration Start Page stub
* PM-5086 - Registration Start comp - storybook added
* PM-5086 - Remove links to start-registration as we aren't ready to implement that yet.
* PM-5086 - Revert environment comp changes.
* PM-5086 - Delete registration start pages.
* PM-5086 - Test removing PreloadedEnglishI18nModule to see if it fixes test failures
* PM-5086 - Try to resolve issues w/ importing PreloadedEnglishI18nModule into RegistrationStartComponent storybook stories file.
* PM-5086 - Allow translations to be imported for all libs.
* PM-5086 - Remove comment from JSON
* PM-5086 - TODO cleanup
* PM-5086 - Per PR feedback, fix display issues by using correct classes.
* PM-5086 - Fix SVG per PR feedback
* PM-5086 - Remove unnecessary methods
* PM-5086 - RegistrationEnvSelectorComponent - per PR feedback, properly type null in form group
* [AC-2302] Move organization-auth-request.service to bit-common folder
* [AC-2302] Rename organization-auth-request.service to organization-auth-request-api.service
* [AC-2302] Move logic from component to organization-auth-request.service
* [AC-2302] Fix import path in OrganizationAuthRequestService
* [AC-2302] Move imports to OrganizationsModule and delete unused CoreOrganizationModule
* [AC-2302] Move the call to get userResetPasswordDetails into OrganizationAuthRequestService
* [AC-2302] Remove @Injectable() and manually configure dependencies
* [AC-2302] Add OrganizationAuthRequestService unit tests first draft
* [AC-2302] Refactor device-approvals.component.ts to remove unused imports
* [AC-2302] Set up jest on bit-common and add unit tests for OrganizationAuthRequestService
* [AC-2302] Add bit-common to jest.config.js
* [AC-2302] Update organizations.module.ts to include safeProviders declared in variable
* [AC-2302] Remove services and views folders from bit-common
* [AC-2302] Define path mapping
* Adjust an import path
The import path of `PendingAuthRequestView` in
`OrganizationAuthRequestApiService` was pointing to the wrong place. I
think this file was just recently moved, and the import didn't get
updated.
* Get paths working
* Fix import
* Update jest config to use ts-jest adn jsdom
* Copy-paste path mappings from bit-web
* Remove unnecessary test setup file
* Undo unnecessary change
* Fix remaining path mappings
* Remove Bitwarden License mapping from OSS code
* Fix bit-web so it uses its own tsconfig
* Fix import path
* Remove web-bit entrypoint from OSS tsconfig
* Make DeviceApprovalsComponent standalone
* Remove organization-auth-request-api.service export
* Remove OrganizationsRoutingModule from DeviceApprovalsComponent imports
* Remove CoreOrganizationModule from OrganizationsModule imports
* Remove NoItemsModule from OrganizationsModule imports
* Use ApiService from JslibServicesModule
* Update providers in device-approvals.component.ts
* Add method to retrieve reset password details for multiple organization users
* Add organizationUserId property to OrganizationUserResetPasswordDetailsResponse class
* Rename ResetPasswordDetails to AccountRecoveryDetails
---------
Co-authored-by: Addison Beck <hello@addisonbeck.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* [PM-5295] Improve autofill collection of page details performance
* [PM-5295] Reworking implementation to leverage requestIdleCallback instead of requestAnimationFrame
* [PM-5295] Reworking implementation to leverage requestIdleCallback instead of requestAnimationFrame
* [PM-5295] Incorporating documentation for added methods
* [PM-5295] Reworking how we handle collection of shadowRoot elements
* [PM-5295] Fixing jest tests relating to the defined pseudo selector
* [PM-5295] Fixing jest tests relating to the defined pseudo selector
* [PM-5295] Refactoring
* [PM-5295] Refactoring
* [PM-5295] Refactoring
* [PM-5295] Starting the work to set up the tree walker strategy under a feature flag
* [PM-5295] Incorporating methodology for triggering a fallback to the TreeWalker API if issues arise with the deepQuery approach
* [PM-5295] Fixing jest test
* [AC-2603] Add unmanaged property to CollectionAdminView and response models
* [AC-2603] Cleanup CollectionViews
- Remove getters that have been replaced with Unmanaged property
- Remove AddAccess that is also being replaced
- Add canEditUnmanagedCollections() helper to organization
* [AC-2603] Replace old AddAccess logic with Unmanaged flag
* [AC-2603] Fix failing test
* [AC-2603] Ensure Add Access badge/toggle only shows when V1 flag is enabled
* [AC-2603] Undo change to canEditUserAccess and canEditGroupAccess
Custom users should not get access to an unmanaged collection with only Manage Groups and Manage User permissions. That is still reserved for admin/owners and EditAnyCollection custom users.
* add verify org delete page
* PR feedback from thomas
* use abstraction
* Apply suggestions from code review
Co-authored-by: Rui Tomé <108268980+r-tome@users.noreply.github.com>
* delete org copy
* Move verify-recover-delete-org component to admin-console/organizations/manage folder and update routing
* [PM-7004] Add async/await to ngOnInit in verify-recover-delete-org.component.ts
* [PM-7004] Update deleteRecoverOrgConfirmDesc message in messages.json
* [PM-7004] Add warning message for deleting organization's active user accounts
* [PM-7004] Update to standalone component
* [PM-7004] Update delete organization warning message
* [PM-7004] Refactor delete organization form
* [PM-7004] Delete unused selector in verify-recover-delete-org.component.ts
* [PM-7004] Rename recoverDeleteToken method in verify-recover-delete-org.component.ts to deleteUsingToken
* [PM-7004] Update formGroup initialization in verify-recover-delete-org.component.ts
* [PM-7004] Delete formGroup initialization in verify-recover-delete-org.component.ts
* [PM-7004] Remove try/catch from submit method in verify-recover-delete-org.component.ts
* [PM-7004] Update submit button type in verify-recover-delete-org.component.html
* [PM-7004] Remove manual loading state in verify-recover-delete-org.component
* [PM-7004] Remove unnecessary span in verify-recover-delete-org.component.html
* [PM-7004] Update button styles in verify-recover-delete-org.component.html
* [PM-7004] Add back in the manual loading state in verify-recover-delete-org.component
* [PM-7004] Update button type and class in verify-recover-delete-org.component.html
* [PM-7004] Replace bootstrap classes with equivalent tailwind classes
* [PM-7004] Replace bootstrap classes with Tailwind in verify-recover-delete-org.component.html
---------
Co-authored-by: Rui Tomé <108268980+r-tome@users.noreply.github.com>
Co-authored-by: Rui Tome <rtome@bitwarden.com>
magical black-box key retrieval is slow, due to needing to repeatedly resolve (and potentially decrypt) keys. Doing the work up front is both more explicit and much faster.
It would be preferable to move OrganizationId to an opaque type in the models, but that has rippling effects all over the place and ultimately is stopped by vault filtering on strings rather than ids, but still calling the property `organizationId`, we need to fix that first.
* [PM-6825] Add temporary vault page header
* [PM-6825] Expose cipherViews$ observable
* [PM-6825] Refactor getAllDecryptedForUrl to expose filter functionality for reuse
* [PM-6825] Introduce VaultPopupItemsService
* [PM-6825] Introduce initial VaultListItem and VaultListItemsContainer components
* [PM-6825] Add VaultListItems to VaultV2 component
* [PM-6825] Introduce autofill-vault-list-items.component to encapsulate autofill logic
* [PM-6825] Add temporary Vault icon
* [PM-6825] Add empty and no results states to Vault tab
* [PM-6825] Add unit tests for vault popup items service
* [PM-6825] Negate noFilteredResults placeholder
* [PM-6825] Cleanup new Vault components
* [PM-6825] Move new components into its own module
* [PM-6825] Fix missing button type
* [PM-6825] Add booleanAttribute to showAutofill input
* [PM-6825] Replace empty refresh BehaviorSubject with Subject
* [PM-6825] Combine *ngIfs for vault list items container
* [PM-6825] Use popup-section-header component
* [PM-6825] Use small variant for icon buttons
* [PM-6825] Use anchor tag for vault items
* [PM-6825] Consolidate vault-list-items-container to include list item component functionality directly
* [PM-6825] Add Tailwind classes to new Vault icon
* [PM-6825] Remove temporary header comment
* [PM-6825] Fix auto fill suggestion font size and padding
* [PM-6825] Use tailwind for vault icon styling
* [PM-6825] Add libs/angular to tailwind.config content
* [PM-6825] Cleanup missing i18n
* [PM-6825] Make VaultV2 standalone and cleanup Browser App module
* [PM-6825] Use explicit type annotation
* [PM-6825] Use property binding instead of interpolation