[backend/api] Use UserRenderer in AuthController instead of instantiating the response object directly (ISH-209)

This commit is contained in:
Laura Hausmann 2024-03-21 16:52:23 +01:00
parent d5e0587048
commit 62469e2ea4
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
3 changed files with 7 additions and 24 deletions

View file

@ -1,5 +1,6 @@
using System.Diagnostics.CodeAnalysis;
using System.Net.Mime;
using Iceshrimp.Backend.Controllers.Renderers;
using Iceshrimp.Backend.Controllers.Schemas;
using Iceshrimp.Backend.Core.Database;
using Iceshrimp.Backend.Core.Database.Tables;
@ -17,12 +18,12 @@ namespace Iceshrimp.Backend.Controllers;
[EnableRateLimiting("sliding")]
[Produces(MediaTypeNames.Application.Json)]
[Route("/api/iceshrimp/v1/auth")]
public class AuthController(DatabaseContext db, UserService userSvc) : ControllerBase
public class AuthController(DatabaseContext db, UserService userSvc, UserRenderer userRenderer) : ControllerBase
{
[HttpGet]
[Authenticate]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(AuthResponse))]
public IActionResult GetAuthStatus()
public async Task<IActionResult> GetAuthStatus()
{
var session = HttpContext.GetSession();
@ -33,16 +34,7 @@ public class AuthController(DatabaseContext db, UserService userSvc) : Controlle
{
Status = session.Active ? AuthStatusEnum.Authenticated : AuthStatusEnum.TwoFactor,
Token = session.Token,
User = new UserResponse
{
Username = session.User.Username,
Id = session.User.Id,
AvatarUrl = session.User.AvatarUrl,
BannerUrl = session.User.BannerUrl,
DisplayName = session.User.DisplayName,
InstanceName = null,
InstanceIconUrl = null
}
User = await userRenderer.RenderOne(session.User)
});
}
@ -86,16 +78,7 @@ public class AuthController(DatabaseContext db, UserService userSvc) : Controlle
{
Status = session.Active ? AuthStatusEnum.Authenticated : AuthStatusEnum.TwoFactor,
Token = session.Token,
User = new UserResponse
{
Username = session.User.Username,
Id = session.User.Id,
AvatarUrl = session.User.AvatarUrl,
BannerUrl = session.User.BannerUrl,
DisplayName = session.User.DisplayName,
InstanceName = null,
InstanceIconUrl = null
}
User = await userRenderer.RenderOne(user)
});
}

View file

@ -51,7 +51,7 @@ public class UserRenderer(IOptions<Config.InstanceSection> config, MfmConverter
StatusesCount = user.NotesCount,
Note = await mfmConverter.ToHtmlAsync(profile?.Description ?? "", mentions, user.Host),
Url = profile?.Url ?? user.Uri ?? user.GetPublicUrl(config.Value),
AvatarStaticUrl = user.AvatarUrl ?? user.GetIdenticonUrl(config.Value), //TODO
AvatarStaticUrl = user.AvatarUrl ?? user.GetIdenticonUrlPng(config.Value), //TODO
HeaderUrl = user.BannerUrl ?? _transparent,
HeaderStaticUrl = user.BannerUrl ?? _transparent, //TODO
MovedToAccount = null, //TODO

View file

@ -25,7 +25,7 @@ public class UserRenderer(IOptions<Config.InstanceSection> config, DatabaseConte
Id = user.Id,
Username = user.Username,
DisplayName = user.DisplayName,
AvatarUrl = user.AvatarUrl ?? $"https://{config.Value.WebDomain}/identicon/{user.Id}",
AvatarUrl = user.AvatarUrl ?? user.GetIdenticonUrl(config.Value),
BannerUrl = user.BannerUrl,
InstanceName = instanceName,
InstanceIconUrl = instanceIcon