Add permission checks to user dropdown menu (#7381)
Menu items are now conditionally rendered based on user rights and server features.
TheDevRyan committed
Oct 25, 2025 at 11:59 UTC
d31a7e54dc7ca087850d1594a2e320b60ad660f2
1 file changed
+13
-6
views/default3.handlebars
+13
-6
@@ -2127,6 +2127,13 @@
2127
userImageSrc = 'userimage.ashx?rnd=' + userinfo.accountImageRnd;
2128
}
2129
2130
+ // Check permissions
2131
+ var siteRights = userinfo ? userinfo.siteadmin : 0;
2132
+ var serverFeatures = parseInt('{{{serverfeatures}}}');
2133
+ var canViewUsers = ((users != null) && ((features & 4) == 0)) || (((userinfo && userinfo.siteadmin & 512) != 0) && ((features & 0x08000000) != 0));
2134
+ var canViewFiles = (siteRights & 8) != 0;
2135
+ var canViewServer = (siteRights & 21) && ((serverFeatures & 64) != 0);
2136
+
2137
logoutControl = '<div id="userDropdown">' +
2138
'<div id="userDropdownButton">' +
2139
'<img id="userDropdownImage" src="' + userImageSrc + '" />' +
@@ -2146,20 +2153,20 @@
2153
'<span>' + "My Events" + '</span>' +
2154
'</div>' +
2155
2149
- '<div class="userDropdownMenuItem userDropdownMobileOnly" onclick="goForward(\'users\'); QV(\'userDropdownMenu\', false); QV(\'uiSubmenu\', false); resetChevronArrow(); document.removeEventListener(\'click\', closeUISubmenu);">' +
2156
+ (canViewUsers ? '<div class="userDropdownMenuItem userDropdownMobileOnly" onclick="goForward(\'users\'); QV(\'userDropdownMenu\', false); QV(\'uiSubmenu\', false); resetChevronArrow(); document.removeEventListener(\'click\', closeUISubmenu);">' +
2157
'<i class="fa fa-users userDropdownMenuIcon"></i>' +
2158
'<span>' + "My Users" + '</span>' +
2152
- '</div>' +
2159
+ '</div>' : '') +
2160
2154
- '<div class="userDropdownMenuItem userDropdownMobileOnly" onclick="goForward(\'files\'); QV(\'userDropdownMenu\', false); QV(\'uiSubmenu\', false); resetChevronArrow(); document.removeEventListener(\'click\', closeUISubmenu);">' +
2161
+ (canViewFiles ? '<div class="userDropdownMenuItem userDropdownMobileOnly" onclick="goForward(\'files\'); QV(\'userDropdownMenu\', false); QV(\'uiSubmenu\', false); resetChevronArrow(); document.removeEventListener(\'click\', closeUISubmenu);">' +
2162
'<i class="fa fa-folder userDropdownMenuIcon"></i>' +
2163
'<span>' + "My Files" + '</span>' +
2157
- '</div>' +
2164
+ '</div>' : '') +
2165
2159
- '<div class="userDropdownMenuItem userDropdownMobileOnly" onclick="goForward(\'server\'); QV(\'userDropdownMenu\', false); QV(\'uiSubmenu\', false); resetChevronArrow(); document.removeEventListener(\'click\', closeUISubmenu);">' +
2166
+ (canViewServer ? '<div class="userDropdownMenuItem userDropdownMobileOnly" onclick="goForward(\'server\'); QV(\'userDropdownMenu\', false); QV(\'uiSubmenu\', false); resetChevronArrow(); document.removeEventListener(\'click\', closeUISubmenu);">' +
2167
'<i class="fa fa-server userDropdownMenuIcon"></i>' +
2168
'<span>' + "My Server" + '</span>' +
2162
- '</div>' +
2169
+ '</div>' : '') +
2170
2171
'<div id="userDropdownMenuDivider" class="userDropdownMobileOnly"></div>' +
2172