Update session cookie expiry.

Update session cookie expiry to 4 weeks regardless of remember me
checkbox is checked or not.

LEARNER-6219
This commit is contained in:
Waheed Ahmed
2018-11-14 14:45:30 +05:00
parent 12c502b35f
commit bf5ad9b871
3 changed files with 15 additions and 24 deletions

View File

@@ -120,7 +120,7 @@ class HelperMixin(object):
"""Asserts failure on /login for missing social auth looks right."""
self.assertEqual(403, response.status_code)
self.assertIn(
"successfully logged into your %s account, but this account isn't linked" % self.provider.name,
"successfully logged into your %s account, but this account isn't linked" % self.provider.name,
response.content
)

View File

@@ -658,13 +658,7 @@ class LoginSessionViewTest(UserAPITestCase):
response = self.client.get(reverse("dashboard"))
self.assertHttpOK(response)
@ddt.data(
(json.dumps(True), False),
(json.dumps(False), True),
(None, True),
)
@ddt.unpack
def test_login_remember_me(self, remember_value, expire_at_browser_close):
def test_session_cookie_expiry(self):
# Create a test user
UserFactory.create(username=self.USERNAME, email=self.EMAIL, password=self.PASSWORD)
@@ -674,17 +668,13 @@ class LoginSessionViewTest(UserAPITestCase):
"password": self.PASSWORD,
}
if remember_value is not None:
data["remember"] = remember_value
response = self.client.post(self.url, data)
self.assertHttpOK(response)
# Verify that the session expiration was set correctly
self.assertEqual(
self.client.session.get_expire_at_browser_close(),
expire_at_browser_close
)
cookie = self.client.cookies[settings.SESSION_COOKIE_NAME]
expected_expiry = datetime.datetime.now() + datetime.timedelta(weeks=4)
self.assertIn(expected_expiry.strftime('%d-%b-%Y'), cookie.get('expires'))
def test_invalid_credentials(self):
# Create a test user

View File

@@ -27,6 +27,7 @@ from openedx.core.djangoapps.external_auth.models import ExternalAuthMap
from openedx.core.djangoapps.password_policy import compliance as password_policy_compliance
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
from openedx.core.djangoapps.util.user_messages import PageLevelMessages
from openedx.core.djangolib.markup import HTML, Text
from student.models import (
LoginFailures,
PasswordHistory,
@@ -77,11 +78,14 @@ def _do_third_party_auth(request):
provider_name=requested_provider.name,
)
message += "<br/><br/>"
message += _(
message += Text(_(
"If you don't have an {platform_name} account yet, "
"click <strong>Register</strong> at the top of the page."
).format(
platform_name=platform_name
"click {register_label_strong} at the top of the page."
)).format(
platform_name=platform_name,
register_label_strong=HTML('<strong>{register_text}</strong>').format(
register_text=_('Register')
)
)
raise AuthFailedError(message)
@@ -257,11 +261,8 @@ def _handle_successful_authentication_and_login(user, request):
try:
django_login(request, user)
if request.POST.get('remember') == 'true':
request.session.set_expiry(604800)
log.debug("Setting user session to never expire")
else:
request.session.set_expiry(0)
request.session.set_expiry(604800 * 4)
log.debug("Setting user session expiry to 4 weeks")
except Exception as exc:
AUDIT_LOG.critical("Login failed - Could not create session. Is memcached running?")
log.critical("Login failed - Could not create session. Is memcached running?")