using Apimanager_backend.Dtos; using Apimanager_backend.Exceptions; using Apimanager_backend.Services; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Apimanager_backend.Filters; using Microsoft.AspNetCore.Authorization; using Apimanager_backend.Models; using System.Security.Claims; namespace Apimanager_backend.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class UserController : ControllerBase { private readonly IUserService userService; public UserController(IUserService userService) { this.userService = userService; } /// /// 获取用户个人信息 /// /// [HttpGet] [Authorize(Roles = "User")] public async Task>> UserInfo() { var userId = User.Claims.First(x => x.Type == "userId").Value; var userInfo = await userService.GetUserAsync(int.Parse(userId)); var res = new ResponseBase( code:1000, message:"Success", data:userInfo ); return Ok(res); } /// /// 重置用户密码 /// /// /// [HttpPost] public async Task>> Resetpassword([FromBody]ResetPasswordDto dto) { try { await userService.ResetPasswordAsync(dto.Email, dto.Code, dto.NewPassword); var res = new ResponseBase( code:1000, message:"Success", data: null ); return Ok(res); }catch(BaseException e) { var res = new ResponseBase( code:e.code, message:e.message, data:null ); return StatusCode(400,res); } } [HttpPost] public async Task>> SendResetEmail([FromQuery]string email) { await userService.SendResetPasswordEmailAsync(email); var res = new ResponseBase( code: 1000, message: "Success", data: null ); return Ok(res); } [HttpPost] [Authorize(Roles = "User")] public async Task>> Update([FromBody]UpdateUserDto dto) { var userId = User.Claims.First(x => x.ValueType == "userId").Value; var userInfo = await userService.UpdateUserAsync(int.Parse(userId),dto); var res = new ResponseBase( code:1000, message:"Success", data:userInfo ); return Ok(res); } } }