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 IUrlMappingRepository UrlMappingRepository
@inject IVisitorRepository VisitorRepository
@inject IJwtManager JwtManager
<!DOCTYPE html>
<html lang="@_language">
@ -48,7 +49,7 @@
<link id="app-stylesheet-module" />
@if (_renderMode == "Interactive")
{
<Head @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender)" />
<Head @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender.Contains("Prerendered"))" />
}
else
{
@ -61,11 +62,11 @@
{
@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
{
<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>
@ -91,17 +92,18 @@
@code {
private string _renderMode = "Interactive";
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 _antiForgeryToken = "";
private string _remoteIPAddress = "";
private string _headResources = "";
private string _bodyResources = "";
private string _styleSheets = "";
private string _PWAScript = "";
private string _reconnectScript = "";
private string _message = "";
private int _visitorId = -1;
// CascadingParameter is required to access HttpContext
[CascadingParameter]
@ -134,7 +136,7 @@
}
if (!string.IsNullOrEmpty(site.RenderMode))
{
_prerender = (site.RenderMode.Replace(site.Runtime, "")) == "Prerendered";
_prerender = site.RenderMode;
}
Route route = new Route(url, alias.Path);
@ -155,15 +157,10 @@
}
// get jwt token for downstream APIs
// if (User.Identity.IsAuthenticated)
// {
// var sitesettings = HttpContext.GetSiteSettings();
// 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")));
// }
// }
if (Context.User.Identity.IsAuthenticated)
{
CreateJwtToken(alias);
}
// stylesheets
var themes = ThemeRepository.GetThemes().ToList();
@ -298,12 +295,8 @@
language = (language.Trim().Length == 0) ? "??" : language;
// filter
string filter = Constants.DefaultVisitorFilter;
var settings = Context.GetSiteSettings();
if (settings.ContainsKey("VisitorFilter") && !string.IsNullOrEmpty(settings["VisitorFilter"]))
{
filter = settings["VisitorFilter"];
}
var filter = settings.GetValue("VisitorFilter", Constants.DefaultVisitorFilter);
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))
@ -329,11 +322,7 @@
{
// if enabled use IP Address correlation
_visitorId = -1;
bool correlate = true;
if (settings.ContainsKey("VisitorCorrelation") && !string.IsNullOrEmpty(settings["VisitorCorrelation"]))
{
correlate = bool.Parse(settings["VisitorCorrelation"]);
}
var correlate = bool.Parse(settings.GetValue("VisitorCorrelation", "true"));
if (correlate)
{
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)
{
return