// Configure your AppHost with the necessary configuration and dependencies your App needs public override void Configure(Container container) { SetConfig(new HostConfig { AddRedirectParamsToQueryString = true, EmbeddedResourceBaseTypes = { typeof(ServiceStack.Desktop.DesktopAssets) }, DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), HostingEnvironment.IsDevelopment()), }); if (Config.DebugMode) { Plugins.Add(new HotReloadFeature { VirtualFiles = VirtualFiles, //Monitor all folders for changes including /src & /wwwroot }); } // enable server-side rendering, see: https://sharpscript.net/docs/sharp-pages Plugins.Add(new SharpPagesFeature { EnableSpaFallback = true, }); }
public override void Configure(Container container) { SetConfig(new HostConfig { DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), HostingEnvironment.IsDevelopment()), }); if (Config.DebugMode) { Plugins.Add(new HotReloadFeature { VirtualFiles = VirtualFiles, //Monitor all folders for changes including /src & /wwwroot }); } container.Register <IDbConnectionFactory>(c => new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider)); SeedData(container.Resolve <IDbConnectionFactory>()); Plugins.Add(new AutoQueryFeature { MaxLimit = 1000 }); Plugins.Add(new SharpPagesFeature { EnableSpaFallback = true, ScriptMethods = { new DbScriptsAsync(), new CustomMethods(), }, }); Plugins.Add(new DesktopFeature { AppName = "my-app", AccessRole = RoleNames.AllowAnon, }); }
// Configure your AppHost with the necessary configuration and dependencies your App needs public override void Configure(Container container) { SetConfig(new HostConfig { DefaultRedirectPath = "/index.html", DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false) }); JsConfig.IncludeNullValues = false; JsConfig.ExcludeTypeInfo = true; JsConfig.DateHandler = DateHandler.ISO8601; JsConfig.TextCase = TextCase.PascalCase; JsConfig.TimeSpanHandler = TimeSpanHandler.StandardFormat; #region Database var connString = AppSettings.Get("dbConnectionString", ""); if (connString == "%%CONN_STR%%") { connString = AppSettings.Get("dbConnectionStringDev", ""); } var dbFactory = new OrmLiteConnectionFactory(connString, SqlServer2008Dialect.Provider); container.Register <IDbConnectionFactory>(dbFactory); OrmLiteConfig.StringFilter = s => s.Trim(); #endregion #region Plugins Plugins.Add(new CorsFeature( allowedHeaders: "Content-Type, Allow, Authorization")); Plugins.Add(new OpenApiFeature() { ApiDeclarationFilter = declaration => { declaration.Info.Title = "Badges Molex Net Core"; //declaration.Info.Contact = new ServiceStack.Api.OpenApi.Specification.OpenApiContact() //{ // Email = "*****@*****.**", // Name = "Alfredo Pacheco" //}; declaration.Info.Description = ""; }, OperationFilter = (verb, op) => { switch (verb) { case "POST": op.Parameters.RemoveAll(p => p.Name == "Id"); op.Parameters.RemoveAll(p => p.Name == "RowVersion"); break; default: break; } op.Parameters.RemoveAll(p => p.Name == "EntityName"); op.Parameters.RemoveAll(p => p.Name == "EF_State"); } }); Plugins.Add(new AutoQueryFeature { //MaxLimit = 100 }); Plugins.Add(new RequestLogsFeature()); Plugins.Add(new AdminFeature()); // var rollbarSettings = AppSettings.Get<RollbarSettings>("RollbarPluginSettings"); // Plugins.Add(new RollbarLoggerPlugin // { // ApiKey = rollbarSettings.ApiKey, // Enabled = rollbarSettings.Enabled, // EnableErrorTracking = rollbarSettings.EnableErrorTracking, // EnableRequestBodyTracking = rollbarSettings.EnableRequestBodyTracking, // EnableResponseTracking = rollbarSettings.EnableResponseTracking, // EnableSessionTracking = rollbarSettings.EnableSessionTracking, // Environment = rollbarSettings.Environment, // // HideRequestBodyForRequestDtoTypes = new List<Type>(), // // ExcludeRequestDtoTypes = new List<Type> // // { // // // Might have to exclude the Swagger requests to get the two to play nicely // // typeof(RollbarLogConfigRequest), // // typeof(SwaggerResource), // // typeof(SwaggerApiDeclaration) // // }, // RequiredRoles = rollbarSettings.RequiredRoles, // SkipLogging = IsRequestSkippedDuringRequestLogging // }); #endregion #region Auth var authProviders = new List <IAuthProvider> { new JwtAuthProvider(AppSettings) { RequireSecureConnection = false, AllowInQueryString = true }, new CredentialsAuthProvider() }; var authFeature = new AuthFeature(SessionFactory, authProviders.ToArray()); Plugins.Add(authFeature); //var authRepo = new OrmLiteAuthRepository(dbFactory); //container.Register<IUserAuthRepository>(authRepo); //authRepo.InitSchema(); //Plugins.Add(new RegistrationFeature()); //var admin = authRepo.GetUserAuthByUserName("admin"); //if (admin == null) // authRepo.CreateUserAuth(new UserAuth // { // UserName = "******", // Roles = new List<string> { RoleNames.Admin } // }, "admin"); #endregion //TODO: //Cache. //Logging. //Batched requests. //Profiler. //Versioning. //stripe.com #region Cache //container.Register<ICacheClient>(new MemoryCacheClient()); #endregion #region App //container.Register(c => dbFactory.Open()); //container.Register(c => c.Resolve<IDbConnectionFactory>().OpenDbConnection()).ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <RevisionLogic>().ReusedWithin(ReuseScope.Request); MailgunService.AppSettings = AppSettings; container.Register <IEmailService>(i => new MailgunService()).ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogDefinitionLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <FieldLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogFieldValueLogic>().ReusedWithin(ReuseScope.Request); //This App: ///start:generated:di<<< container.RegisterAutoWired <ActivityLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <ApprovalLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <BadgeLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <EmailLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <AdvancedSortLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <ApplicationTaskLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <FilterDataLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <SortDataLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <TokenLogic>().ReusedWithin(ReuseScope.Request); ///end:generated:di<<< #endregion #region Seed Data Sower.Seed(dbFactory); #endregion }
public override void Configure(Container container) { JsConfig.TextCase = TextCase.CamelCase; var debugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false); var hostConfig = new HostConfig { DebugMode = debugMode }; var allowFiles = AppSettings.GetList("AllowFileExtensions").ToList(); allowFiles.ForEach(ext => hostConfig.AllowFileExtensions.Add(ext)); if (!debugMode) { hostConfig.EnableFeatures = Feature.All.Remove(Feature.Metadata); } else { Plugins.Add(new OpenApiFeature()); } SetConfig(hostConfig); Plugins.Add(new CorsFeature( allowedHeaders: "Content-Type,Authorization" )); // 开启 auto query 特性 Plugins.Add(new AutoQueryFeature { MaxLimit = 100, IncludeTotal = true, EnableAutoQueryViewer = false }); Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new JwtAuthProvider(AppSettings) { AuthKeyBase64 = AppSettings.GetString("jwt.AuthKeyBase64"), RequireSecureConnection = false, ExpireTokensIn = TimeSpan.FromMinutes(AppSettings.Get <int>("jwt.ExpireTokensIn")) }, new CustomCredentialsAuthProvider() }) { // 以字母开头,可包含数字,字母和下划线.长度为:3 ~ 20 ValidUserNameRegEx = new Regex(@"\w+[\d_\w]{3,20}", RegexOptions.Compiled), ServiceRoutes = new Dictionary <Type, string[]> { { typeof(AuthenticateService), new[] { "/auth", "/auth/{provider}" } } } }); // 注册验证功能 Plugins.Add(new ValidationFeature()); container.RegisterValidators(typeof(PermissionValidator).Assembly); // redis init var redisConnStr = $"redis://{AppSettings.Get<string>("RedisHost")}:{AppSettings.Get<string>("RedisPort")}"; var redisManager = new RedisManagerPool(redisConnStr); container.Register <IRedisClientsManager>(c => redisManager); container.Register(c => redisManager.GetCacheClient()); var dbHost = AppSettings.Get <string>("DBHost"); var dbPort = AppSettings.Get <string>("DBPort"); var dbUser = AppSettings.Get <string>("DBUser"); var dbPassword = AppSettings.Get <string>("DBPassword"); var dbParam = AppSettings.Get <string>("DBParam"); var dbConnStr = $"Server={dbHost};Port={dbPort};Uid={dbUser};Pwd={dbPassword};{dbParam}"; var dbFactory = new OrmLiteConnectionFactory(dbConnStr, MySqlDialect.Provider) { AutoDisposeConnection = true, ConnectionFilter = db => new ProfiledDbConnection((DbConnection)db, MiniProfiler.Current) }; ErrorMessages.InvalidUsernameOrPassword = "******"; ErrorMessages.IllegalUsername = "******"; ErrorMessages.NotAuthenticated = "未验证"; // dbFactory.RegisterConnection(); // TODO: 根据配置注册其它数据库. container.Register <IDbConnectionFactory>(c => dbFactory); container.Register <ICacheClient>(new MemoryCacheClient()); container.Register <IAuthRepository>(c => new OrmLiteAuthRepository <UserInfo, UserAuthDetails>(dbFactory) { UseDistinctRoleTables = false }); // container.Register<IAccountManage>(c => new MyAccountManager<UserInfo>()); container.RegisterAs <OrgManage, IOrgManage>(); container.RegisterAs <ReflectionManage, IReflectionManage>(); container.Register <ISchemaManage>(c => new MysqlSchemaManage("MyApp_db")); // InitData(container); }
/// <summary> /// Application specific configuration /// This method should initialize any IoC resources utilized by your web service classes. /// </summary> public override void Configure(Container container) { SetConfig(new HostConfig { //EnableFeatures = Feature.All.Remove(Feature.Metadata), //DebugMode = false }); JsConfig.IncludeNullValues = false; JsConfig.ExcludeTypeInfo = true; JsConfig.DateHandler = DateHandler.ISO8601; #region Database var dbFactory = new OrmLiteConnectionFactory( AppSettings.Get("dbConnectionString", ""), SqlServer2008Dialect.Provider); container.Register <IDbConnectionFactory>(dbFactory); OrmLiteConfig.StringFilter = s => s.Trim(); #endregion #region Plugins Plugins.Add(new CorsFeature( allowedHeaders: "Content-Type, Allow, Authorization")); Plugins.Add(new OpenApiFeature() { ApiDeclarationFilter = declaration => { declaration.Info.Title = "Universal Catalogs"; //declaration.Info.Contact = new ServiceStack.Api.OpenApi.Specification.OpenApiContact() //{ // Email = "*****@*****.**", // Name = "Alfredo Pacheco" //}; declaration.Info.Description = ""; }, OperationFilter = (verb, op) => { switch (verb) { case "POST": op.Parameters.RemoveAll(p => p.Name == "Id"); op.Parameters.RemoveAll(p => p.Name == "RowVersion"); break; default: break; } op.Parameters.RemoveAll(p => p.Name == "EntityName"); op.Parameters.RemoveAll(p => p.Name == "EF_State"); } }); Plugins.Add(new AutoQueryFeature { MaxLimit = 100 }); #endregion #region Auth var authProviders = new List <IAuthProvider> { new JwtAuthProvider(AppSettings) { RequireSecureConnection = false, AllowInQueryString = true }, new CredentialsAuthProvider() }; var authFeature = new AuthFeature(SessionFactory, authProviders.ToArray()); Plugins.Add(authFeature); //var authRepo = new OrmLiteAuthRepository(dbFactory); //container.Register<IUserAuthRepository>(authRepo); //authRepo.InitSchema(); //Plugins.Add(new RegistrationFeature()); //var admin = authRepo.GetUserAuthByUserName("admin"); //if (admin == null) // authRepo.CreateUserAuth(new UserAuth // { // UserName = "******", // Roles = new List<string> { RoleNames.Admin } // }, "admin"); #endregion //TODO: //Done. Global Response Filter: CommonResponse. //Done. Cache. //Done. Transactions. //Logging. //Batched requests. //attachments //Profiler. //Versioning. //Compression. //Autoquery. //stripe.com #region Cache //container.Register<ICacheClient>(new MemoryCacheClient()); #endregion #region App //container.Register(c => dbFactory.Open()); //container.Register(c => c.Resolve<IDbConnectionFactory>().OpenDbConnection()).ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <RevisionLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogTypeLogic>().ReusedWithin(ReuseScope.Request); container.Register <IEmailService>(i => new MailgunService()).ReusedWithin(ReuseScope.Request); //This App: ///start:generated:di<<< container.RegisterAutoWired <ActivityLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <ApprovalLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <EmailLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <AdvancedSortLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogTypeLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogTypeFieldLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <FilterDataLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <SortDataLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <TaskLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <TokenLogic>().ReusedWithin(ReuseScope.Request); ///end:generated:di<<< #endregion }
// Configure your AppHost with the necessary configuration and dependencies your App needs public override void Configure(Container container) { #region Logger LogManager.LogFactory = new NLogFactory(); Plugins.Add(new SharpPagesFeature { MetadataDebugAdminRole = RoleNames.Admin }); ILog Log = LogManager.GetLogger("MyApp"); #endregion SetConfig(new HostConfig { DefaultRedirectPath = "/index.html", DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false) }); JsConfig.IncludeNullValues = false; JsConfig.ExcludeTypeInfo = true; JsConfig.DateHandler = DateHandler.ISO8601; JsConfig.TextCase = TextCase.PascalCase; JsConfig.TimeSpanHandler = TimeSpanHandler.StandardFormat; #region Database var connString = AppSettings.Get("dbConnectionString", ""); if (connString == "%%CONN_STR%%") { connString = AppSettings.Get("dbConnectionStringDev", ""); } IOrmLiteDialectProvider dbProvider; switch (AppSettings.Get("dbProvider", "")) { case "postgresql": dbProvider = PostgreSqlDialect.Provider; break; case "sqlserver2008": dbProvider = SqlServerDialect.Provider; break; case "sqlserver2012": dbProvider = SqlServer2012Dialect.Provider; break; case "sqlserver2014": dbProvider = SqlServer2014Dialect.Provider; break; case "sqlserver2016": dbProvider = SqlServer2016Dialect.Provider; break; case "sqlserver2017": dbProvider = SqlServer2017Dialect.Provider; break; default: dbProvider = SqlServerDialect.Provider; break; } var dbFactory = new OrmLiteConnectionFactory(connString, dbProvider); container.Register <IDbConnectionFactory>(dbFactory); // OrmLiteConfig.StringFilter = s => s.Trim(); OrmLiteConfig.DialectProvider.StringSerializer = new JsonStringSerializer(); MyNamingStrategy.AppSettings = AppSettings; dbProvider.NamingStrategy = new MyNamingStrategy(); #endregion #region Plugins Plugins.Add(new CorsFeature( allowedHeaders: "Content-Type, Allow, Authorization")); Plugins.Add(new OpenApiFeature() { ApiDeclarationFilter = declaration => { declaration.Info.Title = "MDC"; // declaration.Info.Contact = new ServiceStack.Api.OpenApi.Specification.OpenApiContact() // { // Email = "*****@*****.**", // Name = "Alfredo Pacheco" // }; declaration.Info.Description = ""; }, OperationFilter = (verb, op) => { switch (verb) { case "POST": op.Parameters.RemoveAll(p => p.Name == "Id"); op.Parameters.RemoveAll(p => p.Name == "RowVersion"); break; default: break; } op.Parameters.RemoveAll(p => p.Name == "EntityName"); op.Parameters.RemoveAll(p => p.Name == "EF_State"); } }); Plugins.Add(new AutoQueryFeature { // MaxLimit = 100 }); Plugins.Add(new RequestLogsFeature()); Plugins.Add(new AdminFeature()); Plugins.Add(new ServerEventsFeature()); // var rollbarSettings = AppSettings.Get<RollbarSettings>("RollbarPluginSettings"); // Plugins.Add(new RollbarLoggerPlugin // { // ApiKey = rollbarSettings.ApiKey, // Enabled = rollbarSettings.Enabled, // EnableErrorTracking = rollbarSettings.EnableErrorTracking, // EnableRequestBodyTracking = rollbarSettings.EnableRequestBodyTracking, // EnableResponseTracking = rollbarSettings.EnableResponseTracking, // EnableSessionTracking = rollbarSettings.EnableSessionTracking, // Environment = rollbarSettings.Environment, // // HideRequestBodyForRequestDtoTypes = new List<Type>(), // // ExcludeRequestDtoTypes = new List<Type> // // { // // // Might have to exclude the Swagger requests to get the two to play nicely // // typeof(RollbarLogConfigRequest), // // typeof(SwaggerResource), // // typeof(SwaggerApiDeclaration) // // }, // RequiredRoles = rollbarSettings.RequiredRoles, // SkipLogging = IsRequestSkippedDuringRequestLogging // }); #endregion #region Auth var authProviders = new List <IAuthProvider> { new JwtAuthProvider(AppSettings) { RequireSecureConnection = false, AllowInQueryString = true }, new CredentialsAuthProvider(), new ApiKeyAuthProvider() { RequireSecureConnection = false, SessionCacheDuration = TimeSpan.FromMinutes(30) } }; var authFeature = new AuthFeature(SessionFactory, authProviders.ToArray()); Plugins.Add(authFeature); var authRepo = new OrmLiteAuthRepository <Account, UserAuthDetails>(dbFactory); container.Register <IAuthRepository>(authRepo); authRepo.InitSchema(); authRepo.InitApiKeySchema(); Plugins.Add(new RegistrationFeature()); var admin = authRepo.GetUserAuthByUserName("admin"); if (admin == null) { authRepo.CreateUserAuth(new Account { UserName = "******", Roles = new List <string> { RoleNames.Admin } }, "admin"); } #endregion // TODO: // Cache. // Logging. // Batched requests. // Profiler. // Versioning. // stripe.com #region Cache // container.Register<ICacheClient>(new MemoryCacheClient()); #endregion #region App AttachmentsIO.AppSettings = AppSettings; // container.Register(c => dbFactory.Open()); // container.Register(c => c.Resolve<IDbConnectionFactory>().OpenDbConnection()).ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <RevisionLogic>().ReusedWithin(ReuseScope.Request); EmailService.AppSettings = AppSettings; container.Register <IEmailService>(i => new EmailService()).ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogDefinitionLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <FieldLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <CatalogFieldValueLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <AccountLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <TokenLogic>().ReusedWithin(ReuseScope.Request); // This App: ///start:generated:di<<< container.RegisterAutoWired <ApproverLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <AttachmentFileCommentLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <MDCLogic>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWired <MdcAttachmentFileLogic>().ReusedWithin(ReuseScope.Request); ///end:generated:di<<< #endregion #region Seed Data Sower.Seed(dbFactory); #endregion Log.Info("================= Application Started ================="); } // Configure
// Configure your AppHost with the necessary configuration and dependencies your App needs public override void Configure(Container container) { Plugins.Add(new PostmanFeature()); Plugins.Add(new OpenApiFeature()); SetConfig(new HostConfig { DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false), #if DEBUG AdminAuthSecret = "adm1nSecret", // Enable Admin Access with ?authsecret=adm1nSecret #endif }); container.Register <IList <GroupModel> >(new List <GroupModel>()); GlobalRequestFilters.Add((req, resp, reqDto) => { req.Items.Add("BeginTimestamp", DateTime.Now); }); GlobalResponseFilters.Add((req, resp, respDto) => { Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"**************** {nameof(GlobalResponseFilters)} ****************"); //Console.WriteLine($"***** req: {req.ToSafeJson()}"); Console.WriteLine(); var beginTimestamp = req.Items["BeginTimestamp"]; var endTimestamp = DateTime.Now; Console.WriteLine($"=====> Request at [{beginTimestamp}]"); if (req.IsAuthenticated()) { var session = req.SessionAs <CustomUserSession>(); var authRepo = container.Resolve <IAuthRepository>(); var manageRole = authRepo as IManageRoles; var roles = manageRole.GetRoles(session.UserAuthId); Console.WriteLine($" Username: {session.UserName}, Roles: {roles.ToSafeJson()}"); } Console.WriteLine($" {req.Verb}, {req.OperationName}, {req.Dto.ToSafeJson()}"); Console.WriteLine(); Console.WriteLine($"<===== Response at [{endTimestamp}]"); Console.WriteLine($" Type: {respDto.GetType().Name}"); // Console.WriteLine($"***** resp: {resp.ToSafeJson()}"); // Console.WriteLine(); if (respDto is HttpError) { var error = respDto as HttpError; var respStatus = error.ResponseStatus; Console.WriteLine($" Status: {error.Status}, {error.StatusCode}, {respStatus.ErrorCode}, {respStatus.Message}"); Console.WriteLine(); } else { object success = respDto is HttpResult ? (respDto as HttpResult).Response : respDto; Console.WriteLine($" respDto: {success.ToSafeJson()}"); Console.WriteLine(); } }); //Handle Exceptions occurring in Services: // ServiceExceptionHandlers.Add((httpReq, request, exception) => { //log your exceptions here... return(null); //continue with default Error Handling //or return your own custom response //return DtoUtils.CreateErrorResponse(request, exception); }); //Handle Unhandled Exceptions occurring outside of Services //E.g. Exceptions during Request binding or in filters: // UncaughtExceptionHandlers.Add((req, res, operationName, ex) => { res.Write($"Error: {ex.GetType().Name}: {ex.Message}"); res.EndRequest(skipHeaders: true); }); container.Register <IDbConnectionFactory>(c => new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider)); container.Register <IAuthRepository>(c => new OrmLiteAuthRepository(c.Resolve <IDbConnectionFactory>()) { UseDistinctRoleTables = true, }); container.Resolve <IAuthRepository>().InitSchema(); // // TODO: Replace OAuth App settings in: appsettings.Development.json Plugins.Add(new AuthFeature(() => new CustomUserSession(), new IAuthProvider[] { // new NetCoreIdentityAuthProvider(AppSettings) { // Adapter to enable ServiceStack Auth in MVC // AdminRoles = { "Manager" }, // Automatically Assign additional roles to Admin Users // }, new BasicAuthProvider(), //Allow Sign-ins with HTTP Basic Auth new CredentialsAuthProvider(AppSettings), // Sign In with Username / Password credentials // new FacebookAuthProvider(AppSettings), /* Create Facebook App at: https://developers.facebook.com/apps */ // new TwitterAuthProvider(AppSettings), /* Create Twitter App at: https://dev.twitter.com/apps */ // new GoogleAuthProvider(AppSettings), /* Create App https://console.developers.google.com/apis/credentials */ // new MicrosoftGraphAuthProvider(AppSettings), /* Create App https://apps.dev.microsoft.com */ }) { IncludeRegistrationService = true, IncludeAssignRoleServices = false, }); AddSeedUsers((IUserAuthRepository)container.Resolve <IAuthRepository>()); }