Allow updating birthdate, with admin report

This commit is contained in:
Noah Petherbridge 2023-09-11 19:24:09 -07:00
parent 7d3e04b869
commit 3543dd3e42
2 changed files with 26 additions and 7 deletions

View File

@ -77,12 +77,31 @@ func Settings() http.HandlerFunc {
return return
} }
// The user isn't allowed to change it on their own, even if they edit the form to remove the readonly value. // If the user changes their birthdate, notify the admin.
if !user.Birthdate.IsZero() && user.Birthdate.Format("2006-01-02") != dob { if !user.Birthdate.IsZero() && user.Birthdate.Format("2006-01-02") != dob {
session.FlashError(w, r, "Please contact support if you want to change your birthdate.") // Create an admin Feedback model.
} else { fb := &models.Feedback{
user.Birthdate = birthdate Intent: "report",
Subject: "report.dob",
UserID: user.ID,
TableName: "users",
TableID: user.ID,
Message: fmt.Sprintf(
"A user has modified their birthdate on their profile page!\n\n"+
"* Original: %s (age %d)\n* Updated: %s (age %d)",
user.Birthdate, utility.Age(user.Birthdate),
birthdate, utility.Age(birthdate),
),
}
// Save the feedback.
if err := models.CreateFeedback(fb); err != nil {
log.Error("Couldn't save feedback from user updating their DOB: %s", err)
}
} }
// Work around DST issues: set the hour to noon.
user.Birthdate = birthdate.Add(12 * time.Hour)
} }
// Set profile attributes. // Set profile attributes.

View File

@ -73,12 +73,12 @@
id="dob" id="dob"
name="dob" name="dob"
value="{{if not $User.Birthdate.IsZero}}{{$User.Birthdate.Format "2006-01-02"}}{{end}}" value="{{if not $User.Birthdate.IsZero}}{{$User.Birthdate.Format "2006-01-02"}}{{end}}"
required required>
{{if not $User.Birthdate.IsZero}}readonly{{end}}>
<p class="help"> <p class="help">
Used to show your age on your profile. Used to show your age on your profile.
{{if not $User.Birthdate.IsZero}} {{if not $User.Birthdate.IsZero}}
If you entered a wrong birthdate, <a href="/contact">contact</a> support to change it. If you entered a wrong birthdate, you can change it here. Note that all birthdate
changes will notify the admin, so don't mess around or behave dishonestly.
{{end}} {{end}}
</p> </p>