can't reopen erased account

This commit is contained in:
Thibault Duplessis 2018-05-04 02:38:52 +02:00
parent 39d42e320c
commit 9991ce2477
4 changed files with 18 additions and 6 deletions

View file

@ -251,6 +251,7 @@ object User extends LilaController {
protected[controllers] def renderModZone(username: String, me: UserModel)(implicit ctx: Context): Fu[Result] =
OptionFuOk(UserRepo named username) { user =>
UserRepo.emails(user.id) zip
UserRepo.isErased(user) zip
(Env.security userSpy user) zip
Env.mod.assessApi.getPlayerAggregateAssessmentWithGames(user.id) zip
Env.mod.logApi.userHistory(user.id) zip
@ -258,7 +259,7 @@ object User extends LilaController {
Env.report.api.byAndAbout(user, 20) zip
Env.pref.api.getPref(user) zip
Env.irwin.api.reports.withPovs(user) flatMap {
case emails ~ spy ~ assess ~ history ~ charges ~ reports ~ pref ~ irwin =>
case emails ~ erased ~ spy ~ assess ~ history ~ charges ~ reports ~ pref ~ irwin =>
val familyUserIds = user.id :: spy.otherUserIds.toList
Env.playban.api.bans(familyUserIds) zip
Env.user.noteApi.forMod(familyUserIds) zip
@ -266,7 +267,7 @@ object User extends LilaController {
reports.userIds ::: assess.??(_.games).flatMap(_.userIds)
} map {
case bans ~ notes ~ _ =>
html.user.mod(user, emails, spy, assess, bans, history, charges, reports, pref, irwin, notes)
html.user.mod(user, emails, spy, assess, bans, history, charges, reports, pref, irwin, notes, erased)
}
}
}

View file

@ -1,4 +1,4 @@
@(u: User, emails: User.Emails, spy: lila.security.UserSpy, optionAggregateAssessment: Option[lila.evaluation.PlayerAggregateAssessment.WithGames], bans: Map[String, Int], history: List[lila.mod.Modlog], charges: List[lila.plan.Charge], reports: lila.report.Report.ByAndAbout, pref: lila.pref.Pref, irwinReport: Option[lila.irwin.IrwinReport.WithPovs], notes: List[lila.user.Note])(implicit ctx: Context)
@(u: User, emails: User.Emails, spy: lila.security.UserSpy, optionAggregateAssessment: Option[lila.evaluation.PlayerAggregateAssessment.WithGames], bans: Map[String, Int], history: List[lila.mod.Modlog], charges: List[lila.plan.Charge], reports: lila.report.Report.ByAndAbout, pref: lila.pref.Pref, irwinReport: Option[lila.irwin.IrwinReport.WithPovs], notes: List[lila.user.Note], erased: User.Erased)(implicit ctx: Context)
@import lila.evaluation.Display
@import lila.pref.Pref
@ -44,19 +44,23 @@
<input class="button@when(u.ipBan, " active")" type="submit" value="IP ban @spy.ips.size" />
</form>
}
@if(!u.disabled) {
@if(u.enabled) {
@if(isGranted(_.CloseAccount)) {
<form method="post" action="@routes.Mod.closeAccount(u.username)" data-hint="Disables this account." class="hint--bottom-left xhr">
<input class="button" type="submit" value="Close" />
</form>
}
} else {
@if(erased.value) {
Erased
} else {
@if(isGranted(_.ReopenAccount)) {
<form method="post" action="@routes.Mod.reopenAccount(u.username)" data-hint="Re-activates this account." class="hint--bottom-left xhr">
<input type="submit" class="button active" value="Closed" />
</form>
}
}
}
<div class="second_mod_button_row">
@if(isGranted(_.RemoveRanking)) {
<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 xhr">

View file

@ -133,7 +133,8 @@ object User {
val idPattern = """^[\w-]{3,20}$""".r.pattern
case class GDPRErase(user: User)
case class GDPRErase(user: User) extends AnyVal
case class Erased(value: Boolean) extends AnyVal
case class LightPerf(user: LightUser, perfKey: String, rating: Int, progress: Int)
case class LightCount(user: LightUser, count: Int)

View file

@ -411,7 +411,13 @@ object UserRepo {
def setEmailConfirmed(id: User.ID): Funit = coll.update($id(id), $unset(F.mustConfirmEmail)).void
def erase(user: User): Funit = coll.update($id(user.id), $unset(F.profile)).void
def erase(user: User): Funit = coll.update(
$id(user.id),
$unset(F.profile) ++ $set("erasedAt" -> DateTime.now)
).void
def isErased(user: User): Fu[User.Erased] =
coll.exists($id(user.id) ++ $doc("erasedAt" $exists true)) map User.Erased.apply
private def newUser(
username: String,