add support for Jwt Token creation

This commit is contained in:
sbwalker 2024-01-31 11:11:40 -05:00
parent 5e82700871
commit 69e4fcfc76

View File

@ -29,6 +29,7 @@
@inject IAliasRepository AliasRepository @inject IAliasRepository AliasRepository
@inject IUrlMappingRepository UrlMappingRepository @inject IUrlMappingRepository UrlMappingRepository
@inject IVisitorRepository VisitorRepository @inject IVisitorRepository VisitorRepository
@inject IJwtManager JwtManager
<!DOCTYPE html> <!DOCTYPE html>
<html lang="@_language"> <html lang="@_language">
@ -48,7 +49,7 @@
<link id="app-stylesheet-module" /> <link id="app-stylesheet-module" />
@if (_renderMode == "Interactive") @if (_renderMode == "Interactive")
{ {
<Head @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender)" /> <Head @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender.Contains("Prerendered"))" />
} }
else else
{ {
@ -61,11 +62,11 @@
{ {
@if (_renderMode == "Interactive") @if (_renderMode == "Interactive")
{ {
<Routes AntiForgeryToken="@_antiForgeryToken" Runtime="Server" RenderMode="PreRendered" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="" @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender)" /> <Routes AntiForgeryToken="@_antiForgeryToken" Runtime="@_interactiveRenderMode" RenderMode="@_prerender" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="@_authorizationToken" @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender.Contains("Prerendered"))" />
} }
else else
{ {
<Routes AntiForgeryToken="@_antiForgeryToken" Runtime="Server" RenderMode="PreRendered" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="" /> <Routes AntiForgeryToken="@_antiForgeryToken" Runtime="@_interactiveRenderMode" RenderMode="@_prerender" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="@_authorizationToken" />
} }
<script src="js/interop.js"></script> <script src="js/interop.js"></script>
@ -91,17 +92,18 @@
@code { @code {
private string _renderMode = "Interactive"; private string _renderMode = "Interactive";
private string _interactiveRenderMode = "Server"; private string _interactiveRenderMode = "Server";
private bool _prerender = true; private string _prerender = "Prerendered";
private int _visitorId = -1;
private string _remoteIPAddress = "";
private string _authorizationToken = "";
private string _language = "en"; private string _language = "en";
private string _antiForgeryToken = ""; private string _antiForgeryToken = "";
private string _remoteIPAddress = "";
private string _headResources = ""; private string _headResources = "";
private string _bodyResources = ""; private string _bodyResources = "";
private string _styleSheets = ""; private string _styleSheets = "";
private string _PWAScript = ""; private string _PWAScript = "";
private string _reconnectScript = ""; private string _reconnectScript = "";
private string _message = ""; private string _message = "";
private int _visitorId = -1;
// CascadingParameter is required to access HttpContext // CascadingParameter is required to access HttpContext
[CascadingParameter] [CascadingParameter]
@ -134,7 +136,7 @@
} }
if (!string.IsNullOrEmpty(site.RenderMode)) if (!string.IsNullOrEmpty(site.RenderMode))
{ {
_prerender = (site.RenderMode.Replace(site.Runtime, "")) == "Prerendered"; _prerender = site.RenderMode;
} }
Route route = new Route(url, alias.Path); Route route = new Route(url, alias.Path);
@ -155,15 +157,10 @@
} }
// get jwt token for downstream APIs // get jwt token for downstream APIs
// if (User.Identity.IsAuthenticated) if (Context.User.Identity.IsAuthenticated)
// { {
// var sitesettings = HttpContext.GetSiteSettings(); CreateJwtToken(alias);
// var secret = sitesettings.GetValue("JwtOptions:Secret", ""); }
// if (!string.IsNullOrEmpty(secret))
// {
// AuthorizationToken = _jwtManager.GenerateToken(alias, (ClaimsIdentity)User.Identity, secret, sitesettings.GetValue("JwtOptions:Issuer", ""), sitesettings.GetValue("JwtOptions:Audience", ""), int.Parse(sitesettings.GetValue("JwtOptions:Lifetime", "20")));
// }
// }
// stylesheets // stylesheets
var themes = ThemeRepository.GetThemes().ToList(); var themes = ThemeRepository.GetThemes().ToList();
@ -298,12 +295,8 @@
language = (language.Trim().Length == 0) ? "??" : language; language = (language.Trim().Length == 0) ? "??" : language;
// filter // filter
string filter = Constants.DefaultVisitorFilter;
var settings = Context.GetSiteSettings(); var settings = Context.GetSiteSettings();
if (settings.ContainsKey("VisitorFilter") && !string.IsNullOrEmpty(settings["VisitorFilter"])) var filter = settings.GetValue("VisitorFilter", Constants.DefaultVisitorFilter);
{
filter = settings["VisitorFilter"];
}
foreach (string term in filter.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(sValue => sValue.Trim()).ToArray()) foreach (string term in filter.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(sValue => sValue.Trim()).ToArray())
{ {
if (_remoteIPAddress.ToLower().Contains(term) || useragent.ToLower().Contains(term) || language.ToLower().Contains(term)) if (_remoteIPAddress.ToLower().Contains(term) || useragent.ToLower().Contains(term) || language.ToLower().Contains(term))
@ -329,11 +322,7 @@
{ {
// if enabled use IP Address correlation // if enabled use IP Address correlation
_visitorId = -1; _visitorId = -1;
bool correlate = true; var correlate = bool.Parse(settings.GetValue("VisitorCorrelation", "true"));
if (settings.ContainsKey("VisitorCorrelation") && !string.IsNullOrEmpty(settings["VisitorCorrelation"]))
{
correlate = bool.Parse(settings["VisitorCorrelation"]);
}
if (correlate) if (correlate)
{ {
visitor = VisitorRepository.GetVisitor(SiteId, _remoteIPAddress); visitor = VisitorRepository.GetVisitor(SiteId, _remoteIPAddress);
@ -416,6 +405,16 @@
} }
} }
private void CreateJwtToken(Alias alias)
{
var sitesettings = Context.GetSiteSettings();
var secret = sitesettings.GetValue("JwtOptions:Secret", "");
if (!string.IsNullOrEmpty(secret))
{
_authorizationToken = JwtManager.GenerateToken(alias, (ClaimsIdentity)Context.User.Identity, secret, sitesettings.GetValue("JwtOptions:Issuer", ""), sitesettings.GetValue("JwtOptions:Audience", ""), int.Parse(sitesettings.GetValue("JwtOptions:Lifetime", "20")));
}
}
private string CreatePWAScript(Alias alias, Site site, Route route) private string CreatePWAScript(Alias alias, Site site, Route route)
{ {
return return