Merge pull request #4006 from ProgramFOX/rankbanned
Replace "Kick from ranking" with "Ban from ranking"
This commit is contained in:
commit
d83ca869cf
|
@ -91,16 +91,18 @@ object Mod extends LilaController {
|
|||
modApi.reopenAccount(me.id, username) inject redirect(username)
|
||||
}
|
||||
|
||||
def kickFromRankings(username: String) = Secure(_.RemoveRanking) { implicit ctx => me =>
|
||||
modApi.kickFromRankings(me.id, username) inject redirect(username)
|
||||
}
|
||||
|
||||
def reportban(username: String, v: Boolean) = Secure(_.ReportBan) { implicit ctx => me =>
|
||||
withSuspect(username) { sus =>
|
||||
modApi.setReportban(AsMod(me), sus, v) inject redirect(username)
|
||||
}
|
||||
}
|
||||
|
||||
def rankban(username: String, v: Boolean) = Secure(_.RemoveRanking) { implicit ctx => me =>
|
||||
withSuspect(username) { sus =>
|
||||
modApi.setRankban(AsMod(me), sus, v) inject redirect(username)
|
||||
}
|
||||
}
|
||||
|
||||
def impersonate(username: String) = Auth { implicit ctx => me =>
|
||||
if (username == "-" && lila.mod.Impersonate.isImpersonated(me)) fuccess {
|
||||
lila.mod.Impersonate.stop(me)
|
||||
|
|
|
@ -59,8 +59,8 @@
|
|||
}
|
||||
<div class="second_mod_button_row">
|
||||
@if(isGranted(_.RemoveRanking)) {
|
||||
<form method="post" action="@routes.Mod.kickFromRankings(u.username)" data-hint="Excludes this user from the rankings during the next calculation." class="hint--bottom-left">
|
||||
<input class="button" type="submit" value="Kick from ranking" />
|
||||
<form method="post" action="@routes.Mod.rankban(u.username, !u.rankban)" data-hint="@if(u.rankban){In}else{Ex}cludes this user @if(u.rankban){from}else{in} the rankings." class="hint--bottom-left">
|
||||
<input class="button@when(u.rankban, " active")" type="submit" value="Ban from ranking" />
|
||||
</form>
|
||||
}
|
||||
@if(isGranted(_.ReportBan)) {
|
||||
|
|
|
@ -382,7 +382,7 @@ POST /mod/:username/title controllers.Mod.setTitle(username: String
|
|||
POST /mod/:username/inquiry controllers.Mod.spontaneousInquiry(username: String)
|
||||
GET /mod/:username/communication controllers.Mod.communicationPublic(username: String)
|
||||
GET /mod/:username/communication/private controllers.Mod.communicationPrivate(username: String)
|
||||
POST /mod/:username/kickFromRankings controllers.Mod.kickFromRankings(username: String)
|
||||
POST /mod/:username/rankban/:v controllers.Mod.rankban(username: String, v: Boolean)
|
||||
POST /mod/:username/reportban/:v controllers.Mod.reportban(username: String, v: Boolean)
|
||||
POST /mod/:username/impersonate controllers.Mod.impersonate(username: String)
|
||||
GET /mod/log controllers.Mod.log
|
||||
|
|
|
@ -132,15 +132,17 @@ final class ModApi(
|
|||
logApi.setPermissions(mod, user.id, permissions)
|
||||
}
|
||||
|
||||
def kickFromRankings(mod: String, username: String): Funit = withUser(username) { user =>
|
||||
lilaBus.publish(lila.hub.actorApi.mod.KickFromRankings(user.id), 'kickFromRankings)
|
||||
logApi.kickFromRankings(mod, user.id)
|
||||
}
|
||||
|
||||
def setReportban(mod: Mod, sus: Suspect, v: Boolean): Funit = (sus.user.reportban != v) ?? {
|
||||
UserRepo.setReportban(sus.user.id, v) >>- logApi.reportban(mod, sus, v)
|
||||
}
|
||||
|
||||
def setRankban(mod: Mod, sus: Suspect, v: Boolean): Funit = (sus.user.rankban != v) ?? {
|
||||
if (v) {
|
||||
lilaBus.publish(lila.hub.actorApi.mod.KickFromRankings(sus.user.id), 'kickFromRankings)
|
||||
}
|
||||
UserRepo.setRankban(sus.user.id, v) >>- logApi.rankban(mod, sus, v)
|
||||
}
|
||||
|
||||
private def withUser[A](username: String)(op: User => Fu[A]): Fu[A] =
|
||||
UserRepo named username flatten "[mod] missing user " + username flatMap op
|
||||
}
|
||||
|
|
|
@ -46,6 +46,8 @@ case class Modlog(
|
|||
case Modlog.kickFromRankings => "kick from rankings"
|
||||
case Modlog.reportban => "reportban"
|
||||
case Modlog.unreportban => "un-reportban"
|
||||
case Modlog.rankban => "rankban"
|
||||
case Modlog.unrankban => "un-rankban"
|
||||
case Modlog.modMessage => "send message"
|
||||
case Modlog.coachReview => "disapprove coach review"
|
||||
case Modlog.cheatDetected => "game lost by cheat detection"
|
||||
|
@ -100,6 +102,8 @@ object Modlog {
|
|||
val kickFromRankings = "kickFromRankings"
|
||||
val reportban = "reportban"
|
||||
val unreportban = "unreportban"
|
||||
val rankban = "rankban"
|
||||
val unrankban = "unrankban"
|
||||
val modMessage = "modMessage"
|
||||
val coachReview = "coachReview"
|
||||
val cheatDetected = "cheatDetected"
|
||||
|
|
|
@ -109,10 +109,6 @@ final class ModlogApi(coll: Coll) {
|
|||
Modlog(mod, user.some, Modlog.permissions, details = permissions.mkString(", ").some)
|
||||
}
|
||||
|
||||
def kickFromRankings(mod: String, user: String) = add {
|
||||
Modlog(mod, user.some, Modlog.kickFromRankings)
|
||||
}
|
||||
|
||||
def reportban(mod: Mod, sus: Suspect, v: Boolean) = add {
|
||||
Modlog.make(mod, sus, if (v) Modlog.reportban else Modlog.unreportban)
|
||||
}
|
||||
|
@ -137,6 +133,10 @@ final class ModlogApi(coll: Coll) {
|
|||
Modlog.make(mod, sus, Modlog.garbageCollect)
|
||||
}
|
||||
|
||||
def rankban(mod: Mod, sus: Suspect, v: Boolean) = add {
|
||||
Modlog.make(mod, sus, if (v) Modlog.rankban else Modlog.unrankban)
|
||||
}
|
||||
|
||||
def recent = coll.find($empty).sort($sort naturalDesc).cursor[Modlog]().gather[List](100)
|
||||
|
||||
def wasUnengined(sus: Suspect) = coll.exists($doc(
|
||||
|
|
|
@ -69,8 +69,8 @@ final class PerfsUpdater(
|
|||
UserRepo.setPerfs(black, perfsB, black.perfs) zip
|
||||
historyApi.add(white, game, perfsW) zip
|
||||
historyApi.add(black, game, perfsB) zip
|
||||
rankingApi.save(white.id, game.perfType, perfsW) zip
|
||||
rankingApi.save(black.id, game.perfType, perfsB) inject ratingDiffs.some
|
||||
(if (!white.rankban) rankingApi.save(white.id, game.perfType, perfsW) else funit) zip
|
||||
(if (!black.rankban) rankingApi.save(black.id, game.perfType, perfsB) else funit) inject ratingDiffs.some
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,8 @@ case class User(
|
|||
kid: Boolean,
|
||||
lang: Option[String],
|
||||
plan: Plan,
|
||||
reportban: Boolean = false
|
||||
reportban: Boolean = false,
|
||||
rankban: Boolean = false
|
||||
) extends Ordered[User] {
|
||||
|
||||
override def equals(other: Any) = other match {
|
||||
|
@ -197,6 +198,7 @@ object User {
|
|||
val colorIt = "colorIt"
|
||||
val plan = "plan"
|
||||
val reportban = "reportban"
|
||||
val rankban = "rankban"
|
||||
val salt = "salt"
|
||||
val bpass = "bpass"
|
||||
val sha512 = "sha512"
|
||||
|
@ -234,7 +236,8 @@ object User {
|
|||
lang = r strO lang,
|
||||
title = r strO title,
|
||||
plan = r.getO[Plan](plan) | Plan.empty,
|
||||
reportban = r boolD reportban
|
||||
reportban = r boolD reportban,
|
||||
rankban = r boolD rankban
|
||||
)
|
||||
|
||||
def writes(w: BSON.Writer, o: User) = BSONDocument(
|
||||
|
@ -257,7 +260,8 @@ object User {
|
|||
lang -> o.lang,
|
||||
title -> o.title,
|
||||
plan -> o.plan.nonEmpty,
|
||||
reportban -> w.boolO(o.reportban)
|
||||
reportban -> w.boolO(o.reportban),
|
||||
rankban -> w.boolO(o.rankban)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -280,6 +280,8 @@ object UserRepo {
|
|||
|
||||
def setReportban(id: ID, v: Boolean): Funit = coll.updateField($id(id), "reportban", v).void
|
||||
|
||||
def setRankban(id: ID, v: Boolean): Funit = coll.updateField($id(id), "rankban", v).void
|
||||
|
||||
def setIpBan(id: ID, v: Boolean) = coll.updateField($id(id), "ipBan", v).void
|
||||
|
||||
def toggleKid(user: User) = coll.updateField($id(user.id), "kid", !user.kid)
|
||||
|
|
Loading…
Reference in a new issue