diff --git a/aurweb/routers/html.py b/aurweb/routers/html.py
index 33aeb904..38303837 100644
--- a/aurweb/routers/html.py
+++ b/aurweb/routers/html.py
@@ -56,19 +56,28 @@ async def language(
query_string = "?" + q if q else str()
- # If the user is authenticated, update the user's LangPreference.
- if request.user.is_authenticated():
- with db.begin():
- request.user.LangPreference = set_lang
-
- # In any case, set the response's AURLANG cookie that never expires.
response = RedirectResponse(
url=f"{next}{query_string}", status_code=HTTPStatus.SEE_OTHER
)
- secure = aurweb.config.getboolean("options", "disable_http_login")
- response.set_cookie(
- "AURLANG", set_lang, secure=secure, httponly=secure, samesite=cookies.samesite()
- )
+
+ # If the user is authenticated, update the user's LangPreference.
+ # Otherwise set an AURLANG cookie
+ if request.user.is_authenticated():
+ with db.begin():
+ request.user.LangPreference = set_lang
+ else:
+ secure = aurweb.config.getboolean("options", "disable_http_login")
+ perma_timeout = aurweb.config.getint("options", "permanent_cookie_timeout")
+
+ response.set_cookie(
+ "AURLANG",
+ set_lang,
+ secure=secure,
+ httponly=secure,
+ max_age=perma_timeout,
+ samesite=cookies.samesite(),
+ )
+
return response
diff --git a/conf/config.defaults b/conf/config.defaults
index bb390d8a..17e81b7b 100644
--- a/conf/config.defaults
+++ b/conf/config.defaults
@@ -14,8 +14,12 @@ passwd_min_len = 8
default_lang = en
default_timezone = UTC
sql_debug = 0
+; 2 hours - default login_timeout
login_timeout = 7200
+; 30 days - default persistent_cookie_timeout
persistent_cookie_timeout = 2592000
+; 400 days - default permanent_cookie_timeout
+permanent_cookie_timeout = 34560000
max_filesize_uncompressed = 8388608
disable_http_login = 1
aur_location = https://aur.archlinux.org