// 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);
round.results.find(r => r.user_id == user.id && r.has_finished);
export const mayAddRounds = (user, tournament) =>
- isAdmin(user) || (!tournament.locked &&
- (isRunner(user, tournament) || isTournamentAdmin(user, tournament)));
+ !tournament.locked &&
+ (isRunner(user, tournament) || isTournamentAdmin(user, tournament));
+
+export const mayApply = (user, tournament) =>
+ user && tournament && tournament.accept_applications &&
+ !isRunner(user, tournament) && !isApplicant(user, tournament);
+
+export const mayHandleApplications = (user, tournament) =>
+ tournament && tournament.accept_applications && isTournamentAdmin(user, tournament);
+
+export const mayReportResult = (user, tournament) => {
+ if (!user || !tournament) return false;
+ if (tournament.type === 'open-async') return true;
+ return isRunner(user, tournament);
+};
+
+export const mayEditRound = (user, tournament) =>
+ !tournament.locked && isTournamentAdmin(user, tournament);
export const mayLockRound = (user, tournament) =>
- isAdmin(user) || (!tournament.locked && isTournamentAdmin(user, tournament));
+ !tournament.locked && isTournamentAdmin(user, tournament);
export const maySetSeed = (user, tournament, round) =>
- isAdmin(user) || (!round.locked &&
- (isRunner(user, tournament) || isTournamentAdmin(user, tournament)));
+ !round.locked &&
+ (isRunner(user, tournament) || isTournamentAdmin(user, tournament));
+
+export const mayUpdateTournament = (user, tournament) =>
+ isAdmin(user) || isTournamentAdmin(user, tournament);
export const mayViewProtocol = (user, tournament) =>
- isAdmin(user) || isTournamentCrew(user, tournament);
+ isTournamentCrew(user, tournament);
export const maySeeResults = (user, tournament, round) =>
- isAdmin(user) || hasFinished(user, round) ||
- isTournamentMonitor(user, tournament) ||
- (isTournamentAdmin(user, tournament) && !isRunner(user, tournament)) ||
- Round.isComplete(tournament, round);
+ round.locked ||
+ hasFinished(user, round) ||
+ isTournamentMonitor(user, tournament) ||
+ Round.isComplete(tournament, round);
// Users
export const mayEditNickname = (user, subject) =>
- isAdmin(user) || isSameUser(user, subject);
+ isSameUser(user, subject);
export const mayEditStreamLink = (user, subject) =>
- isAdmin(user) || isSameUser(user, subject);
+ isSameUser(user, subject);