mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-24 14:50:50 +01:00
This lets the authorize api key screen redirect to the defined url and provide it with the user id, permissions granted and the key. This also allows apps to match existing api keys generated for it specifically using the application identifier, and if matched, presented with a confirmation page before redirection.
57 lines
1.5 KiB
C#
57 lines
1.5 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace BTCPayServer.Data
|
|
{
|
|
public class APIKeyData
|
|
{
|
|
[MaxLength(50)]
|
|
public string Id
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
[MaxLength(50)] public string StoreId { get; set; }
|
|
|
|
[MaxLength(50)] public string UserId { get; set; }
|
|
public string ApplicationIdentifier { get; set; }
|
|
|
|
public APIKeyType Type { get; set; } = APIKeyType.Legacy;
|
|
|
|
public byte[] Blob { get; set; }
|
|
public StoreData StoreData { get; set; }
|
|
public ApplicationUser User { get; set; }
|
|
public string Label { get; set; }
|
|
|
|
internal static void OnModelCreating(ModelBuilder builder)
|
|
{
|
|
builder.Entity<APIKeyData>()
|
|
.HasOne(o => o.StoreData)
|
|
.WithMany(i => i.APIKeys)
|
|
.HasForeignKey(i => i.StoreId).OnDelete(DeleteBehavior.Cascade);
|
|
|
|
builder.Entity<APIKeyData>()
|
|
.HasOne(o => o.User)
|
|
.WithMany(i => i.APIKeys)
|
|
.HasForeignKey(i => i.UserId).OnDelete(DeleteBehavior.Cascade);
|
|
|
|
builder.Entity<APIKeyData>()
|
|
.HasIndex(o => o.StoreId);
|
|
}
|
|
}
|
|
|
|
public class APIKeyBlob
|
|
{
|
|
public string[] Permissions { get; set; }
|
|
public string ApplicationIdentifier { get; set; }
|
|
public string ApplicationAuthority { get; set; }
|
|
|
|
}
|
|
|
|
public enum APIKeyType
|
|
{
|
|
Legacy,
|
|
Permanent
|
|
}
|
|
}
|