From d5d8b7253c613b0d7e4284dbc27d66a31e5896a9 Mon Sep 17 00:00:00 2001 From: Ted Wollman <25165500+TheTedder@users.noreply.github.com> Date: Wed, 16 Aug 2023 15:45:31 -0400 Subject: [PATCH] Remove seed data (#182) * Delete bad migrations. * Don't create a default admin user. * Remove seed data variables. --- ...0325191517_Users_SeedAdminUser.Designer.cs | 483 ------------------ .../20230325191517_Users_SeedAdminUser.cs | 46 -- LeaderboardBackend/Models/Entities/User.cs | 13 - LeaderboardBackend/Program.cs | 17 - example.env | 7 +- 5 files changed, 1 insertion(+), 565 deletions(-) delete mode 100644 LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.Designer.cs delete mode 100644 LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.cs diff --git a/LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.Designer.cs b/LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.Designer.cs deleted file mode 100644 index 47b95494..00000000 --- a/LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.Designer.cs +++ /dev/null @@ -1,483 +0,0 @@ -// -using System; -using LeaderboardBackend.Models.Entities; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using NodaTime; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace LeaderboardBackend.Migrations -{ - [DbContext(typeof(ApplicationContext))] - [Migration("20230325191517_Users_SeedAdminUser")] - partial class UsersSeedAdminUser - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Ban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BannedUserId") - .HasColumnType("uuid") - .HasColumnName("banned_user_id"); - - b.Property("BanningUserId") - .HasColumnType("uuid") - .HasColumnName("banning_user_id"); - - b.Property("CreatedAt") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at") - .HasDefaultValueSql("now()"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("LeaderboardId") - .HasColumnType("bigint") - .HasColumnName("leaderboard_id"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.HasKey("Id") - .HasName("pk_bans"); - - b.HasIndex("BannedUserId") - .HasDatabaseName("ix_bans_banned_user_id"); - - b.HasIndex("BanningUserId") - .HasDatabaseName("ix_bans_banning_user_id"); - - b.HasIndex("LeaderboardId") - .HasDatabaseName("ix_bans_leaderboard_id"); - - b.ToTable("bans", (string)null); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Category", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("LeaderboardId") - .HasColumnType("bigint") - .HasColumnName("leaderboard_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("PlayersMax") - .HasColumnType("integer") - .HasColumnName("players_max"); - - b.Property("PlayersMin") - .HasColumnType("integer") - .HasColumnName("players_min"); - - b.Property("Rules") - .HasColumnType("text") - .HasColumnName("rules"); - - b.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_categories"); - - b.HasIndex("LeaderboardId") - .HasDatabaseName("ix_categories_leaderboard_id"); - - b.ToTable("categories", (string)null); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Judgement", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Approved") - .HasColumnType("boolean") - .HasColumnName("approved"); - - b.Property("CreatedAt") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at") - .HasDefaultValueSql("now()"); - - b.Property("JudgeId") - .HasColumnType("uuid") - .HasColumnName("judge_id"); - - b.Property("Note") - .IsRequired() - .HasColumnType("text") - .HasColumnName("note"); - - b.Property("RunId") - .HasColumnType("uuid") - .HasColumnName("run_id"); - - b.HasKey("Id") - .HasName("pk_judgements"); - - b.HasIndex("JudgeId") - .HasDatabaseName("ix_judgements_judge_id"); - - b.HasIndex("RunId") - .HasDatabaseName("ix_judgements_run_id"); - - b.ToTable("judgements", (string)null); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Leaderboard", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Rules") - .HasColumnType("text") - .HasColumnName("rules"); - - b.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_leaderboards"); - - b.ToTable("leaderboards", (string)null); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Modship", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("LeaderboardId") - .HasColumnType("bigint") - .HasColumnName("leaderboard_id"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("pk_modships"); - - b.HasIndex("LeaderboardId") - .HasDatabaseName("ix_modships_leaderboard_id"); - - b.HasIndex("UserId") - .HasDatabaseName("ix_modships_user_id"); - - b.ToTable("modships", (string)null); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Participation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Comment") - .HasColumnType("text") - .HasColumnName("comment"); - - b.Property("RunId") - .HasColumnType("uuid") - .HasColumnName("run_id"); - - b.Property("RunnerId") - .HasColumnType("uuid") - .HasColumnName("runner_id"); - - b.Property("Vod") - .HasColumnType("text") - .HasColumnName("vod"); - - b.HasKey("Id") - .HasName("pk_participations"); - - b.HasIndex("RunId") - .HasDatabaseName("ix_participations_run_id"); - - b.HasIndex("RunnerId") - .HasDatabaseName("ix_participations_runner_id"); - - b.ToTable("participations", (string)null); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Run", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("id"); - - b.Property("CategoryId") - .HasColumnType("bigint") - .HasColumnName("category_id"); - - b.Property("PlayedOn") - .HasColumnType("date") - .HasColumnName("played_on"); - - b.Property("Status") - .HasColumnType("integer") - .HasColumnName("status"); - - b.Property("SubmittedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("submitted_at"); - - b.HasKey("Id") - .HasName("pk_runs"); - - b.HasIndex("CategoryId") - .HasDatabaseName("ix_runs_category_id"); - - b.ToTable("runs", (string)null); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("id"); - - b.Property("About") - .HasColumnType("text") - .HasColumnName("about"); - - b.Property("Admin") - .HasColumnType("boolean") - .HasColumnName("admin"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text") - .HasColumnName("email"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text") - .HasColumnName("password"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text") - .HasColumnName("username"); - - b.HasKey("Id") - .HasName("pk_users"); - - b.ToTable("users", (string)null); - - b.HasData( - new - { - Id = new Guid("421bb896-1990-48c6-8b0c-d69f56d6746a"), - Admin = true, - Email = "omega@star.com", - Password = "$2a$11$tNvA94WqpJ.O7S7D6lVMn.E/UxcFYztl3BkcnBj/hgE8PY/8nCRQe", - Username = "Galactus" - }); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Ban", b => - { - b.HasOne("LeaderboardBackend.Models.Entities.User", "BannedUser") - .WithMany("BansReceived") - .HasForeignKey("BannedUserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_bans_users_banned_user_id"); - - b.HasOne("LeaderboardBackend.Models.Entities.User", "BanningUser") - .WithMany("BansGiven") - .HasForeignKey("BanningUserId") - .HasConstraintName("fk_bans_users_banning_user_id"); - - b.HasOne("LeaderboardBackend.Models.Entities.Leaderboard", "Leaderboard") - .WithMany("Bans") - .HasForeignKey("LeaderboardId") - .HasConstraintName("fk_bans_leaderboards_leaderboard_id"); - - b.Navigation("BannedUser"); - - b.Navigation("BanningUser"); - - b.Navigation("Leaderboard"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Category", b => - { - b.HasOne("LeaderboardBackend.Models.Entities.Leaderboard", "Leaderboard") - .WithMany("Categories") - .HasForeignKey("LeaderboardId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_categories_leaderboards_leaderboard_id"); - - b.Navigation("Leaderboard"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Judgement", b => - { - b.HasOne("LeaderboardBackend.Models.Entities.User", "Judge") - .WithMany() - .HasForeignKey("JudgeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_judgements_users_judge_id"); - - b.HasOne("LeaderboardBackend.Models.Entities.Run", "Run") - .WithMany("Judgements") - .HasForeignKey("RunId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_judgements_runs_run_id"); - - b.Navigation("Judge"); - - b.Navigation("Run"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Modship", b => - { - b.HasOne("LeaderboardBackend.Models.Entities.Leaderboard", "Leaderboard") - .WithMany("Modships") - .HasForeignKey("LeaderboardId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_modships_leaderboards_leaderboard_id"); - - b.HasOne("LeaderboardBackend.Models.Entities.User", "User") - .WithMany("Modships") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_modships_users_user_id"); - - b.Navigation("Leaderboard"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Participation", b => - { - b.HasOne("LeaderboardBackend.Models.Entities.Run", "Run") - .WithMany("Participations") - .HasForeignKey("RunId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_participations_runs_run_id"); - - b.HasOne("LeaderboardBackend.Models.Entities.User", "Runner") - .WithMany("Participations") - .HasForeignKey("RunnerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_participations_users_runner_id"); - - b.Navigation("Run"); - - b.Navigation("Runner"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Run", b => - { - b.HasOne("LeaderboardBackend.Models.Entities.Category", "Category") - .WithMany() - .HasForeignKey("CategoryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_runs_categories_category_id"); - - b.Navigation("Category"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Leaderboard", b => - { - b.Navigation("Bans"); - - b.Navigation("Categories"); - - b.Navigation("Modships"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.Run", b => - { - b.Navigation("Judgements"); - - b.Navigation("Participations"); - }); - - modelBuilder.Entity("LeaderboardBackend.Models.Entities.User", b => - { - b.Navigation("BansGiven"); - - b.Navigation("BansReceived"); - - b.Navigation("Modships"); - - b.Navigation("Participations"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.cs b/LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.cs deleted file mode 100644 index b574771a..00000000 --- a/LeaderboardBackend/Migrations/20230325191517_Users_SeedAdminUser.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace LeaderboardBackend.Migrations -{ - /// - public partial class UsersSeedAdminUser : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - string email = - Environment.GetEnvironmentVariable("LGG_ADMIN_EMAIL") ?? "omega@star.com"; - string username = - Environment.GetEnvironmentVariable("LGG_ADMIN_USERNAME") ?? "Galactus"; - string password = - Environment.GetEnvironmentVariable("LGG_ADMIN_PASSWORD") ?? "3ntr0pyChaos"; - string hashedPassword = BCrypt.Net.BCrypt.EnhancedHashPassword(password); - - migrationBuilder.InsertData( - table: "users", - columns: new[] { "id", "about", "admin", "email", "password", "username" }, - values: new object[] - { - new Guid("421bb896-1990-48c6-8b0c-d69f56d6746a"), - null, - true, - email, - hashedPassword, - username - } - ); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DeleteData( - table: "users", - keyColumn: "id", - keyValue: new Guid("421bb896-1990-48c6-8b0c-d69f56d6746a") - ); - } - } -} diff --git a/LeaderboardBackend/Models/Entities/User.cs b/LeaderboardBackend/Models/Entities/User.cs index 7eb38e01..ff83a730 100644 --- a/LeaderboardBackend/Models/Entities/User.cs +++ b/LeaderboardBackend/Models/Entities/User.cs @@ -18,8 +18,6 @@ public enum UserRole /// public class User { - public static readonly Guid s_seedAdminId = new("421bb896-1990-48c6-8b0c-d69f56d6746a"); - /// /// The unique identifier of the `User`.
/// Generated on creation. @@ -109,16 +107,5 @@ public void Configure(EntityTypeBuilder builder) builder.HasIndex(x => x.Email) .IsUnique() .HasDatabaseName(EMAIL_UNIQUE_INDEX); - - builder.HasData( - new User - { - Id = User.s_seedAdminId, - Role = UserRole.Administrator, - Email = "omega@star.com", - Password = "$2a$11$tNvA94WqpJ.O7S7D6lVMn.E/UxcFYztl3BkcnBj/hgE8PY/8nCRQe", // "3ntr0pyChaos" - Username = "Galactus" - } - ); } } diff --git a/LeaderboardBackend/Program.cs b/LeaderboardBackend/Program.cs index 61a71e9d..1e0042a6 100644 --- a/LeaderboardBackend/Program.cs +++ b/LeaderboardBackend/Program.cs @@ -313,23 +313,6 @@ if (config.UseInMemoryDb) { context.Database.EnsureCreated(); - User? defaultUser = context.Find(User.s_seedAdminId); - if (defaultUser is null) - { - throw new InvalidOperationException("The default user was not correctly seeded."); - } - - defaultUser.Username = - Environment.GetEnvironmentVariable("LGG_ADMIN_USERNAME") ?? defaultUser.Username; - defaultUser.Email = - Environment.GetEnvironmentVariable("LGG_ADMIN_EMAIL") ?? defaultUser.Email; - string? newPassword = Environment.GetEnvironmentVariable("LGG_ADMIN_PASSWORD"); - if (newPassword is not null) - { - defaultUser.Password = BCryptNet.EnhancedHashPassword(newPassword); - } - - context.SaveChanges(); } else if (config.MigrateDb && app.Environment.IsDevelopment()) { diff --git a/example.env b/example.env index 85c73ce4..66d81cf3 100644 --- a/example.env +++ b/example.env @@ -5,7 +5,7 @@ AllowedOrigins=* ApplicationContext__UseInMemoryDb=false # migrate the database on startup (Development only) -ApplicationContext__MigrateDb=false +ApplicationContext__MigrateDb=false ApplicationContext__PG__HOST=localhost ApplicationContext__PG__USER=admin @@ -13,11 +13,6 @@ ApplicationContext__PG__PASSWORD=example ApplicationContext__PG__DB=leaderboardsmain ApplicationContext__PG__PORT=5432 -# customize the default admin user -LGG_ADMIN_EMAIL=omega@star.com -LGG_ADMIN_PASSWORD=3ntr0pyChaos -LGG_ADMIN_USERNAME=Galactus - JWT__KEY=coolsecretkeywow JWT__ISSUER=leaderboards.gg