mirror of
https://github.com/ACEmulator/ACE
synced 2026-08-17 12:26:06 -04:00
136 lines
5.2 KiB
C#
136 lines
5.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Pomelo.EntityFrameworkCore.MySql.Scaffolding.Internal;
|
|
|
|
namespace ACE.Database.Models.Auth;
|
|
|
|
public partial class AuthDbContext : DbContext
|
|
{
|
|
public AuthDbContext()
|
|
{
|
|
}
|
|
|
|
public AuthDbContext(DbContextOptions<AuthDbContext> options)
|
|
: base(options)
|
|
{
|
|
}
|
|
|
|
public virtual DbSet<Accesslevel> Accesslevel { get; set; }
|
|
|
|
public virtual DbSet<Account> Account { get; set; }
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
if (!optionsBuilder.IsConfigured)
|
|
{
|
|
var config = Common.ConfigManager.Config.MySql.Authentication;
|
|
|
|
var connectionString = $"server={config.Host};port={config.Port};user={config.Username};password={config.Password};database={config.Database};{config.ConnectionOptions}";
|
|
|
|
optionsBuilder.UseMySql(connectionString, DatabaseManager.CachedServerVersionAutoDetect(config.Database, connectionString), builder =>
|
|
{
|
|
builder.EnableRetryOnFailure(10);
|
|
});
|
|
|
|
if (config.EnableDetailedErrors)
|
|
optionsBuilder.EnableDetailedErrors();
|
|
|
|
if (config.EnableSensitiveDataLogging)
|
|
optionsBuilder.EnableSensitiveDataLogging();
|
|
}
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder
|
|
.UseCollation("utf8_general_ci")
|
|
.HasCharSet("utf8mb3");
|
|
|
|
modelBuilder.Entity<Accesslevel>(entity =>
|
|
{
|
|
entity.HasKey(e => e.Level).HasName("PRIMARY");
|
|
|
|
entity.ToTable("accesslevel");
|
|
|
|
entity.HasIndex(e => e.Level, "level").IsUnique();
|
|
|
|
entity.Property(e => e.Level)
|
|
.ValueGeneratedNever()
|
|
.HasColumnName("level");
|
|
entity.Property(e => e.Name)
|
|
.IsRequired()
|
|
.HasMaxLength(45)
|
|
.HasColumnName("name");
|
|
entity.Property(e => e.Prefix)
|
|
.HasMaxLength(45)
|
|
.HasDefaultValueSql("''")
|
|
.HasColumnName("prefix");
|
|
});
|
|
|
|
modelBuilder.Entity<Account>(entity =>
|
|
{
|
|
entity.HasKey(e => e.AccountId).HasName("PRIMARY");
|
|
|
|
entity.ToTable("account");
|
|
|
|
entity.HasIndex(e => e.AccessLevel, "accesslevel_idx");
|
|
|
|
entity.HasIndex(e => e.AccountName, "accountName_uidx").IsUnique();
|
|
|
|
entity.Property(e => e.AccountId).HasColumnName("accountId");
|
|
entity.Property(e => e.AccessLevel).HasColumnName("accessLevel");
|
|
entity.Property(e => e.AccountName)
|
|
.IsRequired()
|
|
.HasMaxLength(50)
|
|
.HasColumnName("accountName");
|
|
entity.Property(e => e.BanExpireTime)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("ban_Expire_Time");
|
|
entity.Property(e => e.BanReason)
|
|
.HasMaxLength(1000)
|
|
.HasColumnName("ban_Reason");
|
|
entity.Property(e => e.BannedByAccountId).HasColumnName("banned_By_Account_Id");
|
|
entity.Property(e => e.BannedTime)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("banned_Time");
|
|
entity.Property(e => e.CreateIP)
|
|
.HasMaxLength(16)
|
|
.HasColumnName("create_I_P");
|
|
entity.Property(e => e.CreateTime)
|
|
.HasDefaultValueSql("CURRENT_TIMESTAMP")
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("create_Time");
|
|
entity.Property(e => e.EmailAddress)
|
|
.HasMaxLength(320)
|
|
.HasColumnName("email_Address");
|
|
entity.Property(e => e.LastLoginIP)
|
|
.HasMaxLength(16)
|
|
.HasColumnName("last_Login_I_P");
|
|
entity.Property(e => e.LastLoginTime)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("last_Login_Time");
|
|
entity.Property(e => e.PasswordHash)
|
|
.IsRequired()
|
|
.HasMaxLength(88)
|
|
.HasComment("base64 encoded version of the hashed passwords. 88 characters are needed to base64 encode SHA512 output.")
|
|
.HasColumnName("passwordHash");
|
|
entity.Property(e => e.PasswordSalt)
|
|
.IsRequired()
|
|
.HasMaxLength(88)
|
|
.HasDefaultValueSql("'use bcrypt'")
|
|
.HasComment("This is no longer used, except to indicate if bcrypt is being employed for migration purposes. Previously: base64 encoded version of the password salt. 512 byte salts (88 characters when base64 encoded) are recommend for SHA512.")
|
|
.HasColumnName("passwordSalt");
|
|
entity.Property(e => e.TotalTimesLoggedIn).HasColumnName("total_Times_Logged_In");
|
|
|
|
entity.HasOne(d => d.AccessLevelNavigation).WithMany(p => p.Account)
|
|
.HasForeignKey(d => d.AccessLevel)
|
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
|
.HasConstraintName("fk_accesslevel");
|
|
});
|
|
|
|
OnModelCreatingPartial(modelBuilder);
|
|
}
|
|
|
|
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
|
|
}
|