using Microsoft.AspNetCore.DataProtection.KeyManagement;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
namespace IES.ExamServer.Controllers
{
public class BaseController : ControllerBase
{
public BaseController()
{
}
public string GetIP()
{
var IpPort = HttpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault();
if (string.IsNullOrEmpty(IpPort))
{
IpPort = $"{HttpContext.Connection.RemoteIpAddress}";
}
if (IpPort.Contains("::"))
{
IpPort = "127.0.0.1";
}
return IpPort;
}
public string GetCookie(string key)
{
IRequestCookieCollection cookies = HttpContext.Request.Cookies;
string value = "";
if (cookies != null)
{
foreach (var ck in cookies)
{
if (ck.Key.Equals(key))
{
value = ck.Value;
break;
}
}
}
return value;
}
///
/// 取得AuthToken權杖資訊
///
/// Key Name
///
public (string id, string? name, string picture, string school,string scope ,string timeZone,List rolse, string keyData) GetAuthTokenInfo(string? key = null)
{
object? keyData = null;
HttpContext.Items.TryGetValue("ID", out object? id);
HttpContext.Items.TryGetValue("Name", out object? name);
HttpContext.Items.TryGetValue("Picture", out object? picture);
HttpContext.Items.TryGetValue("School", out object? school);
HttpContext.Items.TryGetValue("Scope", out object? scope);
HttpContext.Items.TryGetValue("TimeZone", out object? timeZone);
List rolse= new List();
if (HttpContext.Items.TryGetValue("Roles", out object? _roles))
{
if (_roles is List s)
{
rolse=s;
}
}
if (!string.IsNullOrWhiteSpace(key))
{
HttpContext.Items.TryGetValue(key, out keyData);
}
return ($"{id}", $"{name}", $"{picture}", $"{school}",$"{scope}",$"{timeZone}", rolse, $"{keyData}");
}
///
/// 取得驗證金鑰,Authorization
///
public string GetToken()
{
return HttpContext.Request.Headers["Authorization"].ToString();
}
///
/// 取得驗證金鑰,Authorization
///
public string? GetXAuthToken()
{
//return HttpContext.Request.Headers["X-Auth-AuthToken"].ToString();
try
{
if (HttpContext.Request.Headers.TryGetValue("X-Auth-AuthToken", out StringValues value))
return value.ToString();
else
return null;
}
catch
{
return null;
}
}
///
/// 取得JWT驗證金鑰,Authorization Bearer
///
///
///
public string GetJwtToken()
{
var token = string.Empty;
string authorization = HttpContext.Request.Headers["Authorization"].ToString();
if (!string.IsNullOrWhiteSpace(authorization) && authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
{
token = authorization.Substring("Bearer ".Length).Trim();
}
return token;
}
public int code = 0;
public string msg = "OK";
}
}