return p && p.roles && p.roles.includes('admin');
};
+export const isTournamentCrew = (user, tournament) =>
+ isTournamentAdmin(user, tournament) || isTournamentMonitor(user, tournament);
+
+export const isTournamentMonitor = (user, tournament) => {
+ const p = isParticipant(user, tournament);
+ return p && p.roles && p.roles.includes('monitor');
+};
+
export const hasFinished = (user, round) =>
user && round && round.results &&
round.results.find(r => r.user_id == user.id && r.has_finished);
export const mayAddRounds = (user, tournament) =>
- isAdmin(user) || (!tournament.locked && isParticipant(user, tournament));
+ !tournament.locked &&
+ (isAdmin(user) || isRunner(user, tournament) || isTournamentAdmin(user, tournament));
export const mayLockRound = (user, tournament) =>
- isAdmin(user) || (!tournament.locked && isTournamentAdmin(user, tournament));
+ !tournament.locked && (isAdmin(user) || isTournamentAdmin(user, tournament));
-export const maySetSeed = (user, tournament) =>
- isAdmin(user) || isParticipant(user, tournament);
+export const maySetSeed = (user, tournament, round) =>
+ !round.locked &&
+ (isAdmin(user) || isRunner(user, tournament) || isTournamentAdmin(user, tournament));
export const mayViewProtocol = (user, tournament) =>
- isAdmin(user) || isTournamentAdmin(user, tournament);
+ isAdmin(user) || isTournamentCrew(user, tournament);
export const maySeeResults = (user, tournament, round) =>
- isAdmin(user) || hasFinished(user, round) || Round.isComplete(tournament, round);
+ hasFinished(user, round) ||
+ isTournamentMonitor(user, tournament) ||
+ (isTournamentAdmin(user, tournament) && !isRunner(user, tournament)) ||
+ Round.isComplete(tournament, round);
// Users