1 using Microsoft.EntityFrameworkCore;
5 using System.Threading.Tasks;
33 this.cryptographySuite = cryptographySuite ??
throw new ArgumentNullException(nameof(cryptographySuite));
34 this.platformIdentifier = platformIdentifier ??
throw new ArgumentNullException(nameof(platformIdentifier));
46 CreatedAt = DateTimeOffset.Now,
48 Name = Api.Models.User.AdminName,
52 cryptographySuite.SetUserPassword(admin, Api.Models.User.DefaultAdminPassword,
true);
59 SeedAdminUser(databaseContext);
60 await databaseContext.
Save(cancellationToken).ConfigureAwait(
false);
66 var admin = await GetAdminUser(databaseContext, cancellationToken).ConfigureAwait(
false);
76 if (platformIdentifier.IsWindows)
79 var allInstances = await databaseContext
82 .ToListAsync(cancellationToken)
83 .ConfigureAwait(
false);
84 foreach (var instance
in allInstances)
85 instance.Path = instance.Path.Replace(
'\\',
'/');
88 await databaseContext.
Save(cancellationToken).ConfigureAwait(
false);
94 var admin = await GetAdminUser(databaseContext, cancellationToken).ConfigureAwait(
false);
98 cryptographySuite.SetUserPassword(admin, Api.Models.User.DefaultAdminPassword,
false);
101 await databaseContext.
Save(cancellationToken).ConfigureAwait(
false);
112 var admin = await databaseContext
116 .FirstOrDefaultAsync(cancellationToken)
117 .ConfigureAwait(
false);
118 if (admin ==
default)
119 SeedAdminUser(databaseContext);
readonly ICryptographySuite cryptographySuite
The ICryptographySuite for the DatabaseSeeder
Use server authentication
For initially seeding a database
async Task SanitizeDatabase(IDatabaseContext databaseContext, CancellationToken cancellationToken)
Correct invalid database data caused by previous versions.
void Add(TModel model)
Add a given model to the the working set.
async Task SeedDatabase(IDatabaseContext databaseContext, CancellationToken cancellationToken)
Initially seed a given databaseContext
AdministrationRights
Rights for Models.Administration
Contains various cryptographic functions
IDatabaseCollection< Instance > Instances
The Instances in the IDatabaseContext
async Task ResetAdminPassword(IDatabaseContext databaseContext, CancellationToken cancellationToken)
Changes the admin password in IDatabaseContext back to it's default and enables the account ...
InstanceManagerRights
Rights for managing Models.Instances
static string CanonicalizeName(string name)
Change a Api.Models.Internal.User.Name into a CanonicalName.
DatabaseSeeder(ICryptographySuite cryptographySuite, IPlatformIdentifier platformIdentifier)
Construct a DatabaseSeeder
readonly IPlatformIdentifier platformIdentifier
The IPlatformIdentifier for the DatabaseSeeder.
Task Save(CancellationToken cancellationToken)
Saves changes made to the IDatabaseContext
async Task< User > GetAdminUser(IDatabaseContext databaseContext, CancellationToken cancellationToken)
Get or create the admin User.
void SeedAdminUser(IDatabaseContext databaseContext)
Add a default admin User to a given databaseContext
IDatabaseCollection< User > Users
The Users in the IDatabaseContext