1
0
mirror of https://github.com/bitwarden/server.git synced 2024-12-22 16:57:36 +01:00
The core infrastructure backend (API, database, Docker, etc).
Go to file
Rui Tomé 8d69bb0aaa
[AC-1698] Check if a user has 2FA enabled more efficiently (#4524)
* feat: Add stored procedure for reading organization user details with premium access by organization ID

The code changes include:
- Addition of a new stored procedure [dbo].[OrganizationUserUserDetailsWithPremiumAccess_ReadByOrganizationId] to read organization user details with premium access by organization ID
- Modification of the IUserService interface to include an optional parameter for checking two-factor authentication with premium access
- Modification of the UserService class to handle the new optional parameter in the TwoFactorIsEnabledAsync method
- Addition of a new method GetManyDetailsWithPremiumAccessByOrganizationAsync in the IOrganizationUserRepository interface to retrieve organization user details with premium access by organization ID
- Addition of a new view [dbo].[OrganizationUserUserDetailsWithPremiumAccessView] to retrieve organization user details with premium access

* Add IUserRepository.SearchDetailsAsync that includes the field HasPremiumAccess

* Check the feature flag on Admin.UsersController to see if the optimization runs

* Modify PolicyService to run query optimization if the feature flag is enabled

* Refactor the parameter check on UserService.TwoFactorIsEnabledAsync

* Run query optimization on public MembersController if feature flag is enabled

* Restore refactor

* Reverted change used for development

* Add unit tests for OrganizationService.RestoreUser

* Separate new CheckPoliciesBeforeRestoreAsync optimization into new method

* Add more unit tests

* Apply refactor to bulk restore

* Add GetManyDetailsAsync method to IUserRepository. Add ConfirmUsersAsync_vNext method to IOrganizationService

* Add unit tests for ConfirmUser_vNext

* Refactor the optimization to use the new TwoFactorIsEnabledAsync method instead of changing the existing one

* Removed unused sql scripts and added migration script

* Remove unnecessary view

* chore: Remove unused SearchDetailsAsync method from IUserRepository and UserRepository

* refactor: Use UserDetails constructor in UserRepository

* Add summary to IUserRepository.GetManyDetailsAsync

* Add summary descriptions to IUserService.TwoFactorIsEnabledAsync

* Remove obsolete annotation from IUserRepository.UpdateUserKeyAndEncryptedDataAsync

* refactor: Rename UserDetails to UserWithCalculatedPremium across the codebase

* Extract IUserService.TwoFactorIsEnabledAsync into a new TwoFactorIsEnabledQuery class

* Add unit tests for TwoFactorIsEnabledQuery

* Update TwoFactorIsEnabledQueryTests to include additional provider types

* Refactor TwoFactorIsEnabledQuery

* Refactor TwoFactorIsEnabledQuery and update tests

* refactor: Update TwoFactorIsEnabledQueryTests to include test for null TwoFactorProviders

* refactor: Improve TwoFactorIsEnabledQuery and update tests

* refactor: Improve TwoFactorIsEnabledQuery and update tests

* Remove empty <returns> from summary

* Update User_ReadByIdsWithCalculatedPremium stored procedure to accept JSON array of IDs
2024-08-08 15:43:45 +01:00
.checkmarx Exclude dev directory from iac scans (#3807) 2024-02-15 08:53:03 -05:00
.config [deps] DbOps: Update EntityFrameworkCore to v8.0.7 (#4484) 2024-07-09 12:11:35 -04:00
.devcontainer Devcontainer Improvements (#4466) 2024-07-08 10:48:02 -04:00
.git-hooks Add git hook for formating (#2224) 2022-09-08 10:27:17 +02:00
.github Remove reference to missing job (#4595) 2024-08-08 14:42:58 +01:00
.run Add Rider launch configurations (#2646) 2023-01-31 06:20:46 +10:00
.vscode Devcontainer Improvements (#4466) 2024-07-08 10:48:02 -04:00
bitwarden_license SM-1146: Secrets Manager total counts (#4200) 2024-08-08 15:12:52 +02:00
dev db migrations - remove comments before parsing secrets (#4519) 2024-07-17 07:03:07 +10:00
perf Use FrozenDictionary in StaticClientStore (#3833) 2024-02-21 10:29:59 -05:00
scripts Fix problem with docker push (#2912) 2023-06-29 06:23:25 -07:00
src [AC-1698] Check if a user has 2FA enabled more efficiently (#4524) 2024-08-08 15:43:45 +01:00
test [AC-1698] Check if a user has 2FA enabled more efficiently (#4524) 2024-08-08 15:43:45 +01:00
util [AC-1698] Check if a user has 2FA enabled more efficiently (#4524) 2024-08-08 15:43:45 +01:00
.dockerignore Bitwarden Unified Self-Host project (#2410) 2022-11-18 14:39:01 -05:00
.editorconfig Solution and editor configuration cleanup (#3099) 2023-07-13 17:34:11 -04:00
.git-blame-ignore-revs Add instructions (#2232) 2022-08-30 12:17:17 -04:00
.gitattributes Run dotnet format (#1764) 2021-12-16 15:35:09 +01:00
.gitignore [PM-10261] Migrate from gulp to webpack (#4569) 2024-07-31 15:41:55 -04:00
bitwarden-server.sln Include all projects in coverage (#3829) 2024-02-20 17:18:40 +01:00
CONTRIBUTING.md Update README and CONTRIBUTING to point to contributing.bitwarden.com (#2028) 2022-06-09 12:00:58 +02:00
Directory.Build.props Bumped version to 2024.7.4 (#4603) 2024-08-08 11:59:26 +00:00
global.json Devcontainer Improvements (#4466) 2024-07-08 10:48:02 -04:00
LICENSE_AGPL.txt split license file out to support bitwarden licensed code (#912) 2020-09-04 13:36:22 -04:00
LICENSE_BITWARDEN.txt Update paths to point to main instead of master (#3699) 2024-01-24 09:48:03 -05:00
LICENSE_FAQ.md Update paths to point to main instead of master (#3699) 2024-01-24 09:48:03 -05:00
LICENSE.txt Update paths to point to main instead of master (#3699) 2024-01-24 09:48:03 -05:00
README.md Update paths to point to main instead of master (#3699) 2024-01-24 09:48:03 -05:00
SECURITY.md Update SECURITY.md (#1913) 2022-03-15 15:54:08 -04:00
TRADEMARK_GUIDELINES.md Update TRADEMARK_GUIDELINES.md 2021-03-26 14:04:27 -04:00

Bitwarden

Github Workflow build on main DockerHub gitter chat


The Bitwarden Server project contains the APIs, database, and other core infrastructure items needed for the "backend" of all bitwarden client applications.

The server project is written in C# using .NET Core with ASP.NET Core. The database is written in T-SQL/SQL Server. The codebase can be developed, built, run, and deployed cross-platform on Windows, macOS, and Linux distributions.

Developer Documentation

Please refer to the Server Setup Guide in the Contributing Documentation for build instructions, recommended tooling, code style tips, and lots of other great information to get you started.

Deploy

docker

You can deploy Bitwarden using Docker containers on Windows, macOS, and Linux distributions. Use the provided PowerShell and Bash scripts to get started quickly. Find all of the Bitwarden images on Docker Hub.

Full documentation for deploying Bitwarden with Docker can be found in our help center at: https://help.bitwarden.com/article/install-on-premise/

Requirements

These dependencies are free to use.

Linux & macOS

curl -s -L -o bitwarden.sh \
    "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" \
    && chmod +x bitwarden.sh
./bitwarden.sh install
./bitwarden.sh start

Windows

Invoke-RestMethod -OutFile bitwarden.ps1 `
    -Uri "https://func.bitwarden.com/api/dl/?app=self-host&platform=windows"
.\bitwarden.ps1 -install
.\bitwarden.ps1 -start

We're Hiring!

Interested in contributing in a big way? Consider joining our team! We're hiring for many positions. Please take a look at our Careers page to see what opportunities are currently open as well as what it's like to work at Bitwarden.

Contribute

Code contributions are welcome! Please commit any pull requests against the main branch. Learn more about how to contribute by reading the Contributing Guidelines. Check out the Contributing Documentation for how to get started with your first contribution.

Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the SECURITY.md file. We also run a program on HackerOne.

No grant of any rights in the trademarks, service marks, or logos of Bitwarden is made (except as may be necessary to comply with the notice requirements as applicable), and use of any Bitwarden trademarks must comply with Bitwarden Trademark Guidelines.

Dotnet-format

Consider installing our git pre-commit hook for automatic formatting.

git config --local core.hooksPath .git-hooks