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,118 +61,96 @@ app.MapAdditionalIdentityEndpoints();
using (var scope = app.Services.CreateScope()) using (var scope = app.Services.CreateScope())
{ {
var services = scope.ServiceProvider; var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
try var userManager = scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var CouchLogDB = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
CouchLogDB.Database.Migrate();
CouchLogDB.Database.EnsureCreated();
string[] roleNames = { "Admin", "User" };
IdentityResult roleResult;
foreach (var roleName in roleNames)
{ {
var context = services.GetRequiredService<ApplicationDbContext>(); var roleExist = await roleManager.RoleExistsAsync(roleName);
var roleManager = services.GetRequiredService<RoleManager<IdentityRole>>(); if (!roleExist)
var userManager = services.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();
// 1. Rollen erstellen
string[] roleNames = { "Admin", "User" };
foreach (var roleName in roleNames)
{ {
if (!await roleManager.RoleExistsAsync(roleName)) 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 UserName = adminUsername,
{ EmailConfirmed = true
UserName = adminUsername, };
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");
}
}
else if (!await userManager.IsInRoleAsync(adminUser, "Admin"))
{ {
// Falls User existiert, aber Rolle fehlt
await userManager.AddToRoleAsync(adminUser, "Admin"); 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
{
UserName = normalUsername,
EmailConfirmed = true
};
var createResult = await userManager.CreateAsync(normalUser, defaultPassword);
if (createResult.Succeeded)
{
// FIX: Hier stand vorher 'adminUser', muss 'normalUser' sein
await userManager.AddToRoleAsync(normalUser, "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())
{
MediaType mediaType = new() { Name = "Movie" };
context.MediaType.Add(mediaType);
await context.SaveChangesAsync(); // Speichern, damit ID generiert wird
// GlobalEntity braucht die ID vom MediaType und vom User
if (!context.GlobalEntities.Any() && currentAdmin != null)
{
GlobalEntity globalEntity = new()
{
Title = "Inception",
CreationTime = DateTime.Now,
CreatorId = currentAdmin.Id,
TypeId = mediaType.Id, // Nimm die echte ID aus der DB
PicturePath = "Pictures/Inception.jpg"
};
context.GlobalEntities.Add(globalEntity);
await context.SaveChangesAsync();
}
}
// Deine eigene Startup Logik
OnStartUp onStartUp = new(context);
onStartUp.AddBasicDatabaseEntries();
} }
catch (Exception ex) else if (normalUser == null)
{ {
Console.WriteLine("------------------------------------------------"); normalUser = new ApplicationUser
Console.WriteLine("FEHLER BEIM DB INITIALISIEREN:"); {
Console.WriteLine(ex.Message); UserName = normalUsername,
Console.WriteLine("------------------------------------------------"); EmailConfirmed = true
};
var createResult = await userManager.CreateAsync(normalUser, adminPassword);
if (createResult.Succeeded)
{
await userManager.AddToRoleAsync(adminUser, "User");
}
} }
else if (!await userManager.IsInRoleAsync(normalUser, "User"))
{
await userManager.AddToRoleAsync(normalUser, "User");
}
else if (!await userManager.IsInRoleAsync(adminUser, "Admin"))
{
await userManager.AddToRoleAsync(adminUser, "Admin");
}
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 = (await userManager.FindByNameAsync("Admin"))!.Id,
TypeId = 1,
PicturePath = "Pictures/Inception.jpg"
};
if (!CouchLogDB.GlobalEntities.Any())
CouchLogDB.GlobalEntities.Add(globalEntity);
await CouchLogDB.SaveChangesAsync();
OnStartUp onStartUp = new(CouchLogDB);
onStartUp.AddBasicDatabaseEntries();
} }
app.Run(); app.Run();