using IdentityService.Infrastructure; using IdentityService.WebApi.Applications.Dtos.Common; using IdentityService.WebApi.Applications.User; using IM.ASPNETCore; using IM.Commons; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace IdentityService.WebApi.Controllers.User { [Authorize] [UnitOfWork(typeof(UserDbContext))] [Route("api/[controller]/[action]")] [ApiController] public class UserController : ControllerBase { private readonly UserService userService; public UserController(UserService userService) { this.userService = userService; } [HttpGet] [ProducesDefaultResponseType(typeof(Result))] public async Task Me() { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var res = await userService.GetUserInfoAsync(Guid.Parse(userId)); return Ok(res); } [HttpGet] [ProducesDefaultResponseType(typeof(Result))] public async Task Find(Guid userId) { return Ok(await userService.GetUserInfoAsync(userId)); } [HttpPost] [ProducesDefaultResponseType(typeof(Result))] public async Task Update([FromBody] UserUpdateRequest request) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var res = await userService.UpdateAsync(new UserUpdateCommand(Guid.Parse(userId), request.NickName, request.Region, request.Avatar, request.Description)); return Ok(res); } [HttpPost] [ProducesDefaultResponseType(typeof(Result>))] public async Task GetUsersByIds([FromBody] List ids) { return Ok(await userService.GetUsersByIdsAsync(ids)); } } }