Release v2.17.0: add read-only user previews and access fallbacks
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m47s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 32s

This commit is contained in:
lzstealth committed 2026-10-23 01:55:33 +01:00
1 parent 11dd801f6d
commit 9c28eca3ef
52 files changed
+1624 -140

No files matched your search

+11 -1
View File
@@ -71,6 +71,7 @@ function registerUrlHelpers(Handlebars) {
function registerPermissionHelpers(Handlebars, deps) {
const hasPermission = deps && deps.hasPermission;
const hasAnyPermission = deps && deps.hasAnyPermission;
const hasAssignedPermission = deps && deps.hasAssignedPermission;
Handlebars.registerHelper('hasPermission', function (currentUser, permissionKey) {
return hasPermission(currentUser, permissionKey);
@@ -81,6 +82,10 @@ function registerPermissionHelpers(Handlebars, deps) {
args.pop();
return hasAnyPermission(currentUser, args);
});
Handlebars.registerHelper('hasAssignedPermission', function (currentUser, permissionKey) {
return hasAssignedPermission(currentUser, permissionKey);
});
}
function registerUserHelpers(Handlebars) {
@@ -171,6 +176,7 @@ function registerActionHelpers(Handlebars) {
// Shared partials are registered once at startup.
function registerPartials(Handlebars, viewsRoot) {
Handlebars.registerPartial('view-as-banner', fs.readFileSync(path.join(viewsRoot, 'shared', 'view-as-banner.hbs'), 'utf8'));
Handlebars.registerPartial('modal-shell', fs.readFileSync(path.join(viewsRoot, 'shared', 'modal-shell.hbs'), 'utf8'));
Handlebars.registerPartial('media-picker-modal', fs.readFileSync(path.join(viewsRoot, 'shared', 'media-picker-modal.hbs'), 'utf8'));
Handlebars.registerPartial('table-pagination', fs.readFileSync(path.join(viewsRoot, 'shared', 'table', 'table-pagination.hbs'), 'utf8'));
@@ -192,6 +198,10 @@ function registerHandlebars(Handlebars, deps) {
const viewsRoot = String(deps && deps.viewsRoot || '').trim();
const hasPermission = deps && deps.hasPermission;
const hasAnyPermission = deps && deps.hasAnyPermission;
const hasAssignedPermission = deps && deps.hasAssignedPermission || function (currentUser, permissionKey) {
if (!currentUser) return false;
return hasPermission(Object.assign({}, currentUser, { isViewingAs: false }), permissionKey);
};
if (!Handlebars || !viewsRoot || typeof hasPermission !== 'function' || typeof hasAnyPermission !== 'function') {
throw new Error('registerHandlebars requires Handlebars, viewsRoot, hasPermission, and hasAnyPermission.');
@@ -199,7 +209,7 @@ function registerHandlebars(Handlebars, deps) {
registerGeneralHelpers(Handlebars);
registerUrlHelpers(Handlebars);
registerPermissionHelpers(Handlebars, { hasPermission: hasPermission, hasAnyPermission: hasAnyPermission });
registerPermissionHelpers(Handlebars, { hasPermission: hasPermission, hasAnyPermission: hasAnyPermission, hasAssignedPermission: hasAssignedPermission });
registerUserHelpers(Handlebars);
registerActionHelpers(Handlebars);
registerPartials(Handlebars, viewsRoot);