// Tournaments
+export const isApplicant = (user, tournament) => {
+ if (!user || !tournament || !tournament.applications) {
+ return false;
+ }
+ return tournament.applications.find(p => p.user && p.user.id == user.id);
+};
+
+export const isDeniedApplicant = (user, tournament) => {
+ if (!user || !tournament || !tournament.applications) {
+ return false;
+ }
+ const applicant = tournament.applications.find(p => p.user && p.user.id == user.id);
+ return applicant && applicant.denied;
+};
+
export const isParticipant = (user, tournament) =>
user && tournament && tournament.participants &&
tournament.participants.find(p => p.user && p.user.id == user.id);
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 &&
+ (isRunner(user, tournament) || isTournamentAdmin(user, tournament));
-export const maySetSeed = (user, tournament) =>
- isAdmin(user) || isParticipant(user, tournament);
+export const mayApply = (user, tournament) =>
+ user && tournament && tournament.accept_applications &&
+ !isRunner(user, tournament) && !isApplicant(user, tournament);
-export const mayViewProtocol = (user, tournament) =>
+export const mayHandleApplications = (user, tournament) =>
+ tournament && tournament.accept_applications && isTournamentAdmin(user, tournament);
+
+export const mayLockRound = (user, tournament) =>
+ !tournament.locked && isTournamentAdmin(user, tournament);
+
+export const maySetSeed = (user, tournament, round) =>
+ !round.locked &&
+ (isRunner(user, tournament) || isTournamentAdmin(user, tournament));
+
+export const mayUpdateTournament = (user, tournament) =>
isAdmin(user) || isTournamentAdmin(user, tournament);
+export const mayViewProtocol = (user, tournament) =>
+ isTournamentCrew(user, tournament);
+
export const maySeeResults = (user, tournament, round) =>
- isAdmin(user) || hasFinished(user, round) || Round.isComplete(tournament, round);
+ round.locked ||
+ hasFinished(user, round) ||
+ isTournamentMonitor(user, tournament) ||
+ (isTournamentAdmin(user, tournament) && !isRunner(user, tournament)) ||
+ Round.isComplete(tournament, round);
// Users
+export const mayEditNickname = (user, subject) =>
+ isSameUser(user, subject);
+
export const mayEditStreamLink = (user, subject) =>
- isAdmin(user) || isSameUser(user, subject);
+ isSameUser(user, subject);