Ctrl K
ComunidadGuías…

lib/driver-continuation-access.js

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
var driverEligibility = require("./session-driver-eligibility");

function activeActor(users, ownerId) {
  if (!ownerId || !users || typeof users.findUserById !== "function") return null;
  var actor = users.findUserById(ownerId);
  if (!actor || actor.disabled === true || actor.active === false || actor.status === "disabled" || actor.status === "inactive") return null;
  return actor;
}

function authorize(settings, session, ownerId) {
  var users = settings.usersModule;
  if (!users || typeof users.isMultiUser !== "function") return false;
  if (!users.isMultiUser()) return !!session && !session.ownerId;
  var actor;
  try { actor = activeActor(users, ownerId); }
  catch (error) { return false; }
  if (!actor || !session || typeof settings.getProjectAccess !== "function" ||
      typeof settings.canAccessProjectSlug !== "function" || typeof users.canAccessSession !== "function") return false;
  try {
    var access = settings.getProjectAccess();
    if (!access || access.error || settings.canAccessProjectSlug(actor.id, settings.projectSlug) !== true) return false;
    return users.canAccessSession(actor.id, session, access) === true;
  } catch (error) {
    return false;
  }
}

function findOwnedSessionByOrigin(sessions, originId, ownerId) {
  if (!sessions || !originId) return null;
  var found = null;
  var ambiguous = false;
  sessions.forEach(function (session) {
    if (!session || session.sessionOriginId !== originId ||
        (session.ownerId || null) !== (ownerId || null)) return;
    if (found && found !== session) ambiguous = true;
    else found = session;
  });
  return ambiguous ? null : found;
}

function isLiveDriver(session, isMate, sessions, isDriverOperatedSession) {
  if (!session || isMate || session.isMate === true || !sessions || sessions.get(session.localId) !== session) return false;
  try {
    if (typeof isDriverOperatedSession === "function" && isDriverOperatedSession(session) === true) return false;
  } catch (error) {
    return false;
  }
  return driverEligibility.isEligibleDriverSession(session) && session.hidden !== true &&
    session.delegated !== true && !session._pairDelegation && !session._delegatedBy &&
    !session.scheduledTaskRun && !session.projectLogReview;
}

module.exports = { authorize: authorize, activeActor: activeActor,
  findOwnedSessionByOrigin: findOwnedSessionByOrigin, isLiveDriver: isLiveDriver };