refactor: add DatabaseContext.GetToken method

This commit is contained in:
sam 2024-09-11 16:23:45 +02:00
parent be34c4c77e
commit 2682cabfb0
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
6 changed files with 51 additions and 35 deletions

View file

@ -40,16 +40,10 @@ public partial class InternalController(DatabaseContext db, IClock clock) : Cont
template = GetCleanedTemplate(template);
// If no token was supplied, or it isn't valid base 64, return a null user ID (limiting by IP)
if (req.Token == null) return Ok(new RequestDataResponse(null, template));
if (!AuthUtils.TryFromBase64String(req.Token, out var rawToken))
if (!AuthUtils.TryParseToken(req.Token, out var rawToken))
return Ok(new RequestDataResponse(null, template));
var hash = SHA512.HashData(rawToken);
var oauthToken = await db.Tokens
.Include(t => t.Application)
.Include(t => t.User)
.FirstOrDefaultAsync(t => t.Hash == hash && t.ExpiresAt > clock.GetCurrentInstant() && !t.ManuallyExpired);
var oauthToken = await db.GetToken(rawToken);
return Ok(new RequestDataResponse(oauthToken?.UserId, template));
}