api-build
This commit is contained in:
97
src/WMS.Web.Api/Controllers/LoginController.cs
Normal file
97
src/WMS.Web.Api/Controllers/LoginController.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user