1
0
mirror of https://github.com/bitwarden/server synced 2026-01-27 14:53:21 +00:00
Commit Graph

6648 Commits

Author SHA1 Message Date
Cy Okeke
0992d541ae Add unit testing and logs 2026-01-22 10:42:31 +01:00
cyprain-okeke
625038b8f8 Merge branch 'main' into billing/pm-30908/correct-premium-subscription-status-handling 2026-01-22 09:56:30 +01:00
Alex Morask
75a857055e [PM-30697] [PM-30698] Renewal email copy updates (#6875)
* feat(families-renewal): Update copy

* feat(premium-renewal): Add new var, update copy
2026-01-21 11:52:36 -06:00
Cy Okeke
a90b9ed183 failing test has been removed 2026-01-21 15:12:41 +01:00
cyprain-okeke
0e094f76fe Merge branch 'main' into billing/pm-30908/correct-premium-subscription-status-handling 2026-01-21 12:49:03 +01:00
Rui Tomé
7fb2822e05 [PM-28023] Fix restoring revoked invited users in Free Organizations (#6861)
* Fix null reference when restoring invited users in Free orgs

Add null check before querying for other free org ownership. Invited
users don't have a UserId yet, causing NullReferenceException.

* Add regression test for restoring revoked invited users with null UserId.
2026-01-21 11:27:24 +00:00
Cy Okeke
2122678664 Implement the correct changes 2026-01-21 12:13:03 +01:00
Alex Morask
439485fc16 Update renewal email copy (#6862) 2026-01-20 09:29:49 -06:00
Alex Morask
2e4dd061e3 [PM-30855] Pay prorated storage adjustment immediately with Braintree for Premium PayPal users (#6850)
* fix: Pay prorated storage invoice immediately with Braintree for PayPal users

* Run dotnet format
2026-01-20 09:18:27 -06:00
Todd Martin
c37412bacb chore(flags): Remove pm-1632-redirect-on-sso-required feature flag
* Remove feature flag.

* Update test title.

* Fixed some test failures.

* Fixed tests

* Removed method that's no longer used.

* Removed unneeded directive.
2026-01-20 10:03:33 -05:00
Thomas Rittson
ad19efcff7 [PM-22236] Fix invited accounts stuck in intermediate claimed status (#6810)
* Exclude invited users from claimed domain checks.
  These users should be excluded by the JOIN on
  UserId, but it's a known issue that some invited
  users have this FK set.
2026-01-17 10:47:21 +10:00
Stephon Brown
8d30fbcc8a Billing/pm 30882/defect pm coupon removed on upgrade (#6863)
* fix(billing): update coupon check logic

* tests(billing): update tests and add plan check test
2026-01-16 18:13:57 -05:00
Justin Baur
aa33a67aee [PM-30858] Fix excessive logs (#6860)
* Add tests showing issue & workaround

- `AddSerilogFileLogging_LegacyConfig_InfoLogs_DoNotFillUpFile` fails
- `AddSerilogFileLogging_LegacyConfig_WithLevelCustomization_InfoLogs_DoNotFillUpFile` fails
- `AddSerilogFileLogging_NewConfig_InfoLogs_DoNotFillUpFile` fails
- `AddSerilogFileLogging_NewConfig_WithLevelCustomization_InfoLogs_DoNotFillUpFile` works

* Allow customization of LogLevel with legacy path format config

* Lower default logging levels

* Delete tests now that log levels have been customized
2026-01-16 10:33:17 -05:00
Thomas Rittson
ebb0712e33 [PM-28555] Add idempotent sproc to create My Items collections (#6801)
* Add sproc to create multiple default collections. 
  SqlBulkCopy implementation is overkill for most cases.
  This provides a lighter weight sproc implementation for smaller
  data sets.
* DRY up collection arrangement
* DRY up tests because bulk and non-bulk share same behavior
* use EF native AddRange instead of bulk insert, because
  we expect smaller data sizes on self-host
2026-01-15 22:49:25 +00:00
mkincaid-bw
51d90cce3d Add Entity Framework migration validation to verify_migrations script (#6817)
* Add Entity Framework migration validation to verify_migrations script

Enhances dev/verify_migrations.ps1 to validate EF migration files in addition to SQL migrations. The script now validates migrations in util/MySqlMigrations, util/PostgresMigrations, and util/SqliteMigrations directories.

Validation includes:
- Correct naming format (YYYYMMDDHHMMSS_Description.cs)
- Both .cs and .Designer.cs files exist as pairs
- Chronological ordering of timestamps
- Excludes DatabaseContextModelSnapshot.cs files

The script provides comprehensive reporting for all migration types with a summary showing which validations passed or failed.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Fix: Validate all EF migration files instead of silently ignoring malformed names

Previously, migration files that didn't match the expected pattern were silently
ignored during validation. This could allow incorrectly named files to slip through.

Now the script explicitly tracks and reports any migration files that don't match
the required YYYYMMDDHHMMSS_Description.cs format, ensuring all new migration files
are properly validated.

Addresses feedback from PR review to prevent malformed migration files from being
overlooked.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 13:43:23 -08:00
Patrick-Pimentel-Bitwarden
029a5f6a2d Revert "feat(register): [PM-27084] Account Register Uses New Data Types (#6715)" (#6854)
This reverts commit 8cb8030534.
2026-01-15 21:19:16 +00:00
Patrick-Pimentel-Bitwarden
8cb8030534 feat(register): [PM-27084] Account Register Uses New Data Types (#6715)
* feat(register): [PM-27084] Account Register Uses New Data Types - Implementation

* test(register): [PM-27084] Account Register Uses New Data Types - Added tests
2026-01-15 15:55:27 -05:00
rr-bw
c7e364a39c chore(flag): add pm-27086-update-authentication-apis-for-input-password feature flag 2026-01-15 09:00:31 -05:00
cyprain-okeke
2e0e103076 Fix the currency culture invariant (#6812) 2026-01-15 09:55:43 +01:00
Justin Baur
44249c38e0 Add some integration tests for the Server project (#6839)
* Add some integration tests for the Server project

* Not sure why this project got removed?

* Format

* capture debug output

* Update tests to work with the now legacy WebHostBuilder

- I accidentally had the updated Program locally and that was why tests were working for me locally

* Formatting...again
2026-01-15 03:52:00 -05:00
Jordan Aasen
b86a31160a [PM-30448] - remove edit requirement for cipher archiving (#6830)
* remove edit requirement for cipher archiving

* update cipher_archive/unarchive sql

* update cipher_archive/unarchive sql

* fix sql

* update sql

* update sql
2026-01-14 15:55:09 -08:00
renovate[bot]
ed5419c767 [deps] Auth: Update Microsoft.Extensions.Caching.Cosmos to 1.8.0 (#6326)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
2026-01-14 18:17:20 -05:00
renovate[bot]
9116a0b3fc [deps] Auth: Update webpack to v5.104.1 (#6701)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
2026-01-14 17:22:28 -05:00
Dave
21e9bb3138 feat(single sign-on) [PM-23572] Add Persistent Grants to SSO (#6636)
* feat(sso-persisted-grants) [PM-23572]: Stub PersistedGrantStore.

* feat(sso-persisted-grants) [PM-23572]: Update service reigtration with named cache.

* feat(sso-persisted-grants) [PM-23572]: Add unit tests for DistributedCachePersistedGrantStore.

* feat(sso-persisted-grants) [PM-23572]: Add additional tests.

* feat(sso-persisted-grants) [PM-23572]: Add some additional clarifying comments on ExtendedCache vs InMemoryCaching for Duende.

* feat(sso-persistent-grants) [PM-23572]: Spelling in a comment for cache key name.

* feat(sso-persisted-grants) [PM-23572]: Add cache key constant and remove explicit skip distributed cache on set for default configuration.

---------

Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
2026-01-14 16:50:37 -05:00
renovate[bot]
e22290c52b [deps] Auth: Update sass to v1.97.2 (#6630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
2026-01-14 16:46:12 -05:00
Justin Baur
584af2ee3f Catch general exception for all db types (#6846)
* Switch `SqlException` to `DbException`

Co-authored-by: rkac-bw <148072202+rkac-bw@users.noreply.github.com>

* Fix CA2253

---------

Co-authored-by: rkac-bw <148072202+rkac-bw@users.noreply.github.com>
2026-01-14 16:27:39 -05:00
John Harrington
fa845a4753 [Tools] Update SendAuthenticationQuery, add new non-anonymous endpoints, and add PutRemoveAuth endpoint (#6786)
* update send api models to support new `email` field

* normalize authentication field evaluation order

* document send response converters

* add FIXME to remove unused constructor argument

* add FIXME to remove unused constructor argument

* introduce `tools-send-email-otp-listing` feature flag

* add `ISendOwnerQuery` to dependency graph

* fix broken tests

* added AuthType prop to send related models with test coverage and debt cleanup

* dotnet format

* add migrations

* dotnet format

* make SendsController null safe (tech debt)

* add AuthType col to Sends table, change Emails col length to 4000, and run migrations

* dotnet format

* update SPs to expect AuthType

* include SP updates in migrations

* remove migrations not intended for merge

* Revert "remove migrations not intended for merge"

This reverts commit 7df56e346a.

undo migrations removal

* extract AuthType inference to util method and remove SQLite file

* fix lints

* address review comments

* fix incorrect assignment and adopt SQL conventions

* fix column assignment order in Send_Update.sql

* remove space added to email list

* assign SQL default value of NULL to AuthType

* update SPs to match migration changes

* remove FF, update SendAuthQuery, and update tests

* new endpoints added but lack test coverage

* dotnet format

* add PutRemoveAuth endpoint with test coverage and tests for new non-anon endpoints

* update RequireFeatureFlag comment for clarity

* respond to Claude's findings

* add additional validation logic to new auth endpoints

* enforce auth policies on individual action methods

* remove JsonConverter directive for AuthType

* remove tools-send-email-otp-listing feature flag

---------

Co-authored-by:  Audrey  <audrey@audreyality.com>
Co-authored-by:  Audrey  <ajensen@bitwarden.com>
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
Co-authored-by: Alex Dragovich <46065570+itsadrago@users.noreply.github.com>
2026-01-14 14:07:46 -07:00
Alex Morask
e1b6e496f9 fix(start-premium): Need to expand 'customer' on first invoice (#6844) 2026-01-14 14:34:42 -06:00
Mike Amirault
4bff67ea12 [PM-30687] Remove Desktop Send UI refresh feature flag (#6842) 2026-01-14 15:32:58 -05:00
Vincent Salucci
2a18f276a8 fix: feature flag key for PremiumAccessQuery, refs PM-21411 (#6834) 2026-01-14 12:21:49 -06:00
Brandon Treston
aa8d7c6775 [PM-30682] Add missing null check, update tests (#6826)
* add missing null check, update tests

* CR feedback
2026-01-14 12:19:23 -05:00
Github Actions
2224b1e0c6 Bumped version to 2026.1.0 2026-01-14 17:05:02 +00:00
Jared McCannon
02cec2d9fe Removing unused feature flag. (#6836) 2026-01-14 10:42:06 -06:00
Oscar Hinton
d1fdaa6a2f Fix lint on main (#6835) 2026-01-14 09:02:49 -05:00
Oscar Hinton
f144828a87 [PM-22263] [PM-29849] Initial PoC of seeder API (#6424)
We want to reduce the amount of business critical test data in the company. One way of doing that is to generate test data on demand prior to client side testing.

Clients will request a scene to be set up with a JSON body set of options, specific to a given scene. Successful seed requests will be responded to with a mangleMap which maps magic strings present in the request to the mangled, non-colliding versions inserted into the database. This way, the server is solely responsible for understanding uniqueness requirements in the database. scenes also are able to return custom data, depending on the scene. For example, user creation would benefit from a return value of the userId for further test setup on the client side.

Clients will indicate they are running tests by including a unique header, x-play-id which specifies a unique testing context. The server uses this PlayId as the seed for any mangling that occurs. This allows the client to decide it will reuse a given PlayId if the test context builds on top of previously executed tests. When a given context is no longer needed, the API user will delete all test data associated with the PlayId by calling a delete endpoint.

---------

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
2026-01-13 11:10:01 -06:00
Bernd Schoolmann
a9f78487ef Add feature flag (#6820) 2026-01-13 15:47:22 +01:00
Jared McCannon
07b0721616 Removed old implementation and feature flag checks for bulk revoke. (#6827) 2026-01-13 08:39:27 -06:00
Conner Turnbull
12d18ebb2c [PM-27731] Updated organization licenses to save the correct values from the token (#6546)
* Updated organization licenses to save the correct values from the token

* Added additional test cases around licenses

* Added missing properties from Organization to UpdateOrganizationLicenseCommand.UpdateLicenseAsync()

* Add tests to validate license property synchronization pipeline

* `dotnet format`
2026-01-13 09:32:02 -05:00
Jimmy Vo
4f6b023667 [PM-29847] Fix styling (#6828) 2026-01-13 08:55:32 -05:00
Justin Baur
d559b1da11 Make CA1304 & CA1305 warnings (#6813) 2026-01-13 04:02:56 -05:00
Justin Baur
b9d1a35301 Enable Telemetry for Billing Project (#6802) 2026-01-12 15:08:52 -05:00
Alex Morask
cfa8d4a165 [PM-29604] [PM-29605] [PM-29606] Support premium subscription page redesign (#6821)
* feat(get-subscription): Add EnumMemberJsonConverter

* feat(get-subscription): Add BitwardenDiscount model

* feat(get-subscription): Add Cart model

* feat(get-subscription): Add Storage model

* feat(get-subscription): Add BitwardenSubscription model

* feat(get-subscription): Add DiscountExtensions

* feat(get-subscription): Add error code to StripeConstants

* feat(get-subscription): Add GetBitwardenSubscriptionQuery

* feat(get-subscription): Expose GET /account/billing/vnext/subscription

* feat(reinstate-subscription): Add ReinstateSubscriptionCommand

* feat(reinstate-subscription): Expose POST /account/billing/vnext/subscription/reinstate

* feat(pay-with-paypal-immediately): Add SubscriberId union

* feat(pay-with-paypal-immediately): Add BraintreeService with PayInvoice method

* feat(pay-with-paypal-immediately): Pay PayPal invoice immediately when starting premium subscription

* feat(pay-with-paypal-immediately): Pay invoice with Braintree on invoice.created for subscription cycles only

* fix(update-storage): Always invoice for premium storage update

* fix(update-storage): Move endpoint to subscription path

* docs: Note FF removal POIs

* (format): Run dotnet format
2026-01-12 10:45:41 -06:00
Todd Martin
94cd6fbff6 chore(flags): [PM-28337] Remove account recovery permission feature flag
* Removed pm-24425-send-2fa-failed-email

* Remove feature flag

* Linting

* Removed tests and cleaned up comment.
2026-01-11 12:04:10 -05:00
Ike
5320878295 [PM-25949] ExternalCallback Integration tests for SSO Project (#6809)
* feat: add new integration test project

* test: add factory for SSO application; ExternalCallback integration tests.

* test: modified Integration tests to use seeded data instead of service substitutes with mocked responses, where possible.

* fix: re-organize projects in solution. SsoFactory now in its owning project with SSO integration test which match the integration test factory pattern more closely.

* claude: better naming of class fields.
2026-01-10 09:02:50 -05:00
cyprain-okeke
e705fe3f3f [PM-29598] Create Subscription Upgrade Endpoint (#6787)
* Add the ticket implementation

* Add the unit test

* Fix the lint and test issues

* resolve pr comments

* Fix the error on the test file

* Review suggestion and fixes

* resolve the api access comments

* Gte the key from the client

* Add the gateway type as stripe

* Address the legacy plans issues

* Resolve the misunderstanding

* Add additional storage that we will need if they revert

* Add the previous premium UserId
2026-01-09 16:34:06 +01:00
Jimmy Vo
b1cf59b1bf [PM-27882] Fix the subject line. (#6818) 2026-01-09 10:04:52 -05:00
Maciej Zieniuk
2e92a53f11 [PM-27281] Support v2 account encryption on JIT master password signups (#6777)
* V2 prep, rename existing SSO JIT MP command to V1

* set initial master password for account registraton V2

* later removel docs

* TDE MP onboarding split

* revert separate TDE onboarding controller api

* Server side hash of the user master password hash

* use `ValidationResult` instead for validation errors

* unit test coverage

* integration test coverage

* update sql migration script date

* revert validate password change

* better requests validation

* explicit error message when org sso identifier invalid

* more unit test coverage

* renamed onboarding to set, hash naming clarifications

* update db sql script, formatting

* use raw json as request instead of request models for integration test

* v1 integration test coverage

* change of name
2026-01-09 09:17:45 +01:00
Matt Bishop
62ae828143 Fix pattern matching when retrieving database migrations (#6815) 2026-01-08 13:56:17 -05:00
Vince Grassia
ce4b906bdf Update job names (#6814) 2026-01-08 12:29:47 -05:00
Alex Morask
6d69c9bb99 Make PayPalIPNTransactionModel currency culture invariant (#6811) 2026-01-08 08:40:45 -06:00