revert 43fdd940b0
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
revert Hopefully now
This commit is contained in:
@@ -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();
|
||||
Reference in New Issue
Block a user