Refine admin role menus and editor default pickup permission
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
// Maintainer-controlled web client version.
|
// Maintainer-controlled web client version.
|
||||||
// Format: YYYY.MM.DD Rn (example: 2026.02.20 R2)
|
// Format: YYYY.MM.DD Rn (example: 2026.02.20 R2)
|
||||||
window.CHGRID_WEB_VERSION = "2026.02.27 R287";
|
window.CHGRID_WEB_VERSION = "2026.02.27 R288";
|
||||||
// Optional display timezone for timestamps. Falls back to America/Detroit if unset/invalid.
|
// Optional display timezone for timestamps. Falls back to America/Detroit if unset/invalid.
|
||||||
window.CHGRID_TIME_ZONE = "America/Detroit";
|
window.CHGRID_TIME_ZONE = "America/Detroit";
|
||||||
|
|||||||
@@ -1588,7 +1588,7 @@ function handleAdminRolesList(message: Extract<IncomingMessage, { type: 'admin_r
|
|||||||
adminRoleIndex = 0;
|
adminRoleIndex = 0;
|
||||||
const first = adminRoles[0];
|
const first = adminRoles[0];
|
||||||
if (first) {
|
if (first) {
|
||||||
updateStatus(`Set ${adminSelectedUsername} role. ${first.name}.`);
|
updateStatus(first.name);
|
||||||
audio.sfxUiBlip();
|
audio.sfxUiBlip();
|
||||||
} else {
|
} else {
|
||||||
updateStatus('No roles available.');
|
updateStatus('No roles available.');
|
||||||
@@ -1629,6 +1629,9 @@ function handleAdminUsersList(message: Extract<IncomingMessage, { type: 'admin_u
|
|||||||
|
|
||||||
/** Handles structured admin action result packets. */
|
/** Handles structured admin action result packets. */
|
||||||
function handleAdminActionResult(message: Extract<IncomingMessage, { type: 'admin_action_result' }>): void {
|
function handleAdminActionResult(message: Extract<IncomingMessage, { type: 'admin_action_result' }>): void {
|
||||||
|
if (message.action === 'role_update_permissions') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
updateStatus(message.message);
|
updateStatus(message.message);
|
||||||
if (message.ok) {
|
if (message.ok) {
|
||||||
audio.sfxUiConfirm();
|
audio.sfxUiConfirm();
|
||||||
@@ -2409,8 +2412,8 @@ function handleEffectSelectModeInput(code: string, key: string): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (control.type === 'cancel') {
|
if (control.type === 'cancel') {
|
||||||
state.mode = 'normal';
|
state.mode = 'adminMenu';
|
||||||
updateStatus('Cancelled.');
|
updateStatus('Admin menu.');
|
||||||
audio.sfxUiCancel();
|
audio.sfxUiCancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2872,7 +2875,7 @@ function handleAdminUserRoleSelectModeInput(code: string, key: string): void {
|
|||||||
const control = handleListControlKey(code, key, adminRoles, adminRoleIndex, (entry) => entry.name);
|
const control = handleListControlKey(code, key, adminRoles, adminRoleIndex, (entry) => entry.name);
|
||||||
if (control.type === 'move') {
|
if (control.type === 'move') {
|
||||||
adminRoleIndex = control.index;
|
adminRoleIndex = control.index;
|
||||||
updateStatus(`${adminSelectedUsername}: ${adminRoles[adminRoleIndex].name}.`);
|
updateStatus(adminRoles[adminRoleIndex].name);
|
||||||
audio.sfxUiBlip();
|
audio.sfxUiBlip();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ DEFAULT_ROLE_PERMISSIONS: dict[str, set[str]] = {
|
|||||||
"item.delete.own",
|
"item.delete.own",
|
||||||
"item.delete.any",
|
"item.delete.any",
|
||||||
"item.use",
|
"item.use",
|
||||||
|
"item.pickup_drop.own",
|
||||||
"item.pickup_drop.any",
|
"item.pickup_drop.any",
|
||||||
"chat.send",
|
"chat.send",
|
||||||
"voice.send",
|
"voice.send",
|
||||||
@@ -855,6 +856,12 @@ class AuthService:
|
|||||||
else:
|
else:
|
||||||
existing = self._db_fetchall("SELECT permission_key FROM role_permissions WHERE role_id = ?", (role_id,))
|
existing = self._db_fetchall("SELECT permission_key FROM role_permissions WHERE role_id = ?", (role_id,))
|
||||||
if existing:
|
if existing:
|
||||||
|
if role_name == "editor":
|
||||||
|
# Keep existing editor customizations but ensure own pickup/drop is present.
|
||||||
|
self._db_execute(
|
||||||
|
"INSERT OR IGNORE INTO role_permissions (role_id, permission_key) VALUES (?, ?)",
|
||||||
|
(role_id, "item.pickup_drop.own"),
|
||||||
|
)
|
||||||
# Preserve existing customizations for non-admin defaults.
|
# Preserve existing customizations for non-admin defaults.
|
||||||
continue
|
continue
|
||||||
allowed = DEFAULT_ROLE_PERMISSIONS.get(role_name, set())
|
allowed = DEFAULT_ROLE_PERMISSIONS.get(role_name, set())
|
||||||
|
|||||||
Reference in New Issue
Block a user