one can only make tournaments for teams they lead
This commit is contained in:
parent
5de94b4026
commit
3e6b9ede58
|
@ -225,8 +225,8 @@ final class Tournament(
|
|||
def form =
|
||||
Auth { implicit ctx => me =>
|
||||
NoLameOrBot {
|
||||
teamC.teamsIBelongTo(me) map { teams =>
|
||||
Ok(html.tournament.form.create(forms.create(me), teams))
|
||||
env.team.teamRepo.enabledTeamsByLeader(me.id) map { teams =>
|
||||
Ok(html.tournament.form.create(forms.create(me), teams.map(_.light)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ final class Tournament(
|
|||
err => BadRequest(html.tournament.form.create(err, teams)).fuccess,
|
||||
setup =>
|
||||
rateLimitCreation(me, setup.isPrivate, ctx.req) {
|
||||
api.createTournament(setup, me, teams, getUserTeamIds) map { tour =>
|
||||
api.createTournament(setup, me, teams, getLeaderTeamIds) map { tour =>
|
||||
Redirect {
|
||||
if (tour.isTeamBattle) routes.Tournament.teamBattleEdit(tour.id)
|
||||
else routes.Tournament.show(tour.id)
|
||||
|
@ -320,12 +320,12 @@ final class Tournament(
|
|||
setup =>
|
||||
rateLimitCreation(me, setup.isPrivate, req) {
|
||||
teamC.teamsIBelongTo(me) flatMap { teams =>
|
||||
api.createTournament(setup, me, teams, getUserTeamIds, andJoin = false) flatMap { tour =>
|
||||
api.createTournament(setup, me, teams, getLeaderTeamIds, andJoin = false) flatMap { tour =>
|
||||
jsonView(
|
||||
tour,
|
||||
none,
|
||||
none,
|
||||
getUserTeamIds,
|
||||
getLeaderTeamIds,
|
||||
env.team.getTeamName,
|
||||
none,
|
||||
none,
|
||||
|
@ -480,4 +480,7 @@ final class Tournament(
|
|||
|
||||
private def getUserTeamIds(user: lila.user.User): Fu[List[TeamID]] =
|
||||
env.team.cached.teamIdsList(user.id)
|
||||
|
||||
private def getLeaderTeamIds(user: lila.user.User): Fu[List[TeamID]] =
|
||||
env.team.teamRepo.enabledTeamIdsByLeader(user.id)
|
||||
}
|
||||
|
|
|
@ -19,13 +19,6 @@ final class TeamRepo(val coll: Coll)(implicit ec: scala.concurrent.ExecutionCont
|
|||
|
||||
def enabled(id: Team.ID) = coll.one[Team]($id(id) ++ enabledSelect)
|
||||
|
||||
def enabledTeamIdsByLeader(userId: User.ID): Fu[List[Team.ID]] =
|
||||
coll.distinctEasy[Team.ID, List](
|
||||
"_id",
|
||||
$doc("leaders" -> userId) ++ enabledSelect,
|
||||
ReadPreference.secondaryPreferred
|
||||
)
|
||||
|
||||
def byIdsSortPopular(ids: Seq[Team.ID]): Fu[List[Team]] =
|
||||
coll.ext
|
||||
.find($inIds(ids))
|
||||
|
@ -38,6 +31,14 @@ final class TeamRepo(val coll: Coll)(implicit ec: scala.concurrent.ExecutionCont
|
|||
.sort(sortPopular)
|
||||
.list[Team](100, ReadPreference.secondaryPreferred)
|
||||
|
||||
def enabledTeamIdsByLeader(userId: User.ID): Fu[List[Team.ID]] =
|
||||
coll.ext
|
||||
.primitive[Team.ID](
|
||||
$doc("leaders" -> userId) ++ enabledSelect,
|
||||
sortPopular,
|
||||
"_id"
|
||||
)
|
||||
|
||||
def leadersOf(teamId: Team.ID): Fu[Set[User.ID]] =
|
||||
coll.primitiveOne[Set[User.ID]]($id(teamId), "leaders").dmap(~_)
|
||||
|
||||
|
|
Loading…
Reference in a new issue