mirror of
https://github.com/bitwarden/server
synced 2025-12-10 13:23:27 +00:00
* support for fido2 auth * stub out registration implementations * stub out assertion steps and token issuance * verify token * webauthn tokenable * remove duplicate expiration set * revert sqlproj changes * update sqlproj target framework * update new validator signature * [PM-2014] Passkey registration (#2915) * [PM-2014] chore: rename `IWebAuthnRespository` to `IWebAuthnCredentialRepository` * [PM-2014] fix: add missing service registration * [PM-2014] feat: add user verification when fetching options * [PM-2014] feat: create migration script for mssql * [PM-2014] chore: append to todo comment * [PM-2014] feat: add support for creation token * [PM-2014] feat: implement credential saving * [PM-2014] chore: add resident key TODO comment * [PM-2014] feat: implement passkey listing * [PM-2014] feat: implement deletion without user verification * [PM-2014] feat: add user verification to delete * [PM-2014] feat: implement passkey limit * [PM-2014] chore: clean up todo comments * [PM-2014] fix: add missing sql scripts Missed staging them when commiting * [PM-2014] feat: include options response model in swagger docs * [PM-2014] chore: move properties after ctor * [PM-2014] feat: use `Guid` directly as input paramter * [PM-2014] feat: use nullable guid in token * [PM-2014] chore: add new-line * [PM-2014] feat: add support for feature flag * [PM-2014] feat: start adding controller tests * [PM-2014] feat: add user verification test * [PM-2014] feat: add controller tests for token interaction * [PM-2014] feat: add tokenable tests * [PM-2014] chore: clean up commented premium check * [PM-2014] feat: add user service test for credential limit * [PM-2014] fix: run `dotnet format` * [PM-2014] chore: remove trailing comma * [PM-2014] chore: add `Async` suffix * [PM-2014] chore: move delay to constant * [PM-2014] chore: change `default` to `null` * [PM-2014] chore: remove autogenerated weirdness * [PM-2014] fix: lint * Added check for PasswordlessLogin feature flag on new controller and methods. (#3284) * Added check for PasswordlessLogin feature flag on new controller and methods. * fix: build error from missing constructor argument --------- Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com> * [PM-4171] Update DB to support PRF (#3321) * [PM-4171] feat: update database to support PRF * [PM-4171] feat: rename `DescriptorId` to `CredentialId` * [PM-4171] feat: add PRF felds to domain object * [PM-4171] feat: add `SupportsPrf` column * [PM-4171] fix: add missing comma * [PM-4171] fix: add comma * [PM-3263] fix identity server tests for passkey registration (#3331) * Added WebAuthnRepo to EF DI * updated config to match current grant types * Remove ExtensionGrantValidator (#3363) * Linting --------- Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com> Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com> Co-authored-by: Todd Martin <106564991+trmartin4@users.noreply.github.com> Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com> Co-authored-by: Todd Martin <tmartin@bitwarden.com>
95 lines
4.9 KiB
C#
95 lines
4.9 KiB
C#
using Bit.Core.AdminConsole.Repositories;
|
|
using Bit.Core.Auth.Repositories;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.Repositories;
|
|
using Bit.Core.SecretsManager.Repositories;
|
|
using Bit.Core.Tools.Repositories;
|
|
using Bit.Core.Vault.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.AdminConsole.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Auth.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.SecretsManager.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Tools.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Vault.Repositories;
|
|
using LinqToDB.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace Bit.Infrastructure.EntityFramework;
|
|
|
|
public static class EntityFrameworkServiceCollectionExtensions
|
|
{
|
|
public static void SetupEntityFramework(this IServiceCollection services, string connectionString, SupportedDatabaseProviders provider)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(connectionString))
|
|
{
|
|
throw new Exception($"Database provider type {provider} was selected but no connection string was found.");
|
|
}
|
|
|
|
// TODO: We should move away from using LINQ syntax for EF (TDL-48).
|
|
LinqToDBForEFTools.Initialize();
|
|
|
|
services.AddAutoMapper(typeof(UserRepository));
|
|
services.AddDbContext<DatabaseContext>(options =>
|
|
{
|
|
if (provider == SupportedDatabaseProviders.Postgres)
|
|
{
|
|
options.UseNpgsql(connectionString, b => b.MigrationsAssembly("PostgresMigrations"));
|
|
// Handle NpgSql Legacy Support for `timestamp without timezone` issue
|
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
|
}
|
|
else if (provider == SupportedDatabaseProviders.MySql)
|
|
{
|
|
options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString),
|
|
b => b.MigrationsAssembly("MySqlMigrations"));
|
|
}
|
|
else if (provider == SupportedDatabaseProviders.Sqlite)
|
|
{
|
|
options.UseSqlite(connectionString, b => b.MigrationsAssembly("SqliteMigrations"));
|
|
}
|
|
else if (provider == SupportedDatabaseProviders.SqlServer)
|
|
{
|
|
options.UseSqlServer(connectionString);
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void AddPasswordManagerEFRepositories(this IServiceCollection services, bool selfHosted)
|
|
{
|
|
services.AddSingleton<IApiKeyRepository, ApiKeyRepository>();
|
|
services.AddSingleton<IAuthRequestRepository, AuthRequestRepository>();
|
|
services.AddSingleton<ICipherRepository, CipherRepository>();
|
|
services.AddSingleton<ICollectionCipherRepository, CollectionCipherRepository>();
|
|
services.AddSingleton<ICollectionRepository, CollectionRepository>();
|
|
services.AddSingleton<IDeviceRepository, DeviceRepository>();
|
|
services.AddSingleton<IEmergencyAccessRepository, EmergencyAccessRepository>();
|
|
services.AddSingleton<IFolderRepository, FolderRepository>();
|
|
services.AddSingleton<IGrantRepository, GrantRepository>();
|
|
services.AddSingleton<IGroupRepository, GroupRepository>();
|
|
services.AddSingleton<IInstallationRepository, InstallationRepository>();
|
|
services.AddSingleton<IMaintenanceRepository, MaintenanceRepository>();
|
|
services.AddSingleton<IOrganizationApiKeyRepository, OrganizationApiKeyRepository>();
|
|
services.AddSingleton<IOrganizationConnectionRepository, OrganizationConnectionRepository>();
|
|
services.AddSingleton<IOrganizationRepository, OrganizationRepository>();
|
|
services.AddSingleton<IOrganizationSponsorshipRepository, OrganizationSponsorshipRepository>();
|
|
services.AddSingleton<IOrganizationUserRepository, OrganizationUserRepository>();
|
|
services.AddSingleton<IPolicyRepository, PolicyRepository>();
|
|
services.AddSingleton<IProviderOrganizationRepository, ProviderOrganizationRepository>();
|
|
services.AddSingleton<IProviderRepository, ProviderRepository>();
|
|
services.AddSingleton<IProviderUserRepository, ProviderUserRepository>();
|
|
services.AddSingleton<ISendRepository, SendRepository>();
|
|
services.AddSingleton<ISsoConfigRepository, SsoConfigRepository>();
|
|
services.AddSingleton<ISsoUserRepository, SsoUserRepository>();
|
|
services.AddSingleton<ITaxRateRepository, TaxRateRepository>();
|
|
services.AddSingleton<ITransactionRepository, TransactionRepository>();
|
|
services.AddSingleton<IUserRepository, UserRepository>();
|
|
services.AddSingleton<IOrganizationDomainRepository, OrganizationDomainRepository>();
|
|
services.AddSingleton<IWebAuthnCredentialRepository, WebAuthnCredentialRepository>();
|
|
|
|
if (selfHosted)
|
|
{
|
|
services.AddSingleton<IEventRepository, EventRepository>();
|
|
}
|
|
}
|
|
}
|