Beispiel #1
0
        public static async Task Main(string[] args)
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile(SettingsFileName)
                                .Build();

            var databaseSettings = configuration.GetSettings <DatabaseSettings>();

            var database = new SubmarineDatabaseBuilder()
                           .WithConnectionString(databaseSettings.ConnectionString)
                           .WithConvention(new EnumRepresentationConvention(BsonType.String))
                           .Build();

            var userCollection    = database.GetEntityCollection <UserEntity>();
            var licenseCollection = database.GetEntityCollection <LicenseEntity>();

            var hashedPassword  = BCrypt.Net.BCrypt.HashPassword("password");
            var isValidPassword = BCrypt.Net.BCrypt.Verify("password", hashedPassword);

            Console.WriteLine($"Generated Valid Password: {isValidPassword}");

            var user = new UserEntity
            {
                Id           = Guid.NewGuid(),
                EmailAddress = "*****@*****.**",
                Password     = hashedPassword,
                FriendlyName = "Joshua Crowe",
                UserName     = "******",
                Roles        = new List <UserRole> {
                    UserRole.Standard
                }
            };

            await userCollection.InsertOneAsync(user);

            var product = new LicenseProductEntity
            {
                Name       = "Submarine",
                Expiration = DateTime.UtcNow.AddYears(1)
            };

            var licenseKeyBytes  = Encoding.UTF8.GetBytes("licenseKey");
            var licenseKey       = Convert.ToBase64String(licenseKeyBytes);
            var hashedLicenseKey = BCrypt.Net.BCrypt.HashPassword(licenseKey);

            var license = new LicenseEntity
            {
                Id       = Guid.NewGuid(),
                UserId   = user.Id,
                Key      = hashedLicenseKey,
                Products = new List <LicenseProductEntity> {
                    product
                }
            };

            await licenseCollection.InsertOneAsync(license);

            Console.WriteLine($"Inserted User '{user.Id}' with License '{license.Id}'");
        }
        public static void AddSubmarineDatabase(this IServiceCollection serviceCollection, Action <SubmarineDatabaseBuilder> builder)
        {
            var submarineDatabaseBuilder = new SubmarineDatabaseBuilder();

            builder(submarineDatabaseBuilder);

            var database = submarineDatabaseBuilder.Build();

            serviceCollection.AddSingleton(database);
        }