🐛 Serval bug fixes

This commit is contained in:
2025-07-10 12:53:45 +08:00
parent be236a27c6
commit 1f2cdb146d
6 changed files with 10 additions and 13 deletions

View File

@ -39,7 +39,7 @@ namespace DysonNetwork.Sphere.Pages.Auth
await LoadChallengeAndFactor();
if (AuthChallenge == null) return NotFound("Challenge not found or expired.");
if (Factor == null) return NotFound("Authentication method not found.");
if (AuthChallenge.StepRemain == 0) return await ExchangeTokenAndRedirect();
if (AuthChallenge.StepRemain == 0) return await ExchangeTokenAndRedirect(AuthChallenge);
return Page();
}
@ -93,7 +93,7 @@ namespace DysonNetwork.Sphere.Pages.Auth
{ "account_id", AuthChallenge.AccountId }
}, Request, AuthChallenge.Account);
return await ExchangeTokenAndRedirect();
return await ExchangeTokenAndRedirect(AuthChallenge);
}
else
@ -145,14 +145,10 @@ namespace DysonNetwork.Sphere.Pages.Auth
}
}
private async Task<IActionResult> ExchangeTokenAndRedirect()
private async Task<IActionResult> ExchangeTokenAndRedirect(Challenge challenge)
{
var challenge = await db.AuthChallenges
.Include(e => e.Account)
.FirstOrDefaultAsync(e => e.Id == Id);
if (challenge == null) return BadRequest("Authorization code not found or expired.");
if (challenge.StepRemain != 0) return BadRequest("Challenge not yet completed.");
await db.Entry(challenge).ReloadAsync();
if (challenge.StepRemain != 0) return BadRequest($"Challenge not yet completed. Remaining steps: {challenge.StepRemain}");
var session = await db.AuthSessions
.FirstOrDefaultAsync(e => e.ChallengeId == challenge.Id);