Add secure public driver training profiles

This commit is contained in:
larssand
2026-08-24 16:54:35 +02:00
parent c2ed00861a
commit 4a74785791
12 changed files with 1360 additions and 12 deletions

View File

@@ -41,7 +41,23 @@ export function normalizeTrainingState(training, { uid }) {
.sort((left, right) => left.timestamp - right.timestamp)
: [];
return { goals, ledger };
const seenShareDrivers = new Set();
const shares = Array.isArray(source.shares)
? source.shares
.map((share) => ({
driverId: String(share?.driverId || ""),
token: String(share?.token || "").trim(),
enabled: share?.enabled !== false,
createdAt: String(share?.createdAt || new Date().toISOString()),
}))
.filter((share) => {
if (!share.driverId || share.token.length < 24 || seenShareDrivers.has(share.driverId)) return false;
seenShareDrivers.add(share.driverId);
return true;
})
: [];
return { goals, ledger, shares };
}
function getPassingSourceKey(sessionId, passing, index) {
@@ -82,7 +98,7 @@ export function syncTrainingLedger(training, state, { uid }) {
});
});
return normalizeTrainingState({ goals: normalized.goals, ledger: [...retained, ...current] }, { uid });
return normalizeTrainingState({ goals: normalized.goals, ledger: [...retained, ...current], shares: normalized.shares }, { uid });
}
export function getDriverTrainingLaps(state, driverId) {