api-build

This commit is contained in:
tongfei
2023-10-18 11:10:18 +08:00
parent b477662e67
commit 224efafabf
5 changed files with 217 additions and 6 deletions

View File

@@ -0,0 +1,97 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.IService.Public;
namespace WMS.Web.Api.Controllers
{
/// <summary>
/// 登录接口
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class LoginController : ControllerBase
{
private readonly ILoginService _loginService;
public LoginController(ILoginService loginService)
{
this._loginService = loginService;
}
/// <summary>
/// 登录
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet]
[Route("LoginIn")]
public async Task<Result<LoginInDto>> LoginIn([FromQuery] string code)
{
var result = await _loginService.GetUserInfoAsync(code);
return result;
}
/// <summary>
/// 退出登录
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("LoginOut")]
public async Task<Result> LoginOut()
{
string authorization = this.HttpContext.Request.Headers["Authorization"];
if (string.IsNullOrEmpty(authorization))
{
return Result.ReFailure(BaseResultCodes.UnAuthorized);
}
var logininfo = _loginService.GetLoginInfo(authorization);
if (logininfo == null || logininfo.UserInfo == null)
return Result.ReFailure(BaseResultCodes.UnAuthorized);
var dto = new LoginOutDto()
{
UcId = logininfo.UserInfo.UcId.ToString(),
SessionId = logininfo.UserInfo.SeesionId,
Token = logininfo.TokenInfo.Token,
AccessToken = logininfo.TokenInfo.PhpToken,
ExpiresIn = logininfo.TokenInfo.Expired
};
var res = await _loginService.LoginOutAsync(dto);
return res;
}
/// <summary>
/// PHP单点退出使用
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("LoginOutSingle")]
public async Task<Result> LoginOutSingle()
{
this.HttpContext.Request.Cookies.TryGetValue("PHPSESSID", out string value);
if (string.IsNullOrEmpty(value))
value = string.Empty;
if (!string.IsNullOrEmpty(value))
await _loginService.LoginOutSingleAsync(value);
return Result.ReSuccess();
}
/// <summary>
/// 刷新token
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("RefreshToken")]
public async Task<Result<LoginInDto>> RefreshToken()
{
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
if (loginInfo == null || loginInfo.UserInfo == null)
return Result<LoginInDto>.ReFailure(BaseResultCodes.UnAuthorized);
var res = await _loginService.RefreshToken(loginInfo.TokenInfo.Token, loginInfo.TokenInfo.RefreshToken);
return res;
}
}
}