Authorized device

This commit is contained in:
2025-08-14 02:21:59 +08:00
parent 5f70d53c94
commit 1778ab112d
5 changed files with 11 additions and 5 deletions

View File

@@ -26,6 +26,7 @@ public class AuthController(
[Required] public ClientPlatform Platform { get; set; }
[Required] [MaxLength(256)] public string Account { get; set; } = null!;
[Required] [MaxLength(512)] public string DeviceId { get; set; } = null!;
[MaxLength(1024)] public string? DeviceName { get; set; }
public List<string> Audiences { get; set; } = new();
public List<string> Scopes { get; set; } = new();
}
@@ -57,7 +58,7 @@ public class AuthController(
.FirstOrDefaultAsync();
if (existingChallenge is not null) return existingChallenge;
var device = await auth.GetOrCreateDeviceAsync(account.Id, request.DeviceId, request.Platform);
var device = await auth.GetOrCreateDeviceAsync(account.Id, request.DeviceId, request.DeviceName, request.Platform);
var challenge = new AuthChallenge
{
ExpiredAt = Instant.FromDateTimeUtc(DateTime.UtcNow.AddHours(1)),

View File

@@ -105,6 +105,7 @@ public class AuthService(
public async Task<AuthClient> GetOrCreateDeviceAsync(
Guid accountId,
string deviceId,
string? deviceName = null,
ClientPlatform platform = ClientPlatform.Unidentified
)
{
@@ -116,6 +117,7 @@ public class AuthService(
DeviceId = deviceId,
AccountId = accountId
};
if (deviceName is not null) device.DeviceName = deviceName;
db.AuthClients.Add(device);
await db.SaveChangesAsync();

View File

@@ -14,6 +14,7 @@ public class AppleMobileConnectRequest
public class AppleMobileSignInRequest : AppleMobileConnectRequest
{
[Required]
[Required] [MaxLength(512)]
public required string DeviceId { get; set; }
[MaxLength(1024)] public string? DeviceName { get; set; }
}

View File

@@ -96,7 +96,8 @@ public class OidcController(
userInfo,
account,
HttpContext,
request.DeviceId
request.DeviceId,
request.DeviceName
);
return Ok(challenge);

View File

@@ -191,7 +191,8 @@ public abstract class OidcService(
OidcUserInfo userInfo,
Account.Account account,
HttpContext request,
string deviceId
string deviceId,
string? deviceName = null
)
{
// Create or update the account connection
@@ -217,7 +218,7 @@ public abstract class OidcService(
// Create a challenge that's already completed
var now = SystemClock.Instance.GetCurrentInstant();
var device = await auth.GetOrCreateDeviceAsync(account.Id, deviceId);
var device = await auth.GetOrCreateDeviceAsync(account.Id, deviceId, deviceName, ClientPlatform.Ios);
var challenge = new AuthChallenge
{
ExpiredAt = now.Plus(Duration.FromHours(1)),