Commit f006d03c by Chris Dodge Committed by Jonathan Piacenti

update the last_login timestamp when logging in

parent 055d378a
...@@ -8,6 +8,7 @@ Run these tests @ Devstack: ...@@ -8,6 +8,7 @@ Run these tests @ Devstack:
from random import randint from random import randint
import uuid import uuid
import mock import mock
from datetime import datetime
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.cache import cache from django.core.cache import cache
...@@ -77,8 +78,15 @@ class SessionsApiTests(TestCase): ...@@ -77,8 +78,15 @@ class SessionsApiTests(TestCase):
data = {'email': self.test_email, 'username': local_username, 'password': self.test_password} data = {'email': self.test_email, 'username': local_username, 'password': self.test_password}
response = self.do_post(self.base_users_uri, data) response = self.do_post(self.base_users_uri, data)
user_id = response.data['id'] user_id = response.data['id']
# get a copy of the User object, so we can compare timestamps
user1 = User.objects.get(id=user_id)
self.assertTrue(isinstance(user1.last_login, datetime))
self.assertIsNotNone(user1.last_login)
data = {'username': local_username, 'password': self.test_password} data = {'username': local_username, 'password': self.test_password}
response = self.do_post(self.base_sessions_uri, data) response = self.do_post(self.base_sessions_uri, data)
user2 = User.objects.get(id=user_id)
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, 201)
self.assertGreater(len(response.data['token']), 0) self.assertGreater(len(response.data['token']), 0)
confirm_uri = self.test_server_prefix + self.base_sessions_uri + '/' + response.data['token'] confirm_uri = self.test_server_prefix + self.base_sessions_uri + '/' + response.data['token']
...@@ -88,6 +96,10 @@ class SessionsApiTests(TestCase): ...@@ -88,6 +96,10 @@ class SessionsApiTests(TestCase):
self.assertEqual(str(response.data['user']['username']), local_username) self.assertEqual(str(response.data['user']['username']), local_username)
self.assertEqual(response.data['user']['id'], user_id) self.assertEqual(response.data['user']['id'], user_id)
# make sure the last_login timestamp was updated at the login operation
self.assertTrue(isinstance(user2.last_login, datetime))
self.assertNotEqual(user1.last_login, user2.last_login)
def test_session_list_post_invalid(self): def test_session_list_post_invalid(self):
local_username = self.test_username + str(randint(11, 99)) local_username = self.test_username + str(randint(11, 99))
local_username = local_username[3:-1] # username is a 32-character field local_username = local_username[3:-1] # username is a 32-character field
......
...@@ -13,6 +13,7 @@ from django.utils.translation import ugettext as _ ...@@ -13,6 +13,7 @@ from django.utils.translation import ugettext as _
from api_manager.permissions import SecureAPIView from api_manager.permissions import SecureAPIView
from rest_framework import status from rest_framework import status
from rest_framework.response import Response from rest_framework.response import Response
from django.utils import timezone
from util.bad_request_rate_limiter import BadRequestRateLimiter from util.bad_request_rate_limiter import BadRequestRateLimiter
...@@ -119,6 +120,10 @@ class SessionsList(SecureAPIView): ...@@ -119,6 +120,10 @@ class SessionsList(SecureAPIView):
response_data['uri'] = '{}/{}'.format(base_uri, new_session.session_key) response_data['uri'] = '{}/{}'.format(base_uri, new_session.session_key)
response_status = status.HTTP_201_CREATED response_status = status.HTTP_201_CREATED
# update the last_login fields in the auth_user table for this user
user.last_login = timezone.now()
user.save()
# add to audit log # add to audit log
AUDIT_LOG.info(u"API::User logged in successfully with user-id - {0}".format(user.id)) AUDIT_LOG.info(u"API::User logged in successfully with user-id - {0}".format(user.id))
else: else:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment