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