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…
	
	Add table
		Add a link
		
	
		Reference in a new issue