Hopefully now
Some checks failed
.NET Docker Build & Push / build_and_push (push) Has been cancelled
Some checks failed
.NET Docker Build & Push / build_and_push (push) Has been cancelled
This commit is contained in:
@@ -61,33 +61,36 @@ app.MapAdditionalIdentityEndpoints();
|
|||||||
|
|
||||||
using (var scope = app.Services.CreateScope())
|
using (var scope = app.Services.CreateScope())
|
||||||
{
|
{
|
||||||
var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
|
var services = scope.ServiceProvider;
|
||||||
var userManager = scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
|
try
|
||||||
|
{
|
||||||
|
var context = services.GetRequiredService<ApplicationDbContext>();
|
||||||
|
var roleManager = services.GetRequiredService<RoleManager<IdentityRole>>();
|
||||||
|
var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
|
||||||
|
|
||||||
var CouchLogDB = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
|
// WICHTIG: Nur EINES von beiden benutzen.
|
||||||
|
// Da du Probleme mit Migrationen hattest, nehmen wir EnsureCreated.
|
||||||
CouchLogDB.Database.Migrate();
|
// Das erstellt die DB sofort komplett neu, ignoriert aber Migrations-Dateien.
|
||||||
CouchLogDB.Database.EnsureCreated();
|
context.Database.EnsureCreated();
|
||||||
|
|
||||||
|
// 1. Rollen erstellen
|
||||||
string[] roleNames = { "Admin", "User" };
|
string[] roleNames = { "Admin", "User" };
|
||||||
IdentityResult roleResult;
|
|
||||||
|
|
||||||
foreach (var roleName in roleNames)
|
foreach (var roleName in roleNames)
|
||||||
{
|
{
|
||||||
var roleExist = await roleManager.RoleExistsAsync(roleName);
|
if (!await roleManager.RoleExistsAsync(roleName))
|
||||||
if (!roleExist)
|
|
||||||
{
|
{
|
||||||
roleResult = await roleManager.CreateAsync(new IdentityRole(roleName));
|
await roleManager.CreateAsync(new IdentityRole(roleName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 2. User erstellen
|
||||||
var adminUsername = "Admin";
|
var adminUsername = "Admin";
|
||||||
var normalUsername = "User";
|
var normalUsername = "User";
|
||||||
var adminPassword = "EinSehrSicheresPasswort123!";
|
var defaultPassword = "EinSehrSicheresPasswort123!";
|
||||||
|
|
||||||
var adminUser = await userManager.FindByNameAsync(adminUsername);
|
var adminUser = await userManager.FindByNameAsync(adminUsername);
|
||||||
var normalUser = await userManager.FindByNameAsync(normalUsername);
|
|
||||||
|
|
||||||
|
// FIX: Kein 'else if', sondern separater Block
|
||||||
if (adminUser == null)
|
if (adminUser == null)
|
||||||
{
|
{
|
||||||
adminUser = new ApplicationUser
|
adminUser = new ApplicationUser
|
||||||
@@ -95,62 +98,81 @@ using (var scope = app.Services.CreateScope())
|
|||||||
UserName = adminUsername,
|
UserName = adminUsername,
|
||||||
EmailConfirmed = true
|
EmailConfirmed = true
|
||||||
};
|
};
|
||||||
var createResult = await userManager.CreateAsync(adminUser, adminPassword);
|
var createResult = await userManager.CreateAsync(adminUser, defaultPassword);
|
||||||
|
|
||||||
if (createResult.Succeeded)
|
if (createResult.Succeeded)
|
||||||
{
|
{
|
||||||
await userManager.AddToRoleAsync(adminUser, "Admin");
|
await userManager.AddToRoleAsync(adminUser, "Admin");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (normalUser == null)
|
else if (!await userManager.IsInRoleAsync(adminUser, "Admin"))
|
||||||
|
{
|
||||||
|
// Falls User existiert, aber Rolle fehlt
|
||||||
|
await userManager.AddToRoleAsync(adminUser, "Admin");
|
||||||
|
}
|
||||||
|
|
||||||
|
var normalUser = await userManager.FindByNameAsync(normalUsername);
|
||||||
|
|
||||||
|
// FIX: Separater Block für den zweiten User
|
||||||
|
if (normalUser == null)
|
||||||
{
|
{
|
||||||
normalUser = new ApplicationUser
|
normalUser = new ApplicationUser
|
||||||
{
|
{
|
||||||
UserName = normalUsername,
|
UserName = normalUsername,
|
||||||
EmailConfirmed = true
|
EmailConfirmed = true
|
||||||
};
|
};
|
||||||
var createResult = await userManager.CreateAsync(normalUser, adminPassword);
|
var createResult = await userManager.CreateAsync(normalUser, defaultPassword);
|
||||||
|
|
||||||
if (createResult.Succeeded)
|
if (createResult.Succeeded)
|
||||||
{
|
{
|
||||||
await userManager.AddToRoleAsync(adminUser, "User");
|
// FIX: Hier stand vorher 'adminUser', muss 'normalUser' sein
|
||||||
|
await userManager.AddToRoleAsync(normalUser, "User");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!await userManager.IsInRoleAsync(normalUser, "User"))
|
else if (!await userManager.IsInRoleAsync(normalUser, "User"))
|
||||||
{
|
{
|
||||||
await userManager.AddToRoleAsync(normalUser, "User");
|
await userManager.AddToRoleAsync(normalUser, "User");
|
||||||
}
|
}
|
||||||
else if (!await userManager.IsInRoleAsync(adminUser, "Admin"))
|
|
||||||
|
|
||||||
|
// 3. Daten Seeden
|
||||||
|
// Erst speichern, damit die User IDs sicher in der DB sind
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
|
||||||
|
// Admin User neu laden um sicherzugehen, dass die ID da ist
|
||||||
|
var currentAdmin = await userManager.FindByNameAsync("Admin");
|
||||||
|
|
||||||
|
if (!context.MediaType.Any())
|
||||||
{
|
{
|
||||||
await userManager.AddToRoleAsync(adminUser, "Admin");
|
MediaType mediaType = new() { Name = "Movie" };
|
||||||
}
|
context.MediaType.Add(mediaType);
|
||||||
|
await context.SaveChangesAsync(); // Speichern, damit ID generiert wird
|
||||||
|
|
||||||
MediaType mediaType = new()
|
// GlobalEntity braucht die ID vom MediaType und vom User
|
||||||
|
if (!context.GlobalEntities.Any() && currentAdmin != null)
|
||||||
{
|
{
|
||||||
Name = "Movie"
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!CouchLogDB.MediaType.Any())
|
|
||||||
CouchLogDB.MediaType.Add(mediaType);
|
|
||||||
|
|
||||||
await CouchLogDB.SaveChangesAsync();
|
|
||||||
|
|
||||||
GlobalEntity globalEntity = new()
|
GlobalEntity globalEntity = new()
|
||||||
{
|
{
|
||||||
Title = "Inception",
|
Title = "Inception",
|
||||||
CreationTime = DateTime.Now,
|
CreationTime = DateTime.Now,
|
||||||
CreatorId = (await userManager.FindByNameAsync("Admin"))!.Id,
|
CreatorId = currentAdmin.Id,
|
||||||
TypeId = 1,
|
TypeId = mediaType.Id, // Nimm die echte ID aus der DB
|
||||||
PicturePath = "Pictures/Inception.jpg"
|
PicturePath = "Pictures/Inception.jpg"
|
||||||
};
|
};
|
||||||
|
context.GlobalEntities.Add(globalEntity);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!CouchLogDB.GlobalEntities.Any())
|
// Deine eigene Startup Logik
|
||||||
CouchLogDB.GlobalEntities.Add(globalEntity);
|
OnStartUp onStartUp = new(context);
|
||||||
|
|
||||||
await CouchLogDB.SaveChangesAsync();
|
|
||||||
|
|
||||||
OnStartUp onStartUp = new(CouchLogDB);
|
|
||||||
onStartUp.AddBasicDatabaseEntries();
|
onStartUp.AddBasicDatabaseEntries();
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine("------------------------------------------------");
|
||||||
|
Console.WriteLine("FEHLER BEIM DB INITIALISIEREN:");
|
||||||
|
Console.WriteLine(ex.Message);
|
||||||
|
Console.WriteLine("------------------------------------------------");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
app.Run();
|
app.Run();
|
||||||
Reference in New Issue
Block a user