feat(identity): add /users/@me endpoint
This commit is contained in:
parent
8bd118ea67
commit
2919413118
1 changed files with 31 additions and 0 deletions
|
@ -1,12 +1,17 @@
|
|||
using Foxchat.Core;
|
||||
using Foxchat.Core.Models;
|
||||
using Foxchat.Identity.Database;
|
||||
using Foxchat.Identity.Database.Models;
|
||||
using Foxchat.Identity.Middleware;
|
||||
using Foxchat.Identity.Utils;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Foxchat.Identity.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[ClientAuthenticate]
|
||||
[Route("/_fox/ident/users")]
|
||||
public class UsersController(ILogger logger, InstanceConfig config, IdentityContext db) : ControllerBase
|
||||
{
|
||||
|
@ -18,4 +23,30 @@ public class UsersController(ILogger logger, InstanceConfig config, IdentityCont
|
|||
|
||||
return Ok(new Users.User(user.Id.ToString(), user.Username, config.Domain, null));
|
||||
}
|
||||
|
||||
[HttpGet("@me")]
|
||||
[Authorize("identify")]
|
||||
public IActionResult GetMe()
|
||||
{
|
||||
var acct = HttpContext.GetAccountOrThrow();
|
||||
var token = HttpContext.GetToken()!;
|
||||
var showEmail = token.Scopes.ExpandScopes().Contains("email");
|
||||
|
||||
return Ok(new MeUser(
|
||||
acct.Id,
|
||||
acct.Username,
|
||||
acct.Role,
|
||||
null,
|
||||
showEmail ? acct.Email : null
|
||||
));
|
||||
}
|
||||
|
||||
public record MeUser(
|
||||
Ulid Id,
|
||||
string Username,
|
||||
Account.AccountRole Role,
|
||||
string? AvatarUrl,
|
||||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||
string? Email
|
||||
);
|
||||
}
|
Loading…
Reference in a new issue