Merge pull request #1950 from btcpayserver/fixu2f-cascade

Make U2F devices cascade delete
This commit is contained in:
Nicolas Dorier 2020-10-08 12:00:30 +09:00 committed by GitHub
commit 83b28e0b00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 64 additions and 3 deletions

View file

@ -90,6 +90,7 @@ namespace BTCPayServer.Data
PullPaymentData.OnModelCreating(builder);
PayoutData.OnModelCreating(builder);
RefundData.OnModelCreating(builder);
U2FDevice.OnModelCreating(builder);
if (Database.IsSqlite() && !_designTime)
{

View file

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
namespace BTCPayServer.Data
{
@ -18,5 +19,15 @@ namespace BTCPayServer.Data
public string ApplicationUserId { get; set; }
public ApplicationUser ApplicationUser { get; set; }
internal static void OnModelCreating(ModelBuilder builder)
{
builder.Entity<U2FDevice>()
.HasOne(o => o.ApplicationUser)
.WithMany(i => i.U2FDevices)
.HasForeignKey(i => i.ApplicationUserId).OnDelete(DeleteBehavior.Cascade);
}
}
}

View file

@ -0,0 +1,47 @@
using BTCPayServer.Data;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
namespace BTCPayServer.Migrations
{
[DbContext(typeof(ApplicationDbContext))]
[Migration("20201007090617_u2fDeviceCascade")]
public partial class u2fDeviceCascade : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
if (this.SupportDropForeignKey(migrationBuilder.ActiveProvider))
{
migrationBuilder.DropForeignKey(
name: "FK_U2FDevices_AspNetUsers_ApplicationUserId",
table: "U2FDevices");
migrationBuilder.AddForeignKey(
name: "FK_U2FDevices_AspNetUsers_ApplicationUserId",
table: "U2FDevices",
column: "ApplicationUserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
}
protected override void Down(MigrationBuilder migrationBuilder)
{
if (this.SupportDropForeignKey(migrationBuilder.ActiveProvider))
{
migrationBuilder.DropForeignKey(
name: "FK_U2FDevices_AspNetUsers_ApplicationUserId",
table: "U2FDevices");
migrationBuilder.AddForeignKey(
name: "FK_U2FDevices_AspNetUsers_ApplicationUserId",
table: "U2FDevices",
column: "ApplicationUserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
}
}
}
}

View file

@ -525,7 +525,8 @@ namespace BTCPayServer.Migrations
.HasColumnType("TEXT");
b.Property<string>("PullPaymentDataId")
.HasColumnType("TEXT");
.HasColumnType("TEXT")
.HasMaxLength(30);
b.HasKey("InvoiceDataId", "PullPaymentDataId");
@ -960,7 +961,8 @@ namespace BTCPayServer.Migrations
{
b.HasOne("BTCPayServer.Data.ApplicationUser", "ApplicationUser")
.WithMany("U2FDevices")
.HasForeignKey("ApplicationUserId");
.HasForeignKey("ApplicationUserId")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("BTCPayServer.Data.UserStore", b =>