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;
|
||||||
using Foxchat.Core.Models;
|
using Foxchat.Core.Models;
|
||||||
using Foxchat.Identity.Database;
|
using Foxchat.Identity.Database;
|
||||||
|
using Foxchat.Identity.Database.Models;
|
||||||
|
using Foxchat.Identity.Middleware;
|
||||||
|
using Foxchat.Identity.Utils;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Foxchat.Identity.Controllers;
|
namespace Foxchat.Identity.Controllers;
|
||||||
|
|
||||||
[ApiController]
|
[ApiController]
|
||||||
|
[ClientAuthenticate]
|
||||||
[Route("/_fox/ident/users")]
|
[Route("/_fox/ident/users")]
|
||||||
public class UsersController(ILogger logger, InstanceConfig config, IdentityContext db) : ControllerBase
|
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));
|
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