32 lines
874 B
Go
32 lines
874 B
Go
|
package middleware
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"net/url"
|
||
|
"time"
|
||
|
|
||
|
"code.nonshy.com/nonshy/website/pkg/config"
|
||
|
"code.nonshy.com/nonshy/website/pkg/models"
|
||
|
"code.nonshy.com/nonshy/website/pkg/templates"
|
||
|
)
|
||
|
|
||
|
// PublicAvatarConsent: part of CertificationRequired that enforces the consent page for affected users.
|
||
|
func PublicAvatarConsent(user *models.User, w http.ResponseWriter, r *http.Request) (handled bool) {
|
||
|
// Is the enforcement date live?
|
||
|
if time.Now().Before(config.PublicAvatarEnforcementDate) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// If the current user has a non-public avatar and has not consented.
|
||
|
if user.ProfilePhoto.ID > 0 && user.ProfilePhoto.Visibility != models.PhotoPublic {
|
||
|
if user.GetProfileField("public_avatar_consent") == "true" {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
templates.Redirect(w, "/settings/public-avatar-consent?next="+url.QueryEscape(r.URL.String()))
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
return
|
||
|
}
|