using AgileConfig.Server.Common;
using AgileConfig.Server.IService;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Linq;
using System.Threading.Tasks;
namespace AgileConfig.Server.Apisite.Utilites
{
public static class ControllerExt
{
///
/// 获取用户名,优先从Claim获取,没有从Basic认证的头部取
///
///
///
public static string GetCurrentUserName(this Controller ctrl)
{
var name = ctrl.HttpContext.GetUserNameFromClaim();
if (string.IsNullOrEmpty(name))
{
var result = ctrl.Request.GetUserNamePasswordFromBasicAuthorization();
name = result.Item1;
}
return name;
}
///
/// 获取用户Id,优先从Claim获取,没有从Basic认证的头部取用户名后从数据库查Id
///
///
///
public static async Task GetCurrentUserId(this Controller ctrl, IUserService userservice = null)
{
var userId = ctrl.HttpContext.GetUserIdFromClaim();
if (string.IsNullOrEmpty(userId))
{
var result = ctrl.Request.GetUserNamePasswordFromBasicAuthorization();
if (!string.IsNullOrEmpty(result.Item1))
{
var user =(await userservice.GetUsersByNameAsync(result.Item1)).FirstOrDefault(x=>x.Status == Data.Entity.UserStatus.Normal);
userId = user?.Id;
}
}
return userId;
}
}
}