private rover request fixes finally

This commit is contained in:
legop3
2026-06-01 19:53:17 -04:00
parent d205d3a05d
commit af5ddfb11d
9 changed files with 81 additions and 27 deletions
@@ -74,14 +74,25 @@ function createPrivateAccessPolicy(deps) {
}
function getControlDenialReason(record, socket, options = {}) {
const { allowUser = false } = options;
const { allowUser = false, allowClosedPrivateGrantInLockdown = false } = options;
if (!record) return 'Unknown rover';
if (!allowUser && !isAdmin(socket)) return 'Only admins can request control';
if (record.locked && !isAdmin(socket)) return 'Rover locked';
const mode = getMode();
if (!allowUser && mode === MODES.ADMIN && !isAdmin(socket)) return 'Admins only';
if (!allowUser && mode === MODES.LOCKDOWN && !isLockdownAdmin(socket)) return 'Server in lockdown';
if (mode === MODES.LOCKDOWN && !isLockdownAdmin(socket)) return 'Server in lockdown';
if (
mode === MODES.LOCKDOWN &&
!isLockdownAdmin(socket) &&
!(
allowClosedPrivateGrantInLockdown &&
isPrivateRecord(record) &&
!isPrivateOpen(record) &&
socketHasClosedPrivateAccess(socket, record.id)
)
) {
return 'Server in lockdown';
}
const { isDeterred } = require('../verificationService');
if (!isAdmin(socket) && isDeterred(socket)) return 'Not authorized';
if (!isPrivateRecord(record)) return null;