mirror of
https://git.teknik.io/Teknikode/Teknik.git
synced 2023-08-02 14:16:22 +02:00
45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.Linq;
|
|
using Teknik.IdentityServer.Models;
|
|
using Teknik.Utilities.Attributes;
|
|
|
|
namespace Teknik.IdentityServer
|
|
{
|
|
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
|
|
{
|
|
public DbSet<AuthToken> AuthTokens { get; set; }
|
|
|
|
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
|
|
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
// User
|
|
modelBuilder.Entity<ApplicationUser>().HasMany(u => u.AuthTokens).WithOne(t => t.ApplicationUser).HasForeignKey(t => t.ApplicationUserId);
|
|
|
|
// Auth Tokens
|
|
modelBuilder.Entity<AuthToken>().ToTable("AuthTokens");
|
|
|
|
// Custom Attributes
|
|
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
|
|
{
|
|
foreach (var property in entityType.GetProperties())
|
|
{
|
|
var attributes = property?.PropertyInfo?.GetCustomAttributes(typeof(CaseSensitiveAttribute), false);
|
|
if (attributes != null && attributes.Any())
|
|
{
|
|
property.SetAnnotation("CaseSensitive", true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool Exists<T>(T entity) where T : class
|
|
{
|
|
return this.Set<T>().Local.Any(e => e == entity);
|
|
}
|
|
}
|
|
} |