lifetime patron for mods

pull/4245/head
Thibault Duplessis 2018-04-12 01:34:14 +02:00
parent 5b323b4d19
commit 9fe3a3b46e
2 changed files with 21 additions and 0 deletions

View File

@ -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)
)
}

View File

@ -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",