Merge pull request #4090 from sbwalker/dev
fix #4088 - redirect to login if not authenticated
This commit is contained in:
commit
273b4f20db
|
@ -251,105 +251,97 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (page != null)
|
// check if user is authorized to view page
|
||||||
|
if (page != null && UserSecurity.IsAuthorized(user, PermissionNames.View, page.PermissionList) && (Utilities.IsPageModuleVisible(page.EffectiveDate, page.ExpiryDate) || UserSecurity.IsAuthorized(user, PermissionNames.Edit, page.PermissionList)))
|
||||||
{
|
{
|
||||||
// check if user is authorized to view page
|
// edit mode
|
||||||
if (UserSecurity.IsAuthorized(user, PermissionNames.View, page.PermissionList) && (Utilities.IsPageModuleVisible(page.EffectiveDate, page.ExpiryDate) || UserSecurity.IsAuthorized(user, PermissionNames.Edit, page.PermissionList)))
|
if (user != null)
|
||||||
{
|
{
|
||||||
// edit mode
|
if (querystring.ContainsKey("editmode") && querystring["edit"] == "true")
|
||||||
if (user != null)
|
|
||||||
{
|
{
|
||||||
if (querystring.ContainsKey("editmode") && querystring["edit"] == "true")
|
editmode = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
editmode = (page.PageId == ((user.Settings.ContainsKey("CP-editmode")) ? int.Parse(user.Settings["CP-editmode"]) : -1));
|
||||||
|
if (!editmode)
|
||||||
{
|
{
|
||||||
editmode = true;
|
var userSettings = new Dictionary<string, string> { { "CP-editmode", "-1" } };
|
||||||
}
|
await SettingService.UpdateUserSettingsAsync(userSettings, user.UserId);
|
||||||
else
|
|
||||||
{
|
|
||||||
editmode = (page.PageId == ((user.Settings.ContainsKey("CP-editmode")) ? int.Parse(user.Settings["CP-editmode"]) : -1));
|
|
||||||
if (!editmode)
|
|
||||||
{
|
|
||||||
var userSettings = new Dictionary<string, string> { { "CP-editmode", "-1" } };
|
|
||||||
await SettingService.UpdateUserSettingsAsync(userSettings, user.UserId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// load additional metadata for current page
|
|
||||||
page = ProcessPage(page, site, user, SiteState.Alias);
|
|
||||||
|
|
||||||
// load additional metadata for modules
|
// load additional metadata for current page
|
||||||
(page, site.Modules) = ProcessModules(page, site.Modules, moduleid, action, (!string.IsNullOrEmpty(page.DefaultContainerType)) ? page.DefaultContainerType : site.DefaultContainerType, SiteState.Alias);
|
page = ProcessPage(page, site, user, SiteState.Alias);
|
||||||
|
|
||||||
// populate page state (which acts as a client-side cache for subsequent requests)
|
// load additional metadata for modules
|
||||||
_pagestate = new PageState
|
(page, site.Modules) = ProcessModules(page, site.Modules, moduleid, action, (!string.IsNullOrEmpty(page.DefaultContainerType)) ? page.DefaultContainerType : site.DefaultContainerType, SiteState.Alias);
|
||||||
|
|
||||||
|
// populate page state (which acts as a client-side cache for subsequent requests)
|
||||||
|
_pagestate = new PageState
|
||||||
|
{
|
||||||
|
Alias = SiteState.Alias,
|
||||||
|
Site = site,
|
||||||
|
Page = page,
|
||||||
|
User = user,
|
||||||
|
Uri = new Uri(_absoluteUri, UriKind.Absolute),
|
||||||
|
Route = route,
|
||||||
|
QueryString = querystring,
|
||||||
|
UrlParameters = route.UrlParameters,
|
||||||
|
ModuleId = moduleid,
|
||||||
|
Action = action,
|
||||||
|
EditMode = editmode,
|
||||||
|
LastSyncDate = lastsyncdate,
|
||||||
|
RenderMode = RenderMode,
|
||||||
|
Runtime = (Shared.Runtime)Enum.Parse(typeof(Shared.Runtime), Runtime),
|
||||||
|
VisitorId = visitorId,
|
||||||
|
RemoteIPAddress = SiteState.RemoteIPAddress,
|
||||||
|
ReturnUrl = returnurl,
|
||||||
|
IsInternalNavigation = _isInternalNavigation,
|
||||||
|
RenderId = Guid.NewGuid(),
|
||||||
|
Refresh = false
|
||||||
|
};
|
||||||
|
OnStateChange?.Invoke(_pagestate);
|
||||||
|
|
||||||
|
if (PageState.RenderMode == RenderModes.Interactive)
|
||||||
|
{
|
||||||
|
await ScrollToFragment(_pagestate.Uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (page == null)
|
||||||
|
{
|
||||||
|
// check for url mapping
|
||||||
|
var urlMapping = await UrlMappingService.GetUrlMappingAsync(site.SiteId, route.PagePath);
|
||||||
|
if (urlMapping != null && !string.IsNullOrEmpty(urlMapping.MappedUrl))
|
||||||
{
|
{
|
||||||
Alias = SiteState.Alias,
|
var url = (urlMapping.MappedUrl.StartsWith("http")) ? urlMapping.MappedUrl : route.SiteUrl + "/" + urlMapping.MappedUrl + route.Query;
|
||||||
Site = site,
|
NavigationManager.NavigateTo(url, false);
|
||||||
Page = page,
|
return;
|
||||||
User = user,
|
|
||||||
Uri = new Uri(_absoluteUri, UriKind.Absolute),
|
|
||||||
Route = route,
|
|
||||||
QueryString = querystring,
|
|
||||||
UrlParameters = route.UrlParameters,
|
|
||||||
ModuleId = moduleid,
|
|
||||||
Action = action,
|
|
||||||
EditMode = editmode,
|
|
||||||
LastSyncDate = lastsyncdate,
|
|
||||||
RenderMode = RenderMode,
|
|
||||||
Runtime = (Shared.Runtime)Enum.Parse(typeof(Shared.Runtime), Runtime),
|
|
||||||
VisitorId = visitorId,
|
|
||||||
RemoteIPAddress = SiteState.RemoteIPAddress,
|
|
||||||
ReturnUrl = returnurl,
|
|
||||||
IsInternalNavigation = _isInternalNavigation,
|
|
||||||
RenderId = Guid.NewGuid(),
|
|
||||||
Refresh = false
|
|
||||||
};
|
|
||||||
OnStateChange?.Invoke(_pagestate);
|
|
||||||
|
|
||||||
if (PageState.RenderMode == RenderModes.Interactive)
|
|
||||||
{
|
|
||||||
await ScrollToFragment(_pagestate.Uri);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
// Need to redirect 404 as page doesnot exist in a Permission or Timeframe
|
|
||||||
if (route.PagePath != "404")
|
|
||||||
{
|
|
||||||
// redirect to 404 page
|
|
||||||
NavigationManager.NavigateTo(Utilities.NavigateUrl(SiteState.Alias.Path, "404", ""));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else // page not found
|
|
||||||
{
|
|
||||||
// look for url mapping
|
|
||||||
var urlMapping = await UrlMappingService.GetUrlMappingAsync(site.SiteId, route.PagePath);
|
|
||||||
if (urlMapping != null && !string.IsNullOrEmpty(urlMapping.MappedUrl))
|
|
||||||
{
|
|
||||||
var url = (urlMapping.MappedUrl.StartsWith("http")) ? urlMapping.MappedUrl : route.SiteUrl + "/" + urlMapping.MappedUrl + route.Query;
|
|
||||||
NavigationManager.NavigateTo(url, false);
|
|
||||||
}
|
|
||||||
else // not mapped
|
|
||||||
{
|
{
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
// redirect to login page if user not logged in as they may need to be authenticated
|
// redirect to login page if user not logged in as they may need to be authenticated
|
||||||
NavigationManager.NavigateTo(Utilities.NavigateUrl(SiteState.Alias.Path, "login", "?returnurl=" + WebUtility.UrlEncode(route.PathAndQuery)));
|
NavigationManager.NavigateTo(Utilities.NavigateUrl(SiteState.Alias.Path, "login", "?returnurl=" + WebUtility.UrlEncode(route.PathAndQuery)));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
|
||||||
if (route.PagePath != "404")
|
// page not found or user does not have sufficient access
|
||||||
{
|
if (route.PagePath != "404")
|
||||||
// redirect to 404 page
|
{
|
||||||
NavigationManager.NavigateTo(Utilities.NavigateUrl(SiteState.Alias.Path, "404", ""));
|
// redirect to 404 page
|
||||||
}
|
NavigationManager.NavigateTo(Utilities.NavigateUrl(SiteState.Alias.Path, "404", ""));
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
// redirect to home page as a fallback
|
{
|
||||||
NavigationManager.NavigateTo(Utilities.NavigateUrl(SiteState.Alias.Path, "", ""));
|
// redirect to home page as a fallback
|
||||||
}
|
NavigationManager.NavigateTo(Utilities.NavigateUrl(SiteState.Alias.Path, "", ""));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user