public void CreateUsers(Container container) { var userRep = new OrmLiteAuthRepository(container.Resolve <IDbConnectionFactory>()); userRep.DropAndReCreateTables(); container.Register <IUserAuthRepository>(userRep); var appSettings = container.Resolve <PlacesToVisitAppSettings>(); var dataRepository = container.Resolve <IPlacesToVisitRepository>(); userRep.DropAndReCreateTables(); string pwHash; string pwSalt; new SaltedHash().GetHashAndSaltString( appSettings.Get("Salt", "debugSalt"), out pwHash, out pwSalt); var userAuth1 = userRep.CreateUserAuth(new UserAuth { Email = "*****@*****.**", DisplayName = "Darren", UserName = "******", FirstName = "Darren", LastName = "Reid", PasswordHash = pwHash, Salt = pwSalt, Roles = { "Admin" } }, "abc123"); var user1 = userAuth1.ConvertTo <User>(); dataRepository.CreateUserIfNotExists(user1); var userAuth2 = userRep.CreateUserAuth(new UserAuth { Email = "*****@*****.**", DisplayName = "Kyle", UserName = "******", FirstName = "Kyle", LastName = "Hodgson", PasswordHash = pwHash, Salt = pwSalt, Roles = { "Admin" } }, "123abc"); var user2 = userAuth2.ConvertTo <User>(); dataRepository.CreateUserIfNotExists(user2); }
/// <summary> /// Configure ServiceStack Authentication plugin. /// </summary> /// <param name="container">The container.</param> private void ConfigureAuth(Container container) { Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider(AppSettings), new JwtAuthProvider(AppSettings) { AuthKey = Convert.FromBase64String("3n/aJNQHPx0cLu/2dN3jWf0GSYL35QlMqgz+LH3hUyA="), RequireSecureConnection = false, }, new ApiKeyAuthProvider(AppSettings), new BasicAuthProvider(AppSettings), })); Plugins.Add(new RegistrationFeature()); var authRepo = new OrmLiteAuthRepository(container.Resolve <IDbConnectionFactory>()); container.Register <IAuthRepository>(c => authRepo); authRepo.InitSchema(); authRepo.CreateUserAuth(new UserAuth { UserName = "******", DisplayName = "Credentials", FirstName = "First", LastName = "Last", FullName = "First Last", }, "test"); }
private void CreateAdmine(OrmLiteAuthRepository authRepo) { var admine = authRepo.GetUserAuthByUserName("Maksym"); if (admine == null) { string hash; string salt; var adminEmail = ConfigurationManager.AppSettings["adminEmail"]; var adminLastName = ConfigurationManager.AppSettings["adminLastName"]; var adminName = ConfigurationManager.AppSettings["adminName"]; var adminPassword = ConfigurationManager.AppSettings["adminPassword"]; new SaltedHash().GetHashAndSaltString("password", out hash, out salt); authRepo.CreateUserAuth(new UserAuth { Id = 1, DisplayName = adminName, Email = adminEmail, UserName = adminName, FirstName = adminName, LastName = adminLastName, PasswordHash = hash, Salt = salt, Roles = new List <string> { RoleNames.Admin }, // Permissions = new List<string> { "GetStatus" } }, adminPassword); } }
/// <summary> /// Configure ServiceStack Authentication plugin. /// </summary> /// <param name="container">The container.</param> private void ConfigureAuth(Container container) { Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider(AppSettings), new ApiKeyAuthProvider(AppSettings), new BasicAuthProvider(AppSettings), })); Plugins.Add(new RegistrationFeature()); var authRepo = new OrmLiteAuthRepository(container.Resolve <IDbConnectionFactory>()); container.Register <IAuthRepository>(c => authRepo); authRepo.InitSchema(); authRepo.CreateUserAuth(new UserAuth { UserName = "******", DisplayName = "Credentials", FirstName = "First", LastName = "Last", FullName = "First Last", }, "test"); }
public override void Configure(Container container) { //1. Registering the Authorization Provider Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider() })); //2. Enabling the /register service Plugins.Add(new RegistrationFeature()); //3. configuring the Repository that uses SQL Server backend var connString = "Data Source=;Initial Catalog=;User ID=;password="******"johnd") == null) { ormLiteRepository.CreateUserAuth(new UserAuth { UserName = "******", FirstName = "John", LastName = "Doe", Roles = new List <string> { RoleNames.Admin } }, "mypassword"); } //4. Registering the Session Cache container.Register <ICacheClient>(new MemoryCacheClient()); }
public override void Configure(Container container) { Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider() })); Plugins.Add(new RegistrationFeature()); container.Register <ICacheClient>(new MemoryCacheClient()); //configuring OrmLiteAuthRepository that uses SQL Server backend var connString = "Data Source=;Initial Catalog=;User ID=;password="******"johnd") == null) { ormLiteRepository.CreateUserAuth(new UserAuth { UserName = "******", FirstName = "John", LastName = "Doe", Roles = new List <string> { RoleNames.Admin } }, "mypassword"); } }
private void CreateUser(OrmLiteAuthRepository authRepo, int id, string username, string password, List <string> roles = null, List <string> permissions = null) { new SaltedHash().GetHashAndSaltString(password, out var hash, out var salt); authRepo.CreateUserAuth(new UserAuth { Id = id, DisplayName = username + " DisplayName", Email = username + "@gmail.com", UserName = username, FirstName = "First " + username, LastName = "Last " + username, PasswordHash = hash, Salt = salt, Roles = roles, Permissions = permissions }, password); authRepo.AssignRoles(id.ToString(), roles, permissions); }
private void CreateUser(OrmLiteAuthRepository authRepo, int id, string username, string email, string password) { string hash; string salt; new SaltedHash().GetHashAndSaltString(password, out hash, out salt); authRepo.CreateUserAuth(new UserAuth { Id = id, DisplayName = "DisplayName", Email = email ?? "as@if" + id.ToString() + ".com", UserName = username, FirstName = "FirstName", LastName = "LastName", PasswordHash = hash, Salt = salt, }, password); }
/// <summary> /// Configure ServiceStack Authentication plugin. /// </summary> /// <param name="container">The container.</param> private void ConfigureAuth(Container container) { Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider(AppSettings), new ApiKeyAuthProvider(AppSettings), })); var authRepo = new OrmLiteAuthRepository(container.Resolve <IDbConnectionFactory>()); container.Register <IAuthRepository>(c => authRepo); authRepo.InitSchema(); 5.Times(x => authRepo.CreateUserAuth(new UserAuth { UserName = $"user{x}", Email = $"user{x}@email.com", }, "test")); AfterInitCallbacks.Add(host => { var authProvider = (ApiKeyAuthProvider) AuthenticateService.GetAuthProvider(ApiKeyAuthProvider.Name); using (var db = host.TryResolve <IDbConnectionFactory>().Open()) { var userWithKeysIds = db.Column <string>(db.From <ApiKey>() .SelectDistinct(x => x.UserAuthId)).Map(int.Parse); var userIdsMissingKeys = db.Column <string>(db.From <UserAuth>() .Where(x => userWithKeysIds.Count == 0 || !userWithKeysIds.Contains(x.Id)) .Select(x => x.Id)); foreach (var userId in userIdsMissingKeys) { var apiKeys = authProvider.GenerateNewApiKeys(userId.ToString()); authRepo.StoreAll(apiKeys); } } }); }
private static void InitialDbTables(Funq.Container container, OrmLiteAuthRepository <UserAccount, UserAccountDetail> userRepository) { string hash, salt; new SaltedHash().GetHashAndSaltString("password1", out hash, out salt); userRepository.DropAndReCreateTables(); using (var dbConnection = container.Resolve <IDbConnectionFactory>().OpenDbConnection()) { dbConnection.CreateTable <Bill>(true); dbConnection.CreateTable <Invoice>(true); dbConnection.CreateTable <AddressBranching>(true); dbConnection.CreateTable <Address>(true); dbConnection.CreateTable <Company>(true); dbConnection.CreateTable <Category>(true); } userRepository.CreateUserAuth(new UserAccount { UserName = "******", Password = hash, FullName = "Cheng Zhang", Email = "*****@*****.**", Salt = salt, Roles = new List <string> { RoleNames.Admin }, Permissions = new List <string> { "Get" }, CreatedDate = DateTime.Now, Create_On = DateTime.Now, LastLoginTime = DateTime.Now, Last_Updated_By = 0, Last_Updated_On = DateTime.Now }, "password1"); }
public override void Configure(Funq.Container container) { //Set JSON web services to return idiomatic JSON camelCase properties ServiceStack.Text.JsConfig.EmitCamelCaseNames = true; //https://github.com/wordnik/swagger-core/wiki //Document your code and expose it to the world Plugins.Add(new SwaggerFeature()); //Registers authorization service and endpoints /auth and /auth{provider} Plugins.Add(new AuthFeature( () => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider() } ) { HtmlRedirect = null }); //Registers registartion service and endpoints /register, /assignroles, /unassignroles Plugins.Add(new RegistrationFeature()); this.RegisterAs <MyRegistrationValidator, IValidator <Registration> >(); Plugins.Add(new ValidationFeature()); container.RegisterValidators(typeof(CreateOrderValidator).Assembly); var dataFilePath = AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "\\data.db"; container.Register <IDbConnectionFactory>(new OrmLiteConnectionFactory(dataFilePath, SqliteDialect.Provider)); var userRep = new OrmLiteAuthRepository(container.Resolve <IDbConnectionFactory>()); container.Register <IUserAuthRepository>(userRep); var redisCon = ConfigurationManager.AppSettings["redisUrl"].ToString(); container.Register <IRedisClientsManager>(new PooledRedisClientManager(20, 60, redisCon)); container.Register <ICacheClient>(c => (ICacheClient)c.Resolve <IRedisClientsManager>().GetCacheClient()); //Set MVC to use the same Funq IOC as ServiceStack ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container)); //https://github.com/ServiceStack/ServiceStack.Redis/wiki/RedisPubSub //start threads that subscribe to Redis channels for Pub/Sub new OrderSubscribers(container).StartSubscriberThreads(); new FulfillmentSubscribers(container).StartSubscriberThreads(); //https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization#userauth-persistence---the-iuserauthrepository //Use ServiceStacks authentication/authorization persistence userRep.CreateMissingTables(); //Create missing Auth //Re-Create Tables for the demo using (var con = AppHostBase.Resolve <IDbConnectionFactory>().OpenDbConnection()) { con.CreateTable <Order>(true); con.CreateTable <Fulfillment>(true); } //clear redis using (var redis = AppHostBase.Resolve <IRedisClientsManager>().GetClient()) { } //Create dummy user accounts (TestUser/Password) foreach (var user in DummyUserAccounts.GetDummyAccounts()) { if (userRep.GetUserAuthByUserName(user.UserName) == null) { userRep.CreateUserAuth(new UserAuth { UserName = user.UserName }, user.Password); } } }
// 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) { #region Metadata SetConfig(new HostConfig { DefaultRedirectPath = "/metadata", DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false) }); #endregion #region Plugins Plugins.Add(new ValidationFeature()); container.RegisterValidators( typeof(CreatePlaceValidator).Assembly); Plugins.Add(new CorsFeature()); Plugins.Add(new PostmanFeature()); #endregion #region App container.RegisterAutoWiredAs <BasicOrmMessageRepository, IMessageRepository>(); container.RegisterAutoWired <MyAppSettings>(); var appSettings = container.Resolve <MyAppSettings>(); #endregion #region Database var dbFactory = new OrmLiteConnectionFactory( appSettings.Get("sqlLiteConnectionString", "").MapHostAbsolutePath(), SqliteDialect.Provider); container.Register <IDbConnectionFactory>(dbFactory); using (var db = dbFactory.OpenDbConnection()) { //db.DropAndCreateTable<UserGreeting>(); db.DropAndCreateTable <UserLanguage>(); db.DropAndCreateTable <GreetingUsage>(); } using (var db = dbFactory.OpenDbConnection()) { db.Insert(new UserLanguage { Language = "English" }); //db.Insert(new UserGreeting //{ // Greeting = "Hello, {0}", // UserLanguageId = 1 //}); //db.Insert(new UserGreeting //{ // Greeting = "G'day, {0}" //}); //db.Insert(new UserGreeting //{ // Greeting = "Howdy, {0}!" //}); } OrmLiteConfig.StringFilter = s => s.Trim(); #endregion #region Auth var authProviders = new List <IAuthProvider>(); authProviders.Add(new CredentialsAuthProvider()); var authFeature = new AuthFeature(SessionFactory, authProviders.ToArray()); Plugins.Add(authFeature); var authRepo = new OrmLiteAuthRepository(dbFactory); container.Register <IUserAuthRepository>(authRepo); container.Register <ICacheClient>(new MemoryCacheClient()); authRepo.DropAndReCreateTables(); authRepo.InitSchema(); Plugins.Add(new RegistrationFeature()); //CreateUsers(userRep); authRepo.CreateUserAuth(new UserAuth { UserName = "******", Roles = new List <string> { RoleNames.Admin } }, "admin"); #endregion //Plugins.Add(new OpenApiFeature()); //TODO: //Logging. //Cache. //Global Response Filter: CommonResponse. //Batched requests. //transactions. //attachments //Profiler. //Versioning. //Compression. //Autoquery. //stripe.com }