let study admins invite other members - closes #8816

pull/8840/head
Thibault Duplessis 2021-05-03 10:01:58 +02:00
parent cfe6376fa9
commit 0de491b0a0
1 changed files with 5 additions and 2 deletions

View File

@ -6,6 +6,7 @@ import lila.db.dsl._
import lila.notify.{ InvitedToStudy, Notification, NotifyApi }
import lila.pref.Pref
import lila.relation.{ Block, Follow }
import lila.security.Granter
import lila.user.{ Holder, User }
final private class StudyInvite(
@ -31,9 +32,11 @@ final private class StudyInvite(
getIsPresent: User.ID => Fu[Boolean]
): Fu[User] =
for {
_ <- !study.isOwner(byUserId) ?? fufail[Unit]("Only study owner can invite")
_ <- (study.nbMembers >= maxMembers) ?? fufail[Unit](s"Max study members reached: $maxMembers")
inviter <- userRepo.named(byUserId) orFail "No such inviter"
inviter <- userRepo named byUserId orFail "No such inviter"
_ <- (!study.isOwner(inviter.id) && !Granter(_.StudyAdmin)(inviter)) ?? fufail[Unit](
"Only the study owner can invite"
)
invited <-
userRepo
.named(invitedUsername)