Merge pull request #4047 from sbwalker/dev

refactoring of #4027
This commit is contained in:
Shaun Walker 2024-03-21 18:44:28 -04:00 committed by GitHub
commit b0c1c6e880
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 72 deletions

View File

@ -112,21 +112,11 @@
{
PageState.EditMode = !editMode;
if(PageState.User != null) //keep edit mode for authenticated users.
if (PageState.User != null)
{
if(PageState.EditMode)
{
var userSettings = new Dictionary<string, string>
{
{ UserSetting.LastViewPageId, PageState.Page.PageId.ToString() }
};
await SettingService.UpdateUserSettingsAsync(userSettings, PageState.User.UserId);
}
else
{
await SettingService.DeleteSettingAsync(EntityNames.User, PageState.User.UserId, UserSetting.LastViewPageId);
}
// preserve edit mode for authenticated users
var userSettings = new Dictionary<string, string> { { "CP-editmode", (PageState.EditMode) ? PageState.Page.PageId.ToString() : "-1" } };
await SettingService.UpdateUserSettingsAsync(userSettings, PageState.User.UserId);
}
// preserve other querystring parameters

View File

@ -148,18 +148,11 @@
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
if (authState.User.Identity.IsAuthenticated && authState.User.Claims.Any(item => item.Type == "sitekey" && item.Value == SiteState.Alias.SiteKey))
{
if (PageState == null || PageState.Refresh || refresh || PageState.Alias.SiteId != SiteState.Alias.SiteId)
// get user
user = await UserService.GetUserAsync(authState.User.Identity.Name, SiteState.Alias.SiteId);
if (user != null)
{
// get user
user = await UserService.GetUserAsync(authState.User.Identity.Name, SiteState.Alias.SiteId);
if (user != null)
{
user.IsAuthenticated = authState.User.Identity.IsAuthenticated;
}
}
else
{
user = PageState.User;
user.IsAuthenticated = authState.User.Identity.IsAuthenticated;
}
}
@ -170,40 +163,6 @@
visitorId = PageState.VisitorId;
}
bool? pageChanged = null;
if(user != null && PageState?.Page != null)
{
var userSettings = await SettingService.GetUserSettingsAsync(user.UserId);
if(userSettings.ContainsKey(UserSetting.LastViewPageId))
{
int.TryParse(userSettings.GetValueOrDefault(UserSetting.LastViewPageId), out int lastViewPageId);
pageChanged = lastViewPageId != PageState.Page.PageId;
}
}
if (PageState?.Page.Path != route.PagePath || pageChanged.GetValueOrDefault(false))
{
editmode = false; // reset edit mode when navigating to different page
if (user != null)
{
await SettingService.DeleteSettingAsync(EntityNames.User, user.UserId, UserSetting.LastViewPageId);
}
}
else
{
if (querystring.ContainsKey("edit") && querystring["edit"] == "true")
{
editmode = true; // querystring can set edit mode
}
//check edit mode for authenticated users.
if (!editmode && user != null)
{
editmode = pageChanged.HasValue && !pageChanged.Value;
}
}
// process any sync events
var sync = await SyncService.GetSyncEventsAsync(lastsyncdate);
lastsyncdate = sync.SyncDate;
@ -298,6 +257,24 @@
// check if user is authorized to view page
if (UserSecurity.IsAuthorized(user, PermissionNames.View, page.PermissionList) && (Utilities.IsPageModuleVisible(page.EffectiveDate, page.ExpiryDate) || UserSecurity.IsAuthorized(user, PermissionNames.Edit, page.PermissionList)))
{
// edit mode
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)
{
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);

View File

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Oqtane.Models
{
public class UserSetting
{
public const string LastViewPageId = "Page:LastViewed";
}
}