using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using StackExchange.Profiling;
using WIDESEA_Core;
using WIDESEA_Core.Authorization;
using WIDESEA_Core.BaseController;
using WIDESEA_Core.Caches;
using WIDESEA_Core.Const;
using WIDESEA_Core.Helper;
using WIDESEA_Core.HttpContextUser;
using WIDESEA_Core.Utilities;
using WIDESEA_ISystemService;
using WIDESEA_Model;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers
{
///
/// 用户
///
[Route("api/User")]
[ApiController]
public class Sys_UserController : ApiBaseController
{
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ICacheService _cacheService;
public Sys_UserController(ISys_UserService userService, IHttpContextAccessor httpContextAccessor, ICacheService cacheService) : base(userService)
{
_httpContextAccessor = httpContextAccessor;
_cacheService = cacheService;
}
[HttpPost, Route("login"), AllowAnonymous]
public IActionResult Login([FromBody] LoginInfo loginInfo)
{
return Json(Service.Login(loginInfo));
}
[HttpPost, Route("getCurrentUserInfo")]
public WebResponseContent GetCurrentUser()
{
return Service.GetCurrentUserInfo();
}
[HttpPost, Route("modifyPwd")]
public IActionResult ModifyPwd(string oldPwd, string newPwd)
{
return Json(Service.ModifyPwd(oldPwd, newPwd));
}
[HttpGet, Route("getVierificationCode"), AllowAnonymous]
public IActionResult GetVierificationCode()
{
//var html = MiniProfiler.Current.RenderIncludes(_httpContextAccessor.HttpContext);
string code = "1234" /*VierificationCode.RandomText()*/;
var data = new
{
img = VierificationCode.CreateBase64Imgage(code),
uuid = Guid.NewGuid()
};
return Json(data);
}
[HttpGet, Route("SerializeJwt"), AllowAnonymous]
public WebResponseContent SerializeJwt(string code)
{
return WebResponseContent.Instance.OK(data: JwtHelper.SerializeJwt(code));
}
[HttpPost, Route("replaceToken")]
public WebResponseContent ReplaceToken()
{
WebResponseContent responseContent = new WebResponseContent();
try
{
string token = App.User.GetToken();
if (string.IsNullOrEmpty(token))
{
return responseContent = WebResponseContent.Instance.Error("token无效,请重新登录!");
}
TokenModelJwt tokenModelJwt = new TokenModelJwt()
{
RoleId = App.User.RoleId,
TenantId = App.User.TenantId,
UserId = App.User.UserId,
UserName = App.User.UserName
};
string newToken = JwtHelper.IssueJwt(tokenModelJwt);
_cacheService.AddOrUpdate(tokenModelJwt.UserId.ToString(), newToken);
return responseContent = WebResponseContent.Instance.OK(data: newToken);
}
catch (Exception ex)
{
return responseContent.Error(ex.Message);
}
}
}
}