* [EC-19] Move SSO Identifier to Org SSO endpoint (#2184)
* [EC-19] Move SSO identifier to Org SSO config endpoint
* [EC-19] Add Jira tech debt issue reference
* [EC-542] Update email communications (#2348)
* [EC-73] Add users alongside groups for collection details (#2358)
* [EC-73] feat: add new stored procedures
* [EC-73] feat: add migration
* [EC-73] chore: rename collection group details
* [EC-73] fix: migration
* [EC-73] feat: return users from dapper repo
* [EC-73] feat: EF support for collection users
* [EC-73] feat: implement updating users in EF
* [EC-73] feat: new collections with users in EF
* [EC-73] feat: create with users in dapper
* [EC-73] feat: update with users in dapper
* [EC-73] fix: collection service tests
* [EC-73] fix: lint
* [EC-73] feat: add new data model and rename for clarity
* [EC-73] chore: add future migrations
* [EC-16 / EC-86] Implement Groups Table Endpoints (#2280)
* [EC-16] Update Group endpoints/repositories to include necessary collection info
* [EC-16] Add delete many groups endpoint and command
* [EC-16] Add DeleteGroupCommand unit tests
* [EC-16] Update migration script
* [EC-16] Formatting
* [EC-16] Support modifying users via Post Group endpoint
- Add optional Users property to GroupRequestModel
- Add users parameter to the GroupService.SaveAsync() method
- Use the users argument to update the Group via the GroupRepository if present.
* [EC-16] Add/update Sprocs for bulk group deletion
- Add a new bump account revision date by multiple org ids sproc to be used by the delete many group sproc.
- Update the delete many group sproc to no longer require the organization Id as authorization is a business concern.
* [EC-16] No longer require org Id in delete many GroupRepository
The group repository should not care about which organization a group belongs to when being deleted. That is a business logic concern and is not necessary at the repository level.
* [EC-16] Remove org Id from delete many group command
- Remove the organization Id from the delete many method.
- Require Group entities instead of just group Ids so that group retrieval is completed outside the command.
- No longer return deleted groups as they are now being passed into the command.
- Update unit tests
* [EC-16] Remove org id from bulk delete group endpoint
- Remove the Org Id from the endpoint and make use of the updated delete many command
* [EC-16] Rename delete many groups sproc
* [EC-16] Update migration script
* [EC-16] Fix typo in migration script
* [EC-16] Fix order of operations in Group_DeleteByIds sproc
* [EC-16] Formatting
* [EC-86] Fix DeleteManyAsync parameter name
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [EC-16] Add missing sproc to sqlproj file
* [EC-16] Improve GroupRepository method performance
Use GroupBy before marrying Groups and Collections to avoid iterating over all collections for every group)
* [EC-16] Use ToListAsync() to be consistent in the repository
* [EC-16] Fix collection grouping in the EF repository
* [EC-16] Adjust DeleteGroup command namespace to be less verbose
* [EC-16] Cleanup DeleteGroupCommandTests
* [EC-16] Formatting
* [EC-16] Ensure a non-null group collection list is provided
* [EC-16] Add bulk GroupEvents method to EventService
- Use the new method in the DeleteGroups command
* [EC-16] Remove bulk delete group Api response
The response is unnecessary and not used by the client
* [EC-16] Log OrganizationUser_UpdateGroups event in GroupService
Events are logged for users during both Group creation (all added users) and modification (only changed users).
* [EC-16] Fix failing unit test
* [EC-16] Rename newUsers variable per feedback
* [EC-16] Assert delete many group log events
Explicitly check for the event type and groups that are logged to the event service.
* [EC-16] Update DeleteManyAsync signature
Use ICollection<> instead of IEnumerable<> to avoid ambiguity of possible multiple enumeration
* [EC-16] Increment migration script name
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Add missing GO command to EC-73 migration script (#2433)
* [EC-15] Members Grid Api Support (#2485)
* [EC-15] Update OrganizationUser models to support list of collections and groups
* [EC-15] Add sprocs to query GroupUser and CollectionUser entities
* [EC-15] Update the OrganizationUserRepository to optionally fetch groups/collections
* [EC-15] Formatting
* [EC-15] Remove leftover repository method
* [EC-15] Fix table identifier inconsistency in sproc/migration
* Formatting
* [EC-14]: Server changes for Collection rows in Vault (#2360)
* [EC-14] add collection management methods to repo
- delete many, get many by ids, and get many with groups by org
* [EC-14] connection command tests had wrong folder name
* [EC-14] add collection repo methods to interface
* [EC-14] create DeleteCollectionCommand
* [EC-14] add getManyWithDetails collections endpoint
* [EC-14] add GetManyWithGroupsByUserId
* [EC-14] add call to interface
* [EC-14] add GetOrganizationCollectionsWIthGroups
- gets groups with collections
- add tests as well
* [EC-14] add call to interface
* [EC-14] add new coll call to controller
- gets collections with groups
* [EC-14] use new delete collection command
* [EC-14] add CollectionBulkDeleteRequestModel
* [EC-14] remove org from delete collection cmd
- move all permission checks to controller
- add tests to controller
- remove org check from repository method
* [EC-14] add migration and sprocs
* [EC-14] formatting
* [EC-14] revert delete permission check changes
* [EC-14] rename SelectionReadOnly to CollectionAccessSelection
* [EC-14] move GetOrganizationCollectionsWithGroups to controller
- there's no reason to have this logic in the service layer
- we can still test the permission check in the controller
- also renamed repo methods and changed return types
* [EC-14] include users in collection access details
* [EC-14] fix migration names
* [EC-14] bumpAccountRevisionDate when deleting collections
* [EC-14] new line in collection service
* [EC-14] formatting and add .sql to proc file
* [EC-14] more formatting
* [EC-14] formatting
* [EC-14] fix whitespace
* [EC-14] add datetime to event log of single delete
* [EC-14] remove ToList() from enumerables not returned
* [EC-14] fix permissions on "Create new collection"
- a custom user with "Create new collections" should see all collections
* [EC-14] add bulk events for collections
* [EC-14] group collections from db before iterating
* [EC-14] sql formatting and missing GO
* [EC-14] fix tests
* [EC-14] add null handling to repo methods
* [EC-14] fix account revision call
* [EC-14] formatting
* [EC-548] Member Details Group Tab (#2508)
* [EC-548] Update models to support groups
* [EC-548] Include groups in invite and save organization user methods
* [EC-548] Pass groups to service methods in member/user controllers
* [EC-548] Fix failing tests
* [EC-548] Add option to include groups for GET org user query
* Formatting
* [EC-887] Server fix for managers seeing options to edit/delete Collections they aren't assigned to (#2542)
* [EC-887] Add Assigned property to CollectionResponseModel
A new property to determine if a collection is assigned to the acting user; as some users, have the view all collections permission, but cannot see every collection's items
* [EC-887] Update logic for retrieving GET all collection details
- Only need to check the ViewAllCollections permission
- Calculate new Assigned response property based on the assignedOrgCollections list
* Formatting
* [EC-887] Update unit tests
Co-authored-by: Shane Melton <smelton@bitwarden.com>
Co-authored-by: Jacob Fink <jfink@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* ServerProtectedData for user entity
* remove using statements
* formatting
* use data protection libs
* no async
* add data protection to ef user repo
* switch to `SetApplicationName` per ASPNET docs
* null checks
* cleanup
* value converter for EF
* new line at eof
* fix using
* remove folder ref
* restore ctor
* fix lint
* use global constant
* UseApplicationServiceProvider for integration tests
* implement constant for DatabaseFieldProtectedPrefix
* Fix EF IntegrationTest
* restore original values after protect and save
* lint fixes
* Use Constants
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* [EC-619] Added 'AggregateException' type to ExceptionHandlerFilter to return error messages in response
* [EC-619] Updated ExceptionHandlerFilterAttribute to return multiple errors using ErrorResponseModel internal property
It looks like 2fa.directory has changed it's API endpoint.
According to https://2fa.directory/api/ it now uses `api.2fa.directory` instead of `2fa.directory/api`.
This PR fixes the URL's where needed.
A fix for the client side is also created.
* [EC-758] Add environment variable GlobalSettings.Sso.EnforceSsoPolicyForAllUsers to enforce SSO Policy for all users
* [EC-758] Add integration tests
* [EC-758] Add Entities namespace to resolve ambiguous reference
* [EC-758] dotnet format
* [EC-758] Updated integration tests to check for logins with all user types
* [EC-758] Create new TestServer for each test
* [EC-758] Combine unit tests and refactor to use BitAutoData
* SG-825 - Policy_ReadByUserId stored proc now pulls back policies of disabled orgs
* SG-825 - SyncController - Always retrieve policies -- even if orgs are disabled.
* SG-825 - EF - PolicyReadByUserId - autoformat to remove whitespace and pass eslint build error
* Add Sqlite as EF DB provider
Note: In-memory sqlite does not work across projects, since the migrator
only runs on the Admin project
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
* Include example sqlite connection string
* Add migrator assembly to sqlite connection
* Update initial migration to current schema state
* dotnet format 🤖
* Update package locks
* Respect name set in BW_SSL_KEY for cert generation (#2490)
(cherry picked from commit 2469e10110)
* [PS-2016] Add ability to change UID/GID for Bitwarden unified (#2495)
(cherry picked from commit c6fbe8cc44)
* Add SqliteMigrations project to unified Dockerfile
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
Co-authored-by: accolon <mail@accolon.net>
Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>
* Revert "Set Id property on existing devices so we don't try to create a new one instead of updating existing. (#2420)"
This reverts commit 02e4b10ae8.
* Revert "Update push token on login to allow multiple users on mobile devices (#2404)"
This reverts commit 24469e2267.
* Added back test changes.
* [EC-654] Add CreateGroupCommand and UpdateGroupCommand
Added new CQRS commands CreateGroupCommand and UpdateGroupCommand Updated GroupService to use new commands
Edited existing GroupServiceTests and added new tests for the new commands
* [EC-654] dotnet format
* [EC-654] Replace GroupService.SaveAsync with CreateGroup and UpdateGroup commands
* [EC-654] Add assertions to check calls on IReferenceEventService
* [EC-654] Use AssertHelper.AssertRecent for DateTime properties
* [EC-654] Extracted database reads from CreateGroupCommand and UpdateGroupCommand. Added unit tests.
* [EC-654] Changed CreateGroupCommand and UpdateGroupCommand Validate method to private
* Clean up and name Server Bug report
* Create issue template for Bitwarden Unified
* Update .github/ISSUE_TEMPLATE/bw-unified.yml
Co-authored-by: Kyle Spearrin <kspearrin@users.noreply.github.com>
* Update Docker compose details to just be database image
* Change Label
* Add Link to Epic
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Kyle Spearrin <kspearrin@users.noreply.github.com>
* [EC-584] Add TryParse to ClientVersion due to QA builds having an appended git hash
* [EC-584] Add string.Split to only get 'ClientVersion' number when the input value includes the git hash
* Revert "[EC-584] Add string.Split to only get 'ClientVersion' number when the input value includes the git hash"
This reverts commit 9ebad69c6a.
* [EC-584] Update client version check to 2022.12
* [EC-584] Inverted check on ClientVersion
* [EC-584] Bumped version check to version 2023.01
* [EC-584] Removed the 0 prefix from the client version check