don't serve cached pages when anon cookie has prefs - closes #6722

This commit is contained in:
Thibault Duplessis 2020-05-30 07:27:06 -06:00
parent d9f9480597
commit 254c7eba83

View file

@ -16,12 +16,17 @@ final class PageCache(security: lila.security.SecurityApi, cacheApi: lila.memo.C
}
def apply(compute: () => Fu[Result])(implicit ctx: Context): Fu[Result] =
if (ctx.isAnon && langs(ctx.lang.language)) {
val cacheKey = s"${HTTPRequest actionName ctx.req}(${ctx.lang.language})"
cache.getFuture(cacheKey, _ => compute())
} else
if (ctx.isAnon && langs(ctx.lang.language) && defaultPrefs(ctx.req))
cache.getFuture(cacheKey(ctx), _ => compute())
else
compute()
private def cacheKey(ctx: Context) =
s"${HTTPRequest actionName ctx.req}(${ctx.lang.language})"
private def defaultPrefs(req: RequestHeader) =
lila.pref.RequestPref.fromRequest(req) == lila.pref.Pref.default
private val langs =
Set("en", "ru", "tr", "de", "es", "fr", "pt", "it", "pl", "ar", "fa", "id", "nl", "nb", "sv")
}