Hopefully now
Some checks failed
.NET Docker Build & Push / build_and_push (push) Has been cancelled

This commit is contained in:
2025-12-08 21:46:47 +01:00
parent 4c44c86fa1
commit 43fdd940b0

View File

@@ -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();