lifetime patron for mods
parent
5b323b4d19
commit
9fe3a3b46e
|
@ -257,6 +257,8 @@ object Mod extends LilaController {
|
|||
modApi.setPermissions(me.id, user.username, Permission(permissions)) >> {
|
||||
(Permission(permissions) diff Permission(user.roles) contains Permission.Coach) ??
|
||||
Env.security.automaticEmail.onBecomeCoach(user)
|
||||
} >> {
|
||||
Permission(permissions).exists(_ is Permission.SeeReport) ?? Env.plan.api.setLifetime(user)
|
||||
} inject redirect(user.username, true)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -221,6 +221,25 @@ final class PlanApi(
|
|||
}
|
||||
}
|
||||
|
||||
def isLifetime(user: User): Fu[Boolean] = userPatron(user) map {
|
||||
_.exists(_.isLifetime)
|
||||
}
|
||||
|
||||
def setLifetime(user: User): Funit = isLifetime(user) flatMap {
|
||||
case true => funit
|
||||
case _ => UserRepo.setPlan(user, lila.user.Plan(
|
||||
months = user.plan.months | 1,
|
||||
active = true,
|
||||
since = user.plan.since orElse DateTime.now.some
|
||||
)) >> patronColl.update(
|
||||
$id(user.id),
|
||||
$set(
|
||||
"lastLevelUp" -> DateTime.now,
|
||||
"lifetime" -> true
|
||||
)
|
||||
).void >>- lightUserApi.invalidate(user.id)
|
||||
}
|
||||
|
||||
private val recentChargeUserIdsNb = 50
|
||||
private val recentChargeUserIdsCache = asyncCache.single[List[User.ID]](
|
||||
name = "plan.recentChargeUserIds",
|
||||
|
|
Loading…
Reference in New Issue