using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using SameBeat.Domain.Encje; namespace SameBeat.Infrastructure.BazaDanych.Konfiguracje; public class UzytkownikKonfiguracja : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder budowniczy) { budowniczy.ToTable("Uzytkownicy"); budowniczy.HasKey(u => u.Id); budowniczy.Property(u => u.Nick) .IsRequired() .HasMaxLength(64); // Unikalny indeks case-insensitive na nicku -- zapobiega kolizjom typu "Piotr" vs "piotr" // przy logowaniu i w przyszlym wyswietlaniu listy uczestnikow. budowniczy.HasIndex(u => u.Nick).IsUnique(); budowniczy.Property(u => u.HasloHash) .HasMaxLength(1024); budowniczy.Property(u => u.Rola) .IsRequired() .HasConversion() .HasMaxLength(32); budowniczy.Property(u => u.UtworzonyUtc).IsRequired(); budowniczy.Property(u => u.Zbanowany).IsRequired(); // ETAP 7 -- blokada konta po zbyt wielu nieudanych probach logowania (brute force per-konto). budowniczy.Property(u => u.NieudaneProbyLogowania).IsRequired(); budowniczy.Property(u => u.ZablokowanyDoUtc); } }