revert 43fdd940b0
Some checks failed
.NET Docker Build & Push / build_and_push (push) Has been cancelled

revert Hopefully now
This commit is contained in:
Henry Trumme
2025-12-08 21:52:19 +01:00
parent 43fdd940b0
commit b49d839f1c

View File

@@ -61,36 +61,33 @@ app.MapAdditionalIdentityEndpoints();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<ApplicationDbContext>();
var roleManager = services.GetRequiredService<RoleManager<IdentityRole>>();
var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var userManager = scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
// WICHTIG: Nur EINES von beiden benutzen.
// Da du Probleme mit Migrationen hattest, nehmen wir EnsureCreated.
// Das erstellt die DB sofort komplett neu, ignoriert aber Migrations-Dateien.
context.Database.EnsureCreated();
var CouchLogDB = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
CouchLogDB.Database.Migrate();
CouchLogDB.Database.EnsureCreated();
// 1. Rollen erstellen
string[] roleNames = { "Admin", "User" };
IdentityResult roleResult;
foreach (var roleName in roleNames)
{
if (!await roleManager.RoleExistsAsync(roleName))
var roleExist = await roleManager.RoleExistsAsync(roleName);
if (!roleExist)
{
await roleManager.CreateAsync(new IdentityRole(roleName));
roleResult = await roleManager.CreateAsync(new IdentityRole(roleName));
}
}
// 2. User erstellen
var adminUsername = "Admin";
var normalUsername = "User";
var defaultPassword = "EinSehrSicheresPasswort123!";
var adminPassword = "EinSehrSicheresPasswort123!";
var adminUser = await userManager.FindByNameAsync(adminUsername);
var normalUser = await userManager.FindByNameAsync(normalUsername);
// FIX: Kein 'else if', sondern separater Block
if (adminUser == null)
{
adminUser = new ApplicationUser
@@ -98,81 +95,62 @@ using (var scope = app.Services.CreateScope())
UserName = adminUsername,
EmailConfirmed = true
};
var createResult = await userManager.CreateAsync(adminUser, defaultPassword);
var createResult = await userManager.CreateAsync(adminUser, adminPassword);
if (createResult.Succeeded)
{
await userManager.AddToRoleAsync(adminUser, "Admin");
}
}
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)
else if (normalUser == null)
{
normalUser = new ApplicationUser
{
UserName = normalUsername,
EmailConfirmed = true
};
var createResult = await userManager.CreateAsync(normalUser, defaultPassword);
var createResult = await userManager.CreateAsync(normalUser, adminPassword);
if (createResult.Succeeded)
{
// FIX: Hier stand vorher 'adminUser', muss 'normalUser' sein
await userManager.AddToRoleAsync(normalUser, "User");
await userManager.AddToRoleAsync(adminUser, "User");
}
}
else if (!await userManager.IsInRoleAsync(normalUser, "User"))
{
await userManager.AddToRoleAsync(normalUser, "User");
}
// 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())
else if (!await userManager.IsInRoleAsync(adminUser, "Admin"))
{
MediaType mediaType = new() { Name = "Movie" };
context.MediaType.Add(mediaType);
await context.SaveChangesAsync(); // Speichern, damit ID generiert wird
await userManager.AddToRoleAsync(adminUser, "Admin");
}
// GlobalEntity braucht die ID vom MediaType und vom User
if (!context.GlobalEntities.Any() && currentAdmin != null)
MediaType mediaType = new()
{
Name = "Movie"
};
if (!CouchLogDB.MediaType.Any())
CouchLogDB.MediaType.Add(mediaType);
await CouchLogDB.SaveChangesAsync();
GlobalEntity globalEntity = new()
{
Title = "Inception",
CreationTime = DateTime.Now,
CreatorId = currentAdmin.Id,
TypeId = mediaType.Id, // Nimm die echte ID aus der DB
CreatorId = (await userManager.FindByNameAsync("Admin"))!.Id,
TypeId = 1,
PicturePath = "Pictures/Inception.jpg"
};
context.GlobalEntities.Add(globalEntity);
await context.SaveChangesAsync();
}
}
// Deine eigene Startup Logik
OnStartUp onStartUp = new(context);
if (!CouchLogDB.GlobalEntities.Any())
CouchLogDB.GlobalEntities.Add(globalEntity);
await CouchLogDB.SaveChangesAsync();
OnStartUp onStartUp = new(CouchLogDB);
onStartUp.AddBasicDatabaseEntries();
}
catch (Exception ex)
{
Console.WriteLine("------------------------------------------------");
Console.WriteLine("FEHLER BEIM DB INITIALISIEREN:");
Console.WriteLine(ex.Message);
Console.WriteLine("------------------------------------------------");
}
}
app.Run();