using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using Newtonsoft.Json;
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.Extensions;
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("swgLogin"), AllowAnonymous]
public dynamic SwgLogin([FromBody] SwaggerLoginRequest loginRequest)
{
if (loginRequest is null)
{
return new { result = false };
}
try
{
if (loginRequest.name == "admin" && loginRequest.pwd == $"admin!{DateTime.Now.ToString("yyyyMMdd")}")
{
HttpContext.SuccessSwagger();
return new { result = true };
}
}
catch (Exception ex)
{
}
return new { result = false };
}
[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);
App.User.UpdateToke(newToken, App.User.UserId);
return responseContent = WebResponseContent.Instance.OK(data: newToken);
}
catch (Exception ex)
{
return responseContent.Error(ex.Message);
}
}
///
/// 更新密码
///
/// 密码
/// 用户名
///
[HttpPost,Route("ModifyUserPwd")]
public WebResponseContent ModifyUserPwd(string password, string userName)
{
return Service.ModifyUserPwd(password,userName);
}
}
public class SwaggerLoginRequest
{
public string name { get; set; }
public string pwd { get; set; }
}
}